考研级《计算机网络》知识梳理——第十五期
IP数据报格式
1、TCP/IP协议栈
可以看出来在网际层里ARP协议(Address Resolution Protocol)为IP协议(Internet Protocol)服务,IP协议为ICMP协议(Internet Control Message Protocol)和IGMP协议(Internet Group Management Protocol)服务。
2、IP数据报格式
其中数据部分有来自于传输层的报文段,在传输层部分再详细讲解。
首部的组成部分如下图所示。
版本:IPV4/IPV6?
首部长度:单位是4B(也就是4位二进制数表示的十进制数字乘以4B,例如0101表示5,乘以4B后是表示首部长度20Byte),最小值为0101.
区分服务:指示期望获得哪种类型的服务。
总长度:首部+数据,单位是1B。
生存时间TTL(time-to-live):IP分组的保质期。经过一个路由器就-1,变成0就丢弃。
协议:数据部分的协议。(其中注意00000110(十进制6)表示TCP协议,00010001(十进制17)表示UDP协议)
首部检验和:只检验首部,对首部数据进行二进制求和校验。
源IP地址和目的IP地址:IP地址是32位。
可选字段(长度可变):0~40B,用来支持排错、测量以及安全等措施。
填充:全0,把首部填补成4B的整数倍。
看上面可能会产生疑问:明明是1B=8bit,为什么在表示长度的几个字段都不按照这种规律?因为那几个表示长度的字段本身就是定长固定大小的,他们表示的其实是对象有多少个Byte,他们本身只是一个值,大小是固定的,完全没有矛盾。
IP数据报分片
1、最大传送单元MTU(Maximum Transmission Unit)
概念:链路层数据帧可封装数据的上限。其中以太网的MTU是1500字节。对一个帧来说就是IP分组的总长度。
如果所传送的数据报长度超过某链路的MTU值会怎么样?答:解决方法为分片。(前提是分组自己同意进行分片,如果不同意且超过最大长度就无法正常传递,会在逻辑中返回一个差错报文)
2、回顾IP数据报格式
标识:同一数据报的分片使用同一标识。作用就是表明来自相同的IP分组。
标志:标志字段有3位,但是只有2位有意义(x _ _最低位和中间位)。
中间位DF(Don't Fragment):
DF=1,禁止分片;
DF=0,允许分片。
最低位MF(More Fragment)讨论的前提是DF=0:
MF=1,后面“还有分片”;
MF=0,代表最后一片/没分片
片偏移:13bit,指出较长分组分片后,某片在原分组中的相对位置。以8B为单位。(例如,如果片偏移字段为0000000000010,也就是十进制的2,那么这个分片在原来的分组中的位置是从第16Byte处开始)其实从这个单位也可以看出,除了最后一个分片,每个分片长度一定是8B的整数倍。
3、IP数据报分片例题
一图明了,值得注意的是第一个分片的偏移量数是0,长度是1400B的话结尾是1399B,下一个分片的偏移量才是1400B(十进制数字为175,二进制表示为0000010101111)
4、IP数据报格式(就是对IP数据报中表示长度的字段单位的总结,比较容易混淆)
总长度单位是1Byte
片偏移单位是8Byte
首部长度单位4Byte
为方便记忆,口诀为:一种(1总)八片(8片)的首饰(首4)(太强了!!)