@@ -5,7 +5,7 @@ date: 2013-09-12 23:04:00
55categories : internet tcp
66---
77
8- ###名词
8+ ### 名词
99RTO: retransmission timeout
1010RTT: round-trip time
1111SRTT: smoothed round-trip time
@@ -14,7 +14,7 @@ MSL: maximum segment lifetime
1414SMSS: Sender Maximum Segment Size
1515
1616
17- ###Header <br /><br />
17+ ### Header <br /><br />
1818
1919<pre >
2020
@@ -38,7 +38,7 @@ SMSS: Sender Maximum Segment Size
3838
3939</pre >
4040
41- ###状态图
41+ ### 状态图
4242
4343<pre >
4444 +---------+ ---------\ active OPEN
@@ -88,7 +88,7 @@ SMSS: Sender Maximum Segment Size
8888</pre >
8989
9090
91- ###Timer
91+ ### Timer
92921 . retransmission
9393 tcp对发送的数据会启动一个timer,如果指定时间内没有收到发送数据对应的ACK,tcp会重新发送数据。timer根据RTT和重传的次数动态调整超时时间
94942 . delay ACK
@@ -104,25 +104,25 @@ SMSS: Sender Maximum Segment Size
1041047 . connection
105105 tcp接到SYN连接请求回复SYN/ACK后,linux并没有为这些没完成三次握手的请求建立完整的tcp\_ sock,而是以request\_ sock放在处于listen状态的父tcp\_ sock的队列中,而且有一个timer会定期扫描这些request\_ sock,并清除一些长时间没有收到ACK的sock
106106
107- ###TIME_WAIT
107+ ### TIME_WAIT
108108tcp进入TIME_WAIT状态后,需要等待2MSL的时间才能关闭,主要有两个原因:
1091091 . 最后的ACK有可能丢失,这时对方可能会重新发送FIN,当收到新的FIN后,tcp要回复ACK,并重新启动timer
1101102 . 如果不等待直接关闭,这时有可能开启一个使用相同端口的新服务,而如果新tcp收到FIN,会发送RST,这样会给对方造成困扰
111111
112112
113- ###Congestion Control
113+ ### Congestion Control
114114Congestion Control主要用于通信路径的网络流量控制,不同于Flow Control需要考虑接收方的Buffer及处理速度,它控制的是通信路径中整个网络的流量,算法通过cwnd与ssthresh两个变量实现,目前主要有四种算法:
1151151 . Slow Start
116116tcp启动时,为了避免过多的流量对网络造成拥塞,cwnd有一个初始的限定值,通常为一个SMSS,此后每收到一个ACK,cwnd会增加一个SMSS,直到cwnd>=ssthresh。Slow Start不止在启动时使用,当有重传发生时,cwnd会降到初始值,重新启动Slow Start
1171172 . Congestion Avoidance
118118当cwnd>ssthresh时,tcp会启用Congestion Avoidance算法,这时cwnd增加的速率会降低,通常为SMSS* SMSS/cwnd
119- 3 . Fast Retransmit
119+ 3 . Fast Retransmit
120120当收到重复的ACK但是RTO还没有超时,这时tcp进入Fast Retransmit状态,重传丢失的报文,并重新设定cwnd与ssthresh的值
1211214 . Fast Recovery
122122在tcp进入Fast Retransmit状态并重传报文后,tcp进入Fast Recovery状态,直至收到重传报文的ACK为止
123123
124124
125- ###参考文档:
125+ ### 参考文档:
126126rfc793: [ Transmission Control Protocol] ( http://tools.ietf.org/html/rfc793 )
127127rfc1122: [ Requirements for Internet Hosts -- Communication Layers] ( http://tools.ietf.org/html/rfc1122 )
128128rfc5681: [ TCP Congestion Control] ( http://tools.ietf.org/html/rfc5681 )
0 commit comments