zoukankan      html  css  js  c++  java
  • 【TCP协议】MTU和MSS详解

    需要注意的是,区别两种帧封装格式:802标准帧和以太网帧
    1,在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括C R C检验码。RFC 1042(IEEE 802)
    2,RFC 894(以太网)
    所以,以太网帧报头为目的地址6 + 源地址6 + 类型2 + CRC4=18bytes
    而802帧没有CRC,所以为14bytes。Sniffer采用的是802帧为14bytes
     
     
    MTU: Maxitum Transmission Unit 最大传输单元
    MSS: Maxitum Segment Size 最大分段大小
     
    由于以太网EthernetII最大的数据帧是1518Bytes这样,刨去以太网帧的帧头(DMAC目的地址MAC48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes(这个部门有时候大家也把它叫做FCS),那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes. 这个值我们就把它称之为MTU。
     
    以太网的MTU是1500,再减去PPP的包头包尾的开销(8Bytes),就变成1492。
     
    MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能
    TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的
    时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的
    包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小
    值确定为这次连接的最大MSS值。
     
    参考博客:https://blog.51cto.com/infotech/123859
  • 相关阅读:
    linux socket里的send和recv,阻塞与非阻塞socket、TCP与UDP在这方面的区别
    leetcode 149 Max Points on a Line
    leetcode 126 Word Ladder II
    leetcode 123 Best Time to Buy and Sell Stock III
    LC 297 Serialize and Deserialize Binary Tree
    栈和队列问题
    链表问题
    day17--权限管理和配置服务
    谷粒学院功能简介及系统架构
    day01--MybatisPlus的使用
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/10478689.html
Copyright © 2011-2022 走看看