目录
在网络通信中,IP数据报是至关重要的基本单元。本文将带您深入了解IP数据报的格式及其各个字段的功能。即使您是网络基础小白,也能通过本文掌握IP数据报的核心知识。
IP数据报的格式
IP数据报由首部和数据部分组成。首部又分为固定部分和可变部分。图4-19展示了IP数据报的完整格式。
从上表中可以看出,IP数据报的首部字段非常关键,它们定义了数据报的各种属性和行为。接下来我们将详细解释每个字段的作用。
IP数据报首部的固定部分
固定部分共20字节,是所有IP数据报必须具有的。下面介绍固定部分各字段的意义:
- 版本:占4位,指IP的版本。当前使用广泛的是IPv4。IPv6是下一代互联网协议,虽然有许多改进,但IPv4仍然占据主导地位。
- 首部长度:占4位,表示首部长度的单位是32位(4字节)。最常用的长度是20字节,不使用选项时为0101。
- 区分服务:占8位,用来获得更好的服务。目前大多数情况下不使用,但在一些对服务质量要求较高的应用中,区分服务字段可以帮助实现流量优先级管理。
- 总长度:占16位,表示首部和数据部分的总长度。最大长度为65535字节,这是由于16位字段的最大值为2^16-1。
- 标识:占16位,用于标识数据报。在分片传输中,所有分片具有相同的标识值。这有助于接收端将所有分片重新组装成完整的数据报。
- 标志:占3位,目前仅2位有意义。MF(More Fragment)表示是否有后续分片,DF(Don't Fragment)表示是否允许分片。
- 片偏移:占13位,表示每个分片在原始数据报中的相对位置。以8字节为单位。
- 生存时间(TTL) :占8位,防止数据报在网络中无限制地传输。每经过一个路由器减少1,当为0时丢弃。
- 协议:占8位,指示数据报携带的数据来自何种协议。如TCP(6)、UDP(17)等。
- 首部检验和:占16位,仅检验首部,目的是确保首部在传输中未被损坏。
- 源地址:占32位,表示数据报的发送地址。
- 目的地址:占32位,表示数据报的接收地址。
IP数据报首部的可变部分
可变部分是选项字段,用于支持排错、测量及安全措施。选项字段长度可变,最长为40字节。IPv6取消了这一部分,使首部长度固定,以提高处理效率。
实例分析:数据报的分片
当数据报长度超过网络所容许的MTU时,需将数据报分片。以下为一个分片的具体例子:
原数据报总长度为3820字节,数据部分为3800字节。为了适应网络的MTU,需要将数据报分片,每个分片的长度不超过1420字节。分片结果如下:
- 数据报片1:总长度1420字节,片偏移0
- 数据报片2:总长度1420字节,片偏移175
- 数据报片3:总长度1020字节,片偏移350
表4-5 IP数据报首部中与分片有关的字段值
数据报片 |
总长度 |
标识 |
MF |
DF |
片偏移 |
原始数据报 |
3820 |
12345 |
0 |
0 |
0 |
数据报片1 |
1420 |
12345 |
1 |
0 |
0 |
数据报片2 |
1420 |
12345 |
1 |
0 |
175 |
数据报片3 |
1020 |
12345 |
0 |
0 |
350 |
假设数据报片2经过某个网络时还需再进行分片,则分为数据报片2-1(携带数据800字节)和数据报片2-2(携带数据600字节)。其字段值如下:
- 数据报片2-1:总长度820字节,标识12345,MF=1,片偏移175
- 数据报片2-2:总长度620字节,标识12345,MF=0,片偏移275
这样,接收端就能根据标识和片偏移字段正确地将数据报重新组装。
注意:IP 数据报在传送中可能被多次分片,但分片的数据报仅在目的主机才被重装为原来的数据报
生存时间(TTL)与协议
TTL字段的设计初衷是防止数据报在网络中无限制传输。每经过一个路由器,TTL值减1。当TTL值减为0时,数据报被丢弃。这有效避免了因路由错误导致的数据报在网络中兜圈子。
协议字段指示数据报携带的数据来自何种协议。常见的协议及其字段值如下:
例如,如果协议字段值为6,表示数据报携带的是TCP数据。
首部检验和
首部检验和用于校验数据报首部是否在传输中被损坏。其计算方法如下:
- 将首部分为若干16位字。
- 将检验和字段置零。
- 用反码算术运算将所有16位字相加。
- 将结果的反码写入检验和字段。
接收端收到数据报后,重新计算首部检验和。若结果为0,表示首部未被损坏,否则丢弃数据报。
总结
本文介绍了IP数据报的格式及各字段的功能。从首部的固定部分到可变部分,再到具体的分片例子,希望您能对IP数据报有一个全面的了解。通过具体实例的分析,相信即使是网络基础小白也能明白IP数据报的基本结构和功能。
如果您有任何问题或建议,请在评论区留言。我们非常重视您的反馈,以便不断优化内容。感谢阅读!
延伸阅读:如果您对IP数据报的更详细技术细节感兴趣,建议参考RFC791文档。
希望这篇简洁明了的文章能帮助您更好地理解IP数据报的结构和功能。请多多分享和点赞,让更多人受益!