基本行为

接收端的基本行为有:接收数据包、回复ACK,适当时将数据送往应用层缓冲区。

(1)一般情况下收到2个包回1个ACK,除非第二个数据包在200ms内没有收到(这种情况下所回复的ACK被成为Delayed-ACK, 200ms定时器则称为Delayed-ACK Timer)。
(2)如果出现丢包情况,对于后续收到的每一个数据包则重新回复ACK.
(3)重传的数据包收到之后,会和之前收到的所有数据包一起回复ACK.
(4)还有就是,满足以下任何一个条件时数据都会被送往应用层缓冲区:

  • 应用程序通过recv()方法准备接收数据
  • TCP头部中的PSH标识被置为1
  • TCP接收Buffer溢出了
  • 数据在TCP接收Buffer中存放的时间超过了500ms

TCP接收端处理流程图

ppud