首页 > 编程知识 正文

tcp发送窗口由什么决定,telnet是什么协议TCP还是udp协议

时间:2023-05-06 00:22:06 阅读:111093 作者:2071

说明:本文仅为学习交流。 转载请出示出处。 欢迎转载。

本文综述了以下文献相关内容

[1] 《TCP/IP详解 卷1:协议》

[2] 《TCP/IP协议族 第4版》

[3] 《计算机网络 第5版》

TCP协议通过滑动窗口实现流控制,而TCP报头中有32比特的ack字段,该字段指示接收方要接收的下一个字节的序列号,该ack是累积确认。 该缺点是,接收方接收到序列号(2,3…)5)和序列号(8…10 )的字节流,中途的(6,7 )的字节丢失时,接收方只需向发送方返回ACK=6的确认信息,就可以进行发送3…) 5,因此,接收端在接收到(6,7,8, 10 )个分组时(丢弃8-10个分组)之前就已经接收到了,所以将它放入接收缓冲器中),现在10 很明显,可以看出发送方实际上只需要重新发送(6,7 )数据包。 也就是说,发送方只要重发在接收方未真正接收到的重组即可,将该重发机制称为选择重发SR。 那么,TCP如何选择重发呢?

从TCP消息段的开头可以看出,固定的20B没有可以选择重发的相关字段,所以只能将该方法的实现放在选项字段中。 此选项字段是SACK选项,s表示selected,用于标记哪些包真正需要重传。

SACK选项=(8位类型选项,8位长度),类型表示允许SACK和常规SACK。 允许SACK )类型为4表示对方支持SACK选项。 普通的SACK )种类为5,表示同意双工发送后用于数据传输,可以选择重发。

当然,并不是所有的客户端TCP和服务器TCP都支持选择重发。 双发在发送数据之前必须协商,以便能够读取彼此发送的信息。 TCP的实现方法是在建立连接的“三次握手”的前两次握手中添加允许SACK的选项。 这样做的目的是告诉对方它支持SACK选项,这样以后就可以识别出真正需要重发的组。

注意: SACK仅在连接建立阶段可用,在数据传输阶段不可用。

典型的SACK选项包含按顺序到达或重复接收的数据块列表,每个块占用两个32位,每个块分别定义块的开始和结束,因此一个数据块占用8B。 如果接收到的块中有重复块,则重复块仅记录在第一个块中,不按顺序的块可以记录在选项表条目中的任何位置。

常见问题解答1:sack选项最多可以包含多少个要重新发送的块?

TCP报头的最大长度为60B,而固定报头为20B,可选地为最多40B,并且SACK选项本身占用16个比特,从而剩下60-20-2=38B,每个块包括开始和结束8B

常见问题解答2 :发送方如何识别接收方发送的带有SACK选项的ACK消息?

ACK消息的ACK字段可指示接收到并确定了哪些消息。 然后,通过比较ack字段中的值和SACK选项中的值,可以知道需要重发哪些块。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。