数据链路层以太网帧格式------理解MTU的定义和最大值(1500字节)
来源:互联网 发布:网络原创女歌手 编辑:程序博客网 时间:2024/05/17 21:23
在前面的文章中, 我们讨论了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的最大值呢? 爱思考的, 可以思考下。 我们后面再说。
- 数据链路层以太网帧格式------理解MTU的定义和最大值(1500字节)
- TCP/IP详解--数据链路层 & 以太网帧格式
- 唯快不破:TCP/IP详解--数据链路层 & 以太网帧格式
- 协议-数据链路层-以太网
- 第三章 数据链路层 3.5扩展的以太网
- 第三章 数据链路层 补充 共享式以太网和交换式以太网
- 以太网数据链路层协议分析
- IP,MAC,数据链路层,以太网
- 以太网数据链路层协议分析!
- 以太网数据链路层协议分析
- 以太网(数据链路层)学习笔记
- 网络协议学习笔记-数据链路层-MTU、路径MTU和串行线路吞吐量计算
- 对数据链路层的理解
- 聊聊MTU和MSS(针对以太网)---为什么叙述中用"最大传输单元"的最大值, “最大段”的最大值。
- TCP/IP详解(二)---数据链路层、MTU
- 数据链路层—了解数据链路和帧
- 以太网最大帧和最小帧、MTU
- 以太网最大帧和最小帧、MTU
- 九、建造者模式——设计模式学习笔记
- 自定义逐格走旋转圆盘
- Android 如何获取手机内存大小,内置存储空间大小
- C++判断一个序列是否为堆(最大堆、最小堆)
- 再来谈排序
- 数据链路层以太网帧格式------理解MTU的定义和最大值(1500字节)
- Mysql技术内幕InnoDB存储引擎读书笔记--《八》备份与恢复
- 浅析Java Reference
- 关于idea的一些基础知识
- SpringMVC学习之HttpServlet 阅读笔记
- 使用 Gradle 创建 Java Web 项目整理
- 重返狼群
- [leetcode]596. Classes More Than 5 Students
- 图像的膨胀与腐蚀以及开闭运算