最近计算机网络讲到了网络层,关于IP部分的知识掌握的有所欠缺,特在此记录,加强记忆。
IP数据报结构问题
IP数据报的结构图如下:
1. 为啥首部长度最大60字节,总长度最大 2 16 − 1 2^{16}-1 216−1字节?
首部长度字段的单位和总长度字段的单位是不同的。
- 首部长度字段单位为IP数据报的行数,对多可以表示 2 4 − 1 2^4-1 24−1行,即15行从图中可以看出,一行有32位,即4字节,因此,首部长度最大为60字节。
- 总长度字段的单位直接为字节数,该字段占16位,因此,可表示的最大值为 2 16 − 1 2^{16}-1 216−1字节。
2. 标识和标志都代表着啥意思??
这里中文翻译过来,意思看着就很相近了,不如直接看英文。标识的英文即(identification),而标志为flag。可以看出来标识(identification)是用来识别身份的,而标志则是某种东西的flag。说文解字完成后,我们来看一下具体的含义。
-
标识(identification):标识既然是用来识别身份的,那么是用来识别什么身份的呢?我们知道当数据报超出长度限制(MTU)时,必须进行分片,而多片数据报组装在一起时,怎么判断哪个分片属于哪个数据报呢?这时候就需要依靠我们的标识了,来自同一个数据报的分片具有相同的标识。
那又怎么做到的同一个数据报的标识相同呢?
这个时候PPT上的计数器点醒了我,IP数据报的产生端会执行一个计数器,每个数据报都有自己的独一无二的标识。 -
标志(flag):标志这个只有两位有意义,分别用来标志MF和DF,MF=1表示后面还有分片,MF=0表示为最后一个分片。DF=0时表示允许分片。MF的作用就相当于我们字符串中的\0。
这个时候新的问题又来了,IP数据报接收并不是按序接收的,那么它是如何把不同的片组装在一起的呢?这时候需要了解一下片偏移了。
下面这个PPT里的例子其实可以很好地帮助我们理解以上概念。