17 - 01 - 28 计算机网络(18)(停止-等待协议)
来源:互联网 发布:php curl 超时处理 编辑:程序博客网 时间:2024/06/05 00:22
停止-等待协议:发送方发送一个报文段后立即停止,
接收方正确收到后发送一ACK(Acknowledgement,即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误)
每发送一个报文段就要停下等待确认。
现在考虑各种突发情况:当接收方发现报文段出错后,它要返回一个否定确认(NAK),
发送方收到NAK->重传。;当发送超时时,接收方收不到自然也就不会发送NAK,
此时有:发送方每发送完一个报文段,就开始计时,超时后仍没有收到ACK就重传;
当发送的成功到达,但是ACK在途中丢失:发送方察觉超时:又重传。。。(以上:简单表述)
下面再讨论细节问题:
1)接收方为了发现报文段出错,必须采用某种检错技术
2)因为发送方启用了计时技术,所以NAK也就没必要了。
3)确定合理的超时时间:至少要大于RTT,但是还要综合网速情况。
4)不能让接收方收到重复的报文,所以要定序:发送方给报文段添加序号。
停止-等待协议的效率太低。改进措施是在收到ACK之前不等待,连续发送,所以让ACK带上 相应的 与发送报文序号 对应的序号,
以此来区分哪个ACK时哪个报文段的。ACK的这个序号就叫确认号。
在TCP中,确认号是指这个确认号之前的数据都已经成功收到。
比如:接收方发送了确认号500表示500之前(1~499号)都已经成功收到啦~希望收到500号及其以后的报文段~
但是“500”这个数,不能太大,也不能太小,已发送且未确认的数据量达到一个限制值的时候,
要等待ACK的到来,不到不能再发送了。这个限制值叫做窗口。
比如说窗口是 :100字节,发出100字节后等待->收到ACK表示接受了70字节,
此时已发送未确认的数据量就是30 , 30<100,发送方还可以接着继续发送70字节的数据,这样又达到了窗口值100字节。如此反复。
直到所有数据都发送完毕。
------------------------------------------------------——-——————————————————————整理自《计算机网络》
- 17 - 01 - 28 计算机网络(18)(停止-等待协议)
- 《计算机网络》知识总结-6.TCP的停止等待协议
- 模拟停止等待协议
- 停止等待协议+源代码
- (运输层)TCP可靠传输原理之停止等待协议(ARQ)/连续ARQ协议
- 停止等待协议传输数据文件
- 停止等待协议的算法
- TCP协议的学习(六)滑动窗口 停止等待 退后N帧 选择重传
- 停止等待协议和连续ARQ协议
- 停止等待协议和连续ARQ协议
- 17 - 01 - 17 计算机网络(07)(IP协议)
- 17 - 02 - 07 计算机网络(28)(http协议简述)
- 17 - 01 - 12 计算机网络(02)(协议概述)
- 17 - 01 - 21 计算机网络(11)(地址解析协议)
- 17 - 01 - 23 计算机网络(13)(选路协议)
- 17 - 01 - 29 计算机网络(19)(TCP协议概述)
- 计算机网络(浅谈FTP协议)
- 计算机网络(浅谈SMTP协议)
- Python3打包exe遇到的一些坑
- OC 在NSJSONSerialization 过滤JSON解析不了的掉特殊字符
- Java数据结构与算法:栈
- 序列化深入理解
- Golang 跨平台编译
- 17 - 01 - 28 计算机网络(18)(停止-等待协议)
- Netty学习10-粘包和拆包
- Windows应用程序的消息处理机制
- 如何实现 LRU Cache
- [李景山php]每天TP5-20170130|thinkphp5-Request.php-2
- bzoj 1269: [AHOI2006]文本编辑器editor (splay) [省选计划系列]
- Java类型推断将不再支持可变性规范
- 未能加载文件或程序集“file:///C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.
- “风投云涌”:那些被资本看中的IT企业的风光与辛酸