网络>计算机网络 网络层IP数据报首部格式、数据链路层帧格式综合练习
主机 A 的IP地址为 218.207.61.211,MAC 地址为 00:1d:72:98:1d:fc。A 收到一个帧,该帧的前 64 个字节的十六进制形式和 ASCII 形式如下图所示
(1)主机A所在网络的网关路由器的响应端口的MAC地址是多少?
(2)该IP数据报分组所携带的数据量为多少字节?
(3)若该分组需要被路由器转发到一条MTU为380B的链路上,则路由器将做何种操作?
【解析】
这一题涉及到了IP数据报首部格式和帧格式
(1) 网关路由器将收到的这个IP数据包封装成帧,交给主机A,主机A在数据链路层收到这个帧,那么只需知道帧格式,即可找到源MAC地址
这个帧由路由器转发给主机A,目的地址为主机A的MAC地址,主机A的MAC地址是00:1d:72:98:1d:fc,其后面6个字节即为网关的MAC地址,即00:00:5e:00:01:01
(2) 要想求得IP分组的数据量为多少字节,需要求得IP分组的总长度和首部长度,令总长度减去首部长度即为数据部分长度
IP数据报首部格式如下
- 首部长度:占4位,以4B为单位,最大可表示的首部长度为 60B,最常用的首部长度是20B,该字段的值是5,此时不使用任何可选字段
- 总长度:占16位,指首部和数据之和的的长度,单位是字节,因此数据报的最大长度为 2 16 − 1 = 65535 B 2^{16} - 1 = 65535B 216−1=65535B。以太网帧的最大传送单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度一定不能超过下面的数据链路层的MTU
- 标志:占3位,最高位为保留位,次高位为DF(Don’t Fragment),只有当DF=0时才允许分片,最低位为MF(More Fragment),MF=1表示后面还有分片,MF=0表示最后一个分片
- 片偏移:占13位,表示分片在原数据中从哪一字节开始,以8B为偏移单位,除最后一个分片外,每个分片的长度一定是8B的整数倍
我们已知主机A的IP的地址,其16进制表示为0xda cf 3d d3,作为目的地址,这样我们能够很好确定总长度和首部长度的位置
其中0x01 90是总长度,其十进制为400*1B,0x45中后4为是首部长度,十进制为5*4B
所以该分组数据部分为400B - 20B = 380B
(3) 该IP分组总长度为400B,大于MTU=380B,因此可能需要分片,但是能够分片要根据标志位中DF的值判断,由第二问,可以知道0x40中前3为为标志位,DF=1,所以不能分片,路由器将丢弃该分组并且用ICMP差错报文向源主机报告