一、题目
以下关于ICMP报文的分析正确的是()。
A. ICMP报文封装在IP报文中,不经过传输层封装
B. ICMP报文不能用来检测路径中的MTU
C. ICMP报文可以记录时间,包括原始时间、接收时间、发送时间
D. ICMP协议不支持重定向功能
E. ICMP报文包含ICMP差错报文,控制报文,请求/应答报文,刷新报文
二、答案
Correct Answer: AC
三、解析
A. ICMP报文封装在IP报文中,不经过传输层封装
- 正确。ICMP(Internet Control Message Protocol,互联网控制消息协议)是一种网络层协议,它直接封装在IP报文的“数据”部分,而不是像TCP或UDP那样属于传输层协议。因此,ICMP报文不会经过传输层封装。
B. ICMP报文不能用来检测路径中的MTU
- 错误。ICMP报文中的“目的地不可达”消息(类型3,代码4)可以用来检测路径中的MTU(最大传输单元)。当一个IP数据包因为太大而无法通过某个链路时,中间路由器会发送一个“分片需要但DF位设置”(Don’t Fragment)的ICMP消息给源主机,通知其路径中的MTU值。这正是路径MTU发现(Path MTU Discovery)机制的基础。
C. ICMP报文可以记录时间,包括原始时间、接收时间、发送时间
- 正确。ICMP报文中的“时间戳请求”(Type 13)和“时间戳应答”(Type 14)消息可以用来记录时间。时间戳报文可以包含原始时间戳(发送时间)、接收时间戳(接收时间)和发送时间戳(返回时间),用于测量往返时间或同步时钟。
D. ICMP协议不支持重定向功能
- 错误。ICMP协议支持“重定向”消息(Type 5)。当一个路由器发现主机发送的数据包可以通过更优的路径到达目的地时,它会发送一个ICMP重定向消息给源主机,通知其使用更优的下一跳地址。
E. ICMP报文包含ICMP差错报文,控制报文,请求/应答报文,刷新报文
- 错误。ICMP报文主要分为两类:差错报文和查询报文。差错报文包括目的地不可达、超时、重定向等;查询报文包括回显请求/应答、时间戳请求/应答、地址掩码请求/应答等。ICMP协议中并没有“刷新报文”这一类型。
因此,正确答案是A和C。
四、扩展—ICMP报文和IP报文有什么区别?
ICMP报文和IP报文的主要区别如下:
1. 功能
- IP报文:IP协议是网络层的核心协议,主要用于在网络中传输数据包,负责将数据包从源主机路由到目标主机。IP协议不保证数据包的可靠传输,也不提供错误报告。
- ICMP报文:ICMP是IP协议的补充协议,主要用于传输控制信息和诊断数据。它用于报告网络中的错误情况(如目标不可达、超时等),并提供网络状态信息(如回显请求/应答、时间戳请求/应答等)。
2. 数据结构
- IP报文:IP报文包括IP头部和数据部分。IP头部包含源地址、目的地址、TTL(生存时间)等字段,数据部分可以是ICMP报文、TCP报文或UDP报文。
- ICMP报文:ICMP报文封装在IP报文的数据部分。ICMP报文的前四个字节是统一格式,包括类型、代码和检验和字段,后面是具体的数据内容。
3. 传输方式
- IP报文:IP报文在网络中逐跳传输,每个路由器根据IP头部的目的地址进行转发。
- ICMP报文:ICMP报文作为IP数据包的一部分传输,当网络设备检测到错误时,会生成ICMP报文并发送回数据包的源地址。
4. 应用场景
- IP报文:用于普通的数据传输,如网页浏览、文件下载等。
- ICMP报文:用于网络诊断和控制,如通过“ping”命令检测网络连通性,或通过“traceroute”命令追踪数据包路径。
5. 是否封装
- IP报文:IP报文是网络层的数据传输载体,封装在以太网帧中。
- ICMP报文:ICMP报文封装在IP报文的数据部分,作为IP协议的扩展。
总结来说,IP报文是网络层用于传输数据的载体,而ICMP报文是用于传输控制信息和诊断数据的工具,封装在IP报文中。