目录
实验五 ICMP报文分析实验.......................... 2
一、实验目的................................................. 2
二、实验内容................................................. 2
1. 掌握网络协议分析软件的常用过滤规则使用方法;............................................. 2
2. 分析ICMP协议报文............................. 2
三、实验原理................................................. 2
(1)实验设备........................................... 3
四、 实验内容与步骤................................... 3
1. 分析ICMP协议..................................... 3
五. 实验思考:........................................... 7
了解网络协议分析软件的过滤方式和原则,包括:按协议类型过滤,按IP地址过滤,按协议模式过滤,按端口过滤等,通过设置不同的过滤条件,熟悉协议类型、端口、协议等概念;分析以太网数据帧的构成,数据链路层将不可靠的物理层转变为一条无差错的链路,涉及的数据单位是帧(frame),高层的协议数据被封装在以太网帧的数据字段发送。使用网络协议分析软件可以捕获各种协议数据包,通过查看这些协议数据包中数据链路帧的各字段可以分析网络协议的内部机制。
ICMP协议是IP协议的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。ICMP报文由首部和数据段组成。首部为定长的8个字节,前4个字节是通用部分,后4个字节随报文类型的不同有所差异。ICMP报文的一般格式如图所示。
补充ICMP协议的几种报文及其含义。
ICMP 类型报文分为 2 类: (1)差错报告报文 类型值为 3 时:表示终点不可达 类型值为 4 时:表示源点抑制 类型值为 5 时:表示改变路由(Redirect) 类型值为 11 时:表示超时 类型值为 12 时:表示参数问题 (2)询问报文 类型值为 8 或者 0 时:表示回送(Echo)请求或应答 类型值为 13 或 14 时:表示时间戳(Timestamp)请求或应答
计算机以太网环境及Wireshark网络协议分析软件
1. 分析ICMP协议
- 利用Ping程序产生ICMP分组。Ping向因特网中的某个特定主机发送特殊的探测报文并等待表明主机在线的回复。具体做法:
- 启动打开网络协议分析软件(Wireshark),选择菜单命令“Capture”“Options”子菜单项。弹出“Wireshark: Capture Options”对话框。在Capture中选择网卡。Capture filter字段填入:“icmp”,单击“Start”按钮开始网络数据包捕获。
- 打开Windows命令提示符窗口(Windows Command Prompt),输入“ping –n 10 hostname” ,其中“-n 10”指明应返回10条ping信息,附上执行结果图。
- 当ping程序终止时,停止Wireshark 分组俘获。
- 停止分组俘获后,附上wireshark的界面:
- 截取其中ICMP协议的详细信息
- 观察这个ICMP分组,分析属于ICMP的哪种分组。
从截取ICMP协议的详细信息观察可以看出,此ICMP分组的Type: 8 and Code :0 即所谓的ICMP “echo request” 分组。
- 查看ping请求分组,ICMP的type 和code是多少?这个ICMP 包包含了哪些其他的字段?Checksum、sequence number 和identifier 字段的值各为多少?
与此同时该 ICMP 包包含了 checksum,identifier (BE),identifier(LE),sequence number(BE),sequence number(LE),Response frame 字段。 具体每个字段的值如下所示:
Type:8(Echo(ping)requ est) Code:0
checksum:0x98f9 correct[checksum Status: Good]
Identifier(BE):7134(0x1bde) Identifier (LE):56859(0) xde1b)
- 查看相应的ICMP响应信息,ICMP的type 和code又是多少?这个ICMP 包包含了哪些其他的字段?Checksum、sequence number 和identifier 字段的值各为多少?
ICMP 的 type = 0,code = 0,与此同时该 ICMP 包包含了 checksum,identifier (BE),identifier(LE),sequence number(BE),sequence number(LE),Request frame,Response time 字段。 具体每个字段的值如下所示:
Type:0 Code:0
Checksum:0x54cd
Sequence number;36352(0x8e00)
Identifier:256(0x0100)
Tracert能够映射出通往特定的因特网主机途径的所有中间主机。源端发送一串ICMP分组到目的端。发送的第一个分组时,TTL=1;发送第二个分组时,TTL=2,依次类推。路由器把经过它的每一个分组TTL字段值减1。当一个分组到达了路由器时的TTL字段为1时,路由器会发送一个ICMP错误分组(ICMP error packet)给源端。
- 启动Window 命令提示符窗口
- 启动Wireshark分组嗅探器,开始分组俘获。
- 在cmd窗口,运行Tracert命令, 附上执行结果图
- 当Tracet 程序终止时,停止分组俘获,附上捕获ICMP分组的截图
- 查看ICMP echo 分组 ,是否这个分组和前面使用 ping命令的ICMP echo 一样?
答:不一样,前者是32,后者是64。
- 查看ICMP错误分组,它比ICMP echo 分组包括的信息多。ICMP错误分组比ICMP echo 分组多包含的信息有哪些?
多了 IP 数据报的首部以及 TCP 或 UDP 协议的端口号
- 实验思考:
在实验中遇到了哪些问题,如何解决的,获取了什么启发。
在实验过程中,在刚开始的时候,一直无法抓包icmp协议的任何信息。在经过网上查询wireshark分析icmp协议的实现过程后,有了一些收获。Ping是用来测试网络连通性的命令,一旦发出Ping命令,主机会发出连续的测试数据包到网络中,在通常的情况下,之际会收到回应数据包,ping采用的是icmp协议。ICMP协议主要是Type和Code来识别,“Type:8,Code:0”表示报文类型为诊断报文的请求测试包,“Type:0,Code:0”表示报文类型为诊断报文类型正常的包。通过此次实验,对协议了解的更深刻了。