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

embedded/2025/3/15 15:33:24/

网络>计算机网络 网络层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.ppmy.cn/embedded/172796.html

相关文章

Linux常见问题与分析

操作系统进行线程切换时进行的动作 1. 保存当前线程的上下文 寄存器状态:保存 CPU 寄存器(如通用寄存器、程序计数器 PC、栈指针 SP 等)到当前线程的 线程控制块(TCB) 中。内核栈信息:如果线程在内核态运…

数据类型及sizeof,进制转换

其实数据类型可以讲很多内容,这里看情况需要讲多久吧。 本篇基本都是理论。 目录 数据类型的分类 基本数据类型 构造数据类型 指针类型 空类型 计算数据类型或变量所占用的内存字节数 基本语法 进制转换 二进制 二进制的概念 二进制与十进制的转换 十六进…

linux常用基本指令汇总

文章目录 01. ls指令02. pwd指令03. cd指令04. touch指令05. mkdir指令06. rmdir指令07. rm指令08. man指令09. cp指令10. mv指令11. cat指令11. more指令12. less指令13. head指令14. tail指令15. time指令16. cal指令17. find指令18. grep指令19. zip/unzip指令20.tar指令21.…

ECU BootLoader开发——Flash编程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…

MySQL -- 表的约束

概念引入:真正的约束表字段的是数据类型,但是数据类型的约束方式比较单一的,所以需要一些额外的一些约束,用于表示数据的合法性,在只有数据类型一种约束的情况下,我们比较难保证数据是百分百合法。通过添加…

编程自学指南:java程序设计开发,多线程编程,为什么需要多线程?线程的创建与启动,线程同步与锁机制,线程池

编程自学指南:java程序设计开发,多线程编程 学习目标: 理解进程与线程的核心概念及区别 掌握Java中线程的创建与生命周期管理 能够通过同步机制解决线程安全问题 使用线程池优化多线程程序性能 一、课程引入 1.1 为什么需要多线程&…

SpeechCraf论文学习

Abstract 核心问题 挑战 语音风格包含细微的多样化信息(如情感、语调、节奏),传统基于标签/模板的标注方法难以充分捕捉,制约了语音-语言多模态模型的性能。 数据瓶颈: 大规模数据收集与高质量标注之间存在矛盾&…

知网研学赋能研究生教育:提升科研素质与创新能力的实践与探索

引言 在数字化时代,研究生教育作为国家创新人才培养的重要环节,面临着如何提升科研素质与创新能力的挑战。知网研学平台作为中国知网旗下的学术资源管理与科研辅助工具,凭借其丰富的学术资源、智能化的功能设计以及个性化的学习支持&#xf…