首页 > 代码库 > tcp 回顾总结
tcp 回顾总结
最近又要开始写server,趁着周末有时间,重新翻了下tcp/ip第一卷,总结一下回顾翻到的一些东西。
arp
ip到链路地址的查询
icmp
ping是利用icmp的回显请求和应答来实现
traceroute是利用icmp的ttl的超时和端口不可用来,ttl超时回包表还在中间路由器,端口不可用表已经到达主机
ttl从1开始增长
tcp为了保证可靠和最大利用网络,做了很多优化,比如4个定时器,慢启动,nagle算法等等。
4个定时器
超时重传定时器:用于超时重传
多久算超时,通过rtt和rto
rtt计算是发包开始计时,如果一个计时过程未结束,其他发包就不计时了。
2msl定时器
用于time wait状态,time wait状态是为了保证最后一个发包被对方收到。
持续定时器
接收数据一方通知可用窗口为0后再通知不为0,如果窗口可用通知包被丢失,就会进入相互等待情况。
所以这个定时器用于定时查询对方是否有窗口可用
保活定时器在应用进程选取了插口的SO_KEEPALIVE选项时生效。如果连接的连续空闲时间超过2小时,保活定时器超时,向对端发送连接探测报文段,强迫对端响应。如果收到了期待的响应,TCP可确定对端主机正常工作,在该连接再次空闲超过2小时之前,TCP不会再进行保活测试。如果收到的是其他响应,TCP可确定对端主机已重启。如果连接若干次保活测试都未收到响应,TCP就假定对端主机已崩溃,尽管它无法区分是主机故障(例如系统崩溃而尚未重启),还是连接故障(例如,中间的路由器发送故障或电话线断了)。
tcp的backlog
1:backlog里边到连接是完成了3次握手到,就等着通知应用层到连接
2:backlog满了后,server就会忽略之后的sync请求,但也不做任何处理,没有reset回包,客户端会看到sync超时然后重试,如果server的backlog有空间了,就可以处理sync请求了
本文出自 “尝试者” 博客,请务必保留此出处http://changshizhe.blog.51cto.com/6250833/1558999
tcp 回顾总结