运输层_TCP可靠传输的实现
1 以字节为单位的滑动窗口
2 超时重传时间的选择
3 选择确认 SACK
1 以字节为单位的滑动窗口
P3 – P1 = A 的发送窗口(又称为通知窗口)
P2 – P1 = 已发送但尚未收到确认的字节数
P3 – P2 = 允许发送但尚未发送的字节数(又称为可用窗口)
发送缓存用来暂时存放:
1) 发送应用程序传送给发送方 TCP 准备发送的数据;
2) TCP 已发送出但尚未收到确认的数据。
接收缓存用来暂时存放:
1) 按序到达的、但尚未被接收应用程序读取的数据;
2) 不按序到达的数据。
注:
1) 发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。
2) TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流
中所缺少的字节收到后,再按序交付上层的应用进程。
3) TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。
2 超时重传时间的选择
TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有
收到确认,就要重传这一报文段。
3 选择确认 SACK
接收方收到了和前面的字节流不连续的两个字节块。 如果这些字节的序号都在接收窗口之内,那么
接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的
数据。
如果要使用选择确认,那么在建立 TCP 连接时,就要在 TCP 首部的选项中加上“允许 SACK”的选
项,而双方必须都事先商定好。






浙公网安备 33010602011771号