跳转至

TCP可靠传输

来源:计算机网络 / 运输层/TCP可靠传输.md

TCP的可靠传输

序号和确认号

image.png

TCP给字节编序号,而不是报文

TCP 首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。

在图5.9中,若接收方 B已收到第一个报文段的数据,此时B 希望收到的下一个报文段的数据是从第3个字节开始的,则B发送给A 的报文段中的确认号字段应为3。发送方缓存区会继续存储那些已发送但未收到确认的报文段,以便在需要时重传。

累计确认

TCP 默认使用累积确认,即==TCP 只确认数据流中至第一个丢失字节为止的字节,包括丢失的字节==,例如,在图5.9中,接收方B收到了A发送的包含字节0~2及字节6~7的报文段。由于某种原因,B还未收到字节3~5的报文段,此时 B仍在等待字节3(和其后面的字节),因此B到A的下一个报文段将确认号字段置为3。

重传

超时重传

维护一个超时计时器,RTO,应当略大于加权平均往返时间RTTS

冗余ACK

image.png 发送三个冗余ACK,就可以快速重传

  • 滑动窗口
  • 快重传
  • 选择确认 SACK

相关笔记