【计算机网络】实验四 网际控制报文协议 ICMP 分析

您所在的位置:网站首页 icmp类型有哪些 【计算机网络】实验四 网际控制报文协议 ICMP 分析

【计算机网络】实验四 网际控制报文协议 ICMP 分析

2024-07-16 13:27| 来源: 网络整理| 查看: 265

1、网际控制报文协议 ICMP

为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol)。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP 不是高层协议,而是 IP 层的协议。ICMP 报文作为 IP 层数据报的数据,加上IP 数据报的首部,组成 IP 数据报发送出去。

ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。

ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。类型、代码字节的内容表明了 ICMP 的类型,常见的有:类型8、代码0:回显请求;类型0、代码0:回显应答;类型11、代码0:超时。检验和是包括数据在内的整个ICMP 数据包的校验和,其计算方法和IP 头部校验和的计算方法是一样的。

除此之外后面的字段格式针对不同的类型代码内容会有所不同。对于ICMP 回显请求和应答报文来说,接下来是16bits 标识符(Identifier)字段:用于标识本ICMP 进程,区分不同的PING 进程。对于windows 系统来说,具体参考如下:

Microsoft Windows NT - 256

Microsoft Windows 98/98SE - 512

Microsoft Windows 2000 – 512

最后是16bits 序列号字段:用于判断回显应答数据报。实际上windows 系统根据SequenceNumber field 区分ping 进程。

ICMP 差错报告报文共有 5 种:

终点不可达 (错误数据报……)源点抑制(Source quench)时间超过 (TTL=0……)参数问题改变路由(重定向)(Redirect)跟踪路由tracert:源主机向目的主机连续发送IP 数据报分别设置TTL=1,2,….未到目的主机的情况:因TTL=0,中间路由器返回给源主机”ICMP 时间超过”差错报文到达目的主机:或者由目的主机返回给源主机”ICMP 终点不可达”差错报文(因UDP端口号非法);或者由目的主机返回给源主机”ICMP 回显回答”报文(类似于ping)。

图1 ICMP报文的格式

2、获取ICMP分组,并正确分析其内容

2.1 依次执行以下命令:

ipconfig /release;(释放本地网卡IP地址) arp –d;删除ARP表中所有的内容ipconfig /flushdns ;删除本机上的DNS域名解析列表启动Ethereal,扑获当前网络接口的数据分组。执行以下命令:

ipconfig /renew;重新配置本地网卡IP地址,执行DHCP协议 ping www.sina.com tracert www.163.com结束扑获,并保存该文件,为“DHCP-ICMP数据.cap”,过程见下图:

图 2 实验结果

2.2 ICMP数据的分析

上述的ping www.sina.com、tracert www.163.com分别执行了ICMP协议,观察文件可以发现ping www.sina.com对应的是46-61之间的4对ICMP应答分组;tracert www.163.com对应的是98-246之间的ICMP应答分组。

图3 分组46是ping www.sina.com发送的首个ICMP询问报文

ICMP报文的前 4个字节是统一的格式,共有三个字段:即类型、代码和检验和。ICMP类型:8,回送请求;代码:0,ping 检验和:465c,检验整个报文正确与否其它字段内容:标识符、序列号、数据内容等。

图4 分组47是对分组46的应答,ping www.sina.com接收的首个ICMP应答报文:类型:0,应答回复;代码:0,ping;检验和:4e5c,检验整个报文正确与否;其它字段内容:标识符、序列号、数据内容等。

  下面举例分析tracert www.163.com的过程

图5 分组99是tracert www.163.com接收的首个ICMP应答报文

  类型:11;代码:0,时间超过错误;检验和:f4ff,检验整个报文正确与否;其它字段内容: IP首部、原始IP数据报(分组98)中前8字节。

如果发现如下图6 的对ping报文的标识/序号字段解码显示(BE与LE),是因为wireshark考虑到window系统与Linux系统发出的ping报文(主要指ping应用字段而非包含IP头的ping包)的字节顺序不一样(windows为LE:little-endian byte order,即低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。Linux为BE:big-endian)。

图6 Wireshark对ping报文的标识/序号字段的解析显示(BE与LE)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3