实现: TCP靠以字节为单位的滑动窗口来实现可靠传输,
即发送方在构造字节的发送窗口时,仅考虑接收方的接收窗口rwnd,(假设不考虑拥塞窗口)
注意:
1.链路层的滑动窗口大小一般是固定的,在传输中不会改变,而TCP可靠传输使用的滑动窗口会根据接收方发送的接受窗口大小和拥塞窗口大小动态调整
2.接收方只对按序到达的数据中的最高序号给出确认
前提:
1.假定只在一个方向传输
2.不考虑拥塞控制窗口
传输过程:
发送方:
- 主机建立TCP连接时,B告诉A接收窗口rwnd 的大小,发送方会根据rwnd来调整发送窗口的大小。
- 发送方将窗口内的数据都发送出去,凡是没有收到确认的数据都会保留在发送缓存,以便在超时重传时使用; 而在发送缓存中 已收到确认报文的数据会中被删除,并将窗口前移(后沿前移);
- 窗口的后沿:不可向后移动;收到新的报文确认,后沿前移
窗口的前沿:会不断前移;也可能不动,如还未收到新的确认报文或者窗口缩小;但前沿不可后移(会出错)
接收方:
只对按序到达的报文段的最高序号给出确认
- 如果有不按序到达的,暂存在接收缓存中;
若使用快重传算法,则接收方每次收到不按序到达的数据都会发出对之前按序到达的最高序号的重复确认,发送方收到3次重复确认后立即重传 - 接收方收到按序到达的报文段会交付给应用进程,接收窗口前移,同时发送确认报文段…
其他保证可靠传输的机制:
1.超时重传
2.流量控制
3.拥塞控制
4.TCP首部的校验和 字段
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89301.html