您的位置:首页 > 其它

数据链路层以太网帧格式------理解MTU的定义和最大值(1500字节)

2017-07-01 20:18 344 查看
        在前面的文章中, 我们讨论了IP的包格式, 也说过TCP/UDP的包格式。 无论是TCP还是UDP, 最终还是封装成了IP包, 我们知道, IP包的最大程度为65535个字节, 于是很多初学者会误解, 以为这65535字节的IP包数据, 是直接被数据链路层套上帧头和帧尾巴的。 比如, 下图就容易让人产生一个极大的误解:



        这幅图的最大误人子弟之处在于,  如果上层数据比较长, 是无法套在一个tcp头部之后的, 其他各层也有类似特点。   举个本文涉及到的例子, 网络层的数据如果过长, 是没法直接加载链路层上的, 需要将网络层的数据分片, 然后在数据链路层组装成多个帧(而不是一个)。

       下面, 我们来看看数据链路层(用以太网来举例)对上一层数据(网络层数据)长度的限制:



        可以看到, 在单个帧中, IP数据包必须小于1500字节,  这个1500就是MTU(max transmission unit)能达到的最大值,  它是数据链路层允许的最大IP包。

        回想下以前说的概念:

        UDP包头中, UDP整个包的最大长度是65535个字节, 但是IP数据包的最大值也是这个长度, 所以IP层允许的最大UDP包长绝对不能65535个字节(而应该是65535 - 20个字节)。 同理, IP包的最大长度是65535个字节, 但是数据链路层允许的最大IP包, 绝对不能是65535个自己, 实际上远远小于这个数(如上图)。

        在本文中, 我们了解到, 实际上, MTU的定义就是: 数据链路层允许的最大IP包长(其最大值是1500字节)。 理解这很重要, 在后面的博文中, 我们会继续说到。

        有个问题有点拗口, MTU中的M已经有了“最”的意思, 为什么还说MTU的最大值呢? 爱思考的, 可以思考下。 我们后面再说。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐