实验2IP/ICMP协议分析实验一、实验目的理解IP协议包格式;理解ICMP协议包格式。二、实验内容PING应用系统通信过程中ICMP协议、IP协议分析。三、实验原理、方法和手段(1)ICMP报文格式8bits8bits16bits16bits16bits32bit报文类型报文编码校验和Field1Field2Field3(2)IP报文格式四、实验条件(1)报文捕获工具Wireshark协议分析软件;(2)应用协议环境每个学生机的PC机(安装Windowsxp或者Windows2000操作系统)处于同一个LAN。五、实验步骤(1)ICMP协议分析主机A(IP地址为A.A.A.A)与主机B(IP地址为B.B.B.B)属于同一个子网内的两台计算机;在主机A上启动报文捕获工具,指定源IP地址为主机A的地址,目的IP地址为主机B的地址,分析开关为ICMP协议;在主机A的DOS仿真环境下,运行pingB.B.B.B命令向主机B发送echo请求报文,在主机B联网和未联网两种情况下,捕获ICMP请求数据包与应答数据包(如有),记录并分析各字段的含义,并与ICMP数据包格式进行比较;表1:ICMP报文格式实验项ICMP包字段名称值含义1Type0(echo(ping)reply)报文类型,应答报文2Code0()报文编码3Checksum0x554e[correct]校验和4Identifiernumber0x0001标识符5Sequencenumber13(0x000d)序列号(2)IP协议分析主机A(IP地址为A.A.A.A)与主机B(IP地址为B.B.B.B)属于同一个子网内的两台计算机;在主机A上启动报文捕获工具,指定源IP地址为主机A的地址,目的IP地址为主机B的地址,分析开关为IP协议;在主机A的DOS仿真环境下,运行pingB.B.B.B命令向主机B发送echo请求报文,在主机B联网和未联网两种情况下,捕获IP数据包,记录并分析各字段的含义,并与IP数据包格式进行比较;表2:IP报文格式实验项ICMP包字段名称值含义1Version4表示IP版本为4,即IPv42DifferentiatedservicesField0x00(DSCP0x00:default;ECN:0x00)区分服务领域3Headerlength20头部长度,它指向数据的开始位置,这个域的最小合法值为5。4Totallength60总长5Identification0x16be标示符6Flags0..、.0.、..0标记字段,第1位不使用,第2位是DF位,当DF为1时,表示路由器不允许分段处理,为0时,表示允许分段。第3位是MF位,当MF为1时,表示不是最后一个分段,为0时,表示是最后一个分段。7Fragmentoffset0分段偏移,表示是首段的偏移。以8个字节为偏移单位8Timetolive128生存期,说明数据报在互联网系统生存的最大时间9ProtocolICMP(0x01)协议,指定了数据包中数据的类型。10Headerchecksum0x8fde[correct]头部校验和,用于保证数据的正确性。11Destination192.168.137.101源地址12Source192.168.137.110目标地址六、思考题(1)为什么运行ping127.0.0.1时,不能捕获到ICMP报文?如果运行ping本机IP地址能收到报文吗?答:因为127.0.0.1表示本机回环地址,通常利用在本机上ping此地址来检查TCP/IP协议是否安装正确。无论是ping127.0.0.1或本地IP(在Windows和Linux下),都不能抓获到ping数据帧,亦即ping两者都是不经过网卡的,都是通过环路来处理的。并且ping127.0.0.1和ping本机的过程是不一样的。ip输出函数先检查地址是不是环回地址:1.如果是环回地址,直接交给环回驱动程序处理,返回ip输入函数。2.如果不是环回地址,检查是不是广播地址或者多播地址。3.如果不是广播或者多播地址,才检查是不是本机地址,如果是本机地址,则交给环回驱动程序处理,环回驱动程序返回给ip输入函数。从上面可以看出ping127.0.0.1数据包是不经过网卡的ping本机则是需要经过网卡的。所以运行ping127.0.0.1时,不能捕获到ICMP报文;运行ping本机IP地址能收到报文。(2)能否在WINDOWS操作系统下进行设置,使得主机收到ICMP报文后不响应呢?答:ICMP是“InternetControlMessageProtocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。所以我们可以进行相应的ICMP设置,比如在WindowsXP中,首先打开“网络连接”,右键单击启用Internet连接防火墙的“网络连接”,选择“属性”打开属性窗口。接着,选择“高级”选项卡,单击右下角“设置”按钮。然后,在高级设置窗口中选择“ICMP”选项卡,在其中就可以进行相应的设置,包括允许传入的回显请求等。