当前位置: 首页 > article >正文

计算机网络 网络层IP数据报首部格式、数据链路层帧格式综合练习

计算机网络 网络层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 2161=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差错报文向源主机报告

在这里插入图片描述


http://www.kler.cn/a/585680.html

相关文章:

  • 神经网络微调技术解析
  • vue3实现星星打分组件
  • Java 集合框架大师课:集合框架的暗黑料理(六)
  • 数据结构(三)——链表
  • 流水线(Pipeline)
  • Linux 进程的创建、终止、等待与程序替换函数 保姆级讲解
  • KICK第五课:Mac 系统下安装 Xcode 或 Clang
  • C++初阶——类和对象(一)
  • 3DS模拟器使用(pc+安卓)+金手指+存档互传
  • visual studio编译fortran
  • Springboot项目发送请求
  • 什么是提示词工程,有哪些开源项目
  • Android Studio执行Run操作报Couldn‘t terminate previous instance of app错误
  • (动态规划 区间dp/dfs 最长回文子序列)leetcode 516
  • MATLAB R2024b 安装教程
  • 深入理解 ALSA 声卡驱动:从理论到实践,解决嵌入式 Linux 声卡无声问题
  • 基于Asp.net的医院病历管理系统
  • 射频相关概念
  • MySQL | MySQL表的增删改查(CRUD)
  • 使用 Swiss Table 如何实现更快的 Go map