TCP状态集

TCP端口状态、建立过程、窗口协议_滑动窗口

端口转化状态

主动端口:SYN_SENT、FIN_WAIT1、FIN_WAIT2、CLOSING、TIME_WAIT

被动端口:LISTEN、SYN_RCVD、CLOSE_WAIT、LAST_ACK

都具有的:CLOSSED、ESTABLISHED

TCP端口状态、建立过程、窗口协议_字节数_02

TCP端口状态、建立过程、窗口协议_字节数_03

TCP建立过程

TCP三次握手

TCP端口状态、建立过程、窗口协议_滑动窗口_04

TCP四次断开

TCP端口状态、建立过程、窗口协议_滑动窗口_05

TCP窗口

窗口分为滑动窗口和拥塞窗口。

ACK包含两个非常重要:

一是期望接收到的下一字节的序号n,该n代表接收方已经接收到了前n-1字节数据,此时如果接收方收到第n+1字节数据而不是第n字节数据,接收方是不会发送序号为n+2的ACK的。举个例子,假如接收端收到1-1024字节,它会发送一个确认号为1025的ACK,但是接下来收到的是 2049-3072,它是不会发送确认号为3072的ACK,而依旧发送1025的ACK。

二是当前的窗口大小m,如此发送方在接收到ACK包含的这两个数据后就可以计算出还可以发送多少字节的数据给对方,假定当前发送方已发送到第x字节,则可以发送的字节数就是y=m-(x-n).这就是滑动窗口控制流量的基本原理.

滑动窗口

TCP端口状态、建立过程、窗口协议_重传_06

滑动窗口是改善吞吐量的一种技术,容许发送方在接收任何应答之前传送附加的包

接收方告知发送端接收端的窗口大小,以控制发送端发送数据的大小,达到流量控制的目的。它只能在源端设备和目的端设备起作用,当网络中间设备(例如​路由器​等)发生拥塞时,滑动窗口机制将不起作用。

搭配的协议还有停等、后退N、选择重传。标签:确认、差错控制、流量控制。

拥塞窗口

拥塞窗口是发送数据端,拥塞窗口不代表缓存,拥塞窗口指某一源端数据流在一个RTT内可以最多发送的数据包

拥塞控制方法

  1. 慢开始( slow-start )
  2. 拥塞避免( congestion avoidance )
  3. 快重传( fast retransmit )
  4. 快恢复( fast recovery )