传输层 数据传输鱼MSS分段

      最后更新:2022-07-13 13:01:23 手机定位技术交流文章

      TCP是一个面向节点的协议, 它不限制应用程序层传输消息的长度事实上,TCP下的网络层和数据链层,因为发送消息的内存有限,必须限制消息的长度。

      因此,TCP必须从应用程序层切断到任何字节流长度的多个报告段,分段的依据是什么?

      以下是如何根据 mss最大消息段大小分开TCP消息段。

      TCP应用层编程实例

      如果你正在直接使用TCP插座库进行编程,当客户端设置连接到服务器时,你需要创建一个插座,将调用连接方法,在成功建立连接后,服务器端将接受连接,在看到成立后,连接到下一阶段的状态下,这是传输数据的阶段。

      在传输数据时, callwrite是发送消息, read可以接收任何长度的消息。

      TCP 流的操作

      在操作系统里到底发生了什么事?

      操作系统的内核栈会将发送的消息拆分为许多segement的报文段。

      TCP 流与报文段

      上述申请向另一份申请发送22字节,第一个三个字符通过tcp发送到应用程序中,那么4,5,6,7这些四个字符都在TCP堆栈中,8 9 也通过网络传输,10 11 12 13 可能从 IP 层降下来,处理数据链层,14、15、16、17、18仍在TCP堆栈中,19-22仍处于应用阶段,应用程序可由1到22字节,实际上发送的是流,分成许多部分,这个流动部分的基础是什么?

      流分段大小的依据
      MSS:防止 IP 层分段 (如果tcp不分段的话,ip层一定会分层,一定要避免ip层分层,因为ip层分层是十分没有效率的)
      流量控制:接收器的能力(例如接收器只能同时接收三个字符,所以它只能发送三个字符。这个服务器可能很忙,记忆和使用不足,或者应用程序没有及时读出缓冲区的数据,所以我们现在需要控制流动,这也会影响分段的大小。

      MSS:Max Segment Size 最大段的大小

      定义:只指TCP数据载体,不包括TCP头的大小参见RFC879

      MSS 选择目的
      尽可能为每个分段报告段提供更多的数据,为了减少头部空间的比例(因为头部固定为20个字符,一个20字节的IP头,如果所载的数据数量相对较小,头部占用的空间比头部占用的空间大得多,事实上,传播信息效率较低。
      防止 Segment 被某个设备的 IP 层基于 MTU 拆分
      默认 MSS:536 字节(默认 MTU576 字节,20 字节 IP 头部,20 字节 TCP 头部)
      握手阶段谘询
      MSS 分类
      • 发送方最大报文段 SMSS:SENDER MAXIMUM SEGMENT SIZE
      接收方最大报文段 RMSS:RECEIVER MAXIMUM SEGMENT SIZE

      TCP手柄通用选项

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29563.html

          热门文章

          文章分类