一、实验目的
了解网络协议分析软件的过滤方式和原则,包括:按协议类型过滤,按IP地址过滤,按协议模式过滤,按端口过滤等,通过设置不同的过滤条件,熟悉协议类型、端口、协议等概念;分析以太网数据帧的构成,数据链路层将不可靠的物理层转变为一条无差错的链路,涉及的数据单位是帧(frame),高层的协议数据被封装在以太网帧的数据字段发送。使用网络协议分析软件可以捕获各种协议数据包,通过查看这些协议数据包中数据链路帧的各字段可以分析网络协议的内部机制。
二、实验内容
1. 掌握网络协议分析软件的常用过滤规则使用方法;
2. 分析ICMP协议报文
三、实验原理
ICMP协议是IP协议的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。ICMP报文由首部和数据段组成。首部为定长的8个字节,前4个字节是通用部分,后4个字节随报文类型的不同有所差异。ICMP报文的一般格式如图所示。
四、实验设备
计算机以太网环境及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 分组俘获。
(1)停止分组俘获后,附上wireshark的界面:
(2)截取其中ICMP协议的详细信息:
(3)观察这个ICMP分组,分析属于ICMP的哪种分组。
从截取ICMP协议的详细信息可以看出,ICMP分组为“Echo request”。
(4)查看ping请求分组,ICMP的type 和code是多少?这个ICMP 包包含了哪些其他的字段?Checksum、sequence number 和identifier 字段的值各为多少?
由上图可以看出,该ICMP的type是8(Echo(ping)request),code是0。ICMP包包含了checksum,identifier(BE),identifier(LE),sequence number(BE),sequence number(LE),Response frame 字段。
Checksum:0x4bb4 [correct][checksum Status: Good]
Identifier(BE):1(0x0001)
Identifier (LE):256(0x0100)
Sequence Number(BE):423(0x01a7)
Sequence Number(LE):42753(0xa701)
Response frame:2
(5)查看相应的ICMP响应信息,ICMP的type 和code又是多少?这个ICMP 包包含了哪些其他的字段?Checksum、sequence number 和identifier 字段的值各为多少?
由上图可以看出,该ICMP的type是0(Echo(ping)reply),code是0。ICMP包包含了checksum,identifier(BE),identifier(LE),sequence number(BE),sequence number(LE),Response frame,Response time字段。
Checksum:0x53b4 [correct][checksum Status: Good]
Identifier(BE):1(0x0001)
Identifier (LE):256(0x0100)
Sequence Number(BE):423(0x01a7)
Sequence Number(LE):42753(0xa701)
Response frame:1
2. 用Tracert程序俘获ICMP分组
Tracert能够映射出通往特定的因特网主机途径的所有中间主机。源端发送一串ICMP分组到目的端。发送的第一个分组时,TTL=1;发送第二个分组时,TTL=2,依次类推。路由器把经过它的每一个分组TTL字段值减1。当一个分组到达了路由器时的TTL字段为1时,路由器会发送一个ICMP错误分组(ICMP error packet)给源端。
启动Window 命令提示符窗口。启动Wireshark分组嗅探器,开始分组俘获。在cmd窗口,运行Tracert命令, 附上执行结果图。
当Tracet 程序终止时,停止分组俘获,附上捕获ICMP分组的截图。
(1)查看ICMP echo 分组 ,是否这个分组和前面使用 ping命令的ICMP echo 一样?
和前面使用ping命令的ICMP echo一样。
(2)查看ICMP错误分组,它比ICMP echo 分组包括的信息多。ICMP错误分组比ICMP echo 分组多包含的信息有哪些?
请求超时:
目的地不可达--端口不可达:
六、实验思考
在实验刚开始的时候,没有设置ICMP过滤器导致抓包数据杂乱,在设置ICMP过滤器后只抓取ICMP数据包。
通过本次实验,利用Ping程序和Tracert程序来产生ICMP分组,进一步理解了关于ICMP协议的相关知识。ICMP协议是IP协议的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。ICMP报文由首部和数据段组成。首部为定长的8个字节,前4个字节是通用部分,后4个字节随报文类型的不同有所差异。ICMP分组主要是通过首部前两个字节Type和Code来进行识别,“Type:8,Code:0”表示ICMP分组为回显请求,“Type:0,Code:0”表示ICMP分组为回显应答。
通过实验,我还了解到了ICMP分组捕获和分析对于故障诊断和改进网络性能的重要性。通过分析ICMP错误分组,可以确定网络故障的类型和位置,并采取相应的措施进行修复。另外,在分析ICMP回显分组的延迟和丢包情况时,可以帮助我们评估和改进网络性能,提高用户的体验。这种实验不仅提高了我对网络的理解,还培养了我的网络分析和故障排除能力。