1、网络层协议分析1.A数据包捕获分析部分1.A.1、实验目的1)、了解ICMP协议报文类型及作用。2)、理解IP协议报文类型和格式。3)、分析ARP协议的报文格式,理解ARP协议的解析过程。1.A.2、实验内容介绍1)、ICMP协议分析实验执行ping和tracert命令,分别截获报文,分析截获的ICMP报文类型和ICMP报文格式,理解ICMP协议的作用。2)、IP协议分析实验使用Ping命令在两台计算机之间发送数据报,用Wireshark截获数据报,分析IP数据报的格式,理解IPV4地址的编址方法,加深对IP协议的理解。3)、IP数据报分片实验我们已经从前边的实验中看到,IP报文要交给数据链路层封装后才能发送。理想情况下,每个IP报文正好能放在同一个物理帧中发送。但在实际应用中,每种网络技术所支持的最大帧长各不相同。例如:以太网的帧中最多可容纳1500字节的数据,这个上限被称为物理网络的最大传输单元(MTU,MaxiumTransferUnit)。TCP/IP协议在发送IP数据报文时,一般选择一个合适的初始长度。当这个报文要从一个MTU大的子网发送到一个MTU小的网络时,IP协议就把这个报文的数据部分分割成能被目的子网所容纳的较小数据分片,组成较小的报文发送。每个较小的报文被称为一个分片(Fragment)。每个分片都有一个IP报文头,分片后的数据报的IP报头和原始IP报头除分片偏移、MF标志位和校验字段不同外,其他都一样。重组是分片的逆过程,分片只有到达目的主机时才进行重组。当目的主机收到IP报文时,根据其片偏移和标志MF位判断其是否一个分片。若MF为0,片偏移为0,则表明它是一个完整的报文;否则,则表明它是一个分片。当一个报文的全部分片都到达目的主机时,IP就根据报头中的标识符和片偏移将它们重新组成一个完整的报文交给上层协议处理。4)、ARP协议分析实验本次实验使用的Windows自带的Arp命令,提供了显示和修改地址解析协议所使用的地址映射表的功能。Arp命令的格式要求如下:ARP-sinet_addreth_addr[if_addr]ARP-dinet_addr[if_addr]ARP-a[inet_addr][-Nif_addr]其中:-s:在ARP缓存中添加表项:将IP地址inet_addr和物理地址ether_addr关联,物理地址由以连字符分隔的6个十六进制数给定,使用点分十进制标记指定IP地址,添加项是永久性的;-d:删除由inet_addr指定的表项;-a:显示当前ARP表,如果指定了inet_addr则只显示指定计算机的IP和物理地址;inet_addr:以点分十进制标记指定IP地址;-N:显示由if_addr指定的ARP表项;if_addr:指定需要选择或修改其地址映射表接口的IP地址;ether_addr:指定物理地址;1.A.3、实验步骤1)、ICMP协议分析步骤1:分别在PC1和PC2上运行Wireshark,开始截获报文,为了只截获和实验内容有关的报文,将Wireshark的CaptrueFilter设置为“NoBroadcastandnoMulticast”;步骤2:在PC1以PC2为目标主机,在命令行窗口执行Ping命令;请写出执行的命令:[ping192.168.3.183]步骤3:停止截获报文,将截获的结果保存为“ICMP-1-学号”,分析截获的结果,回答下列问题:1)您截获几个ICMP报文?分别属于那种类型?答:66个33个请求报文33个回复报文2)分析截获的ICMP报文,查看表1.A.1中要求的字段值,填入表中。表1.A.1ICMP报文分析报文号源IP目的IP报文格式类型代码标识序列号16192.168.3.183192.168.3.3reply00x0001817192.168.3.3192.168.3.183request00x0001908192.168.3.183192.168.3.3reply00x0001409192.168.3.3192.168.3.183request00x0001561192.168.3.3192.168.3.183request00x00013162192.168.3.183192.168.3.3reply00x000131【x为学号后两位】实验捕获的报文数据截图:报文16报文17报文x报文x+1分析在上表中哪个字段保证了回送请求报文和回送应答报文的一一对应,仔细体会Ping命令的作用。如何保证请求报文和应答报文时一一对应的?答:序号保证了请求报文和回复报文的一一对应。Ping可以检验网络能否想通。步骤4:在PC1上运行Wireshark开始截获报文;步骤5:在PC1上执行Tracert命令,向一个本网络中不存在的主机发送数据报,如:Tracert;步骤6:停止截获报文,将截获的结果保存为“ICMP-2-学号”,分析截获的报文,回答下列问题:截获了报文中哪几种ICMP报文?其类型码和代码各为多少?答:两种请求报文和回复报文。目标主机不可达Type:3(Destinationunreachable)Code:1(Hostunreachable)在截获的报文中,超时报告报文的源地址是多少?这个源地址指定设备和PC1有何关系?答:192.168.3.3这个地址是PC1的网关地址。通过对两次截获的ICMP报文进行综合分析,仔细体会ICMP协议在网络中的作用。答:ICMP报文有两种:差错报告报文和询问报文。其中差错报告报文用来报告差错类型,询问报文用与寻找目标主机应用有ping、tracert,时间戳可以用来计算RTT时间。2)、IP协议分析步骤1:截获PC1上pingPC2的报文,结果保存为“IP-学号”;步骤4:取序号为学号的数据报,分析IP协议的报文格式,完成下列各题:-1)分析IP数据报头的格式,完成表5.2;表5.2IP协议字段报文信息说明版本4IPV4头长20bytes服务类型0回复报文总长度60标识0x0001标志0x00片偏移0生存周期64协议Icmp校验和0x7e97源地址192.168.3.3目的地址192.168.3.183实验捕获的报文数据截图(突出显示分析的报文):1)查看该数据报的源IP地址和目的IP地址,他们分别是哪类地址?体会IP地址的编址方法。答:均为C类地址。1--126为A类地址,128-191为B类地址,192---223为C类地址。3)、IP数据报分片实验步骤1:在PC1、PC2两台计算机上运行Wireshark,为了只截获和实验有关的数据报,设置Wireshark的截获条件为对方主机的IP地址,开始截获报文;步骤2:在PC1上执行如下Ping命令,向主机PC2发送4500B的数据报文:Ping–l4500–n6PC2的IP地址步骤3:停止截获报文,分析截获的报文,回答下列问题:1)以太网的MTU是多少?答:1500,以太网中规定MTU为1500B2)对截获的报文分析,将属于同一ICMP请求报文的分片找出来,主机PC1向主机PC2发送的ICMP请求报文分成了几个分片?答:4个3)若要让主机PC1向主机PC2发送的数据分为3个分片,则Ping命令中的报文长度应为多大?为什么?答:1480*3=4440B,因为MTU为1500,要使报文最长,则其首部应最小即20字节,故报文长度最长为1480*3=44404)将第二个ICMP请求报文的分片信息填入表5.3:表5.3ICMP请求报文分片信息分片序号标识(Identification)标志(Flag)片偏移(Fragment数据长度50x67bb0x0000-147960x67bb0x0014801480-295970x67bb0x0029604440-45074)、ARP协议分析实验步骤1:在PC1、PC2两台计算机上执行如下命令,清除ARP缓存:答:ARP-d步骤2:在PC1、PC2两台计算机上执行如下命令,查看高速缓存中的ARP地址映射表的内容:答:ARP-a步骤3:在PC1和PC2上运行Wireshark截获报文,为了截获和实验内容有关的报文,Wireshark的CaptrueFilter设置为默认方式;步骤4:在主机PC1上执行Ping命令向PC2发送数据报;步骤5:执行完毕,保存截获的报文并命名为“ARP-1-学号”;步骤6:在PC1、PC2两台计算机上再次执行ARP–a命令,查看高速缓存中的ARP地址映射表的内容:1)这次看到的内容和步骤2的内容相同吗?结合两次看到的结果,理解ARP高速缓存的作用。答:内容结果不相同。ARP高速缓存是动态的,每当发送一个指定地点的数据报且高速缓存中不存在当前项目时,ARP便会自动添加该项目。计算机进行路由选择时首先在ARP高速缓存中查找,如果没有找到,再通过广播请求消息来查找。把这次看到到的高速缓存中的ARP地址映射表写出来或给出截图。接口IP地址IP地址InternetAddress物理地址PhysicalAddress类型Type备注192.168.3.100-19-e0-b8-50-f0动态228.227.85.11301-00-5e-63-55-71静态231.192.88.4201-00-5e-40-58-2a静态步骤7:重复步骤4—5,将此结果保存为“ARP-2-学号”;步骤8:打开arp-1-学号,完成以下各题:1))在截获的报文中由几个ARP报文?在以太帧中,ARP协议类型的代码值是什么?答:4个,在以太帧中,ARP协议类型的代码值是IP(0x0800)a)分析arp-1中ARP报文的结构,完成表5.4。表5.4ARP报文分析ARP请求报文ARP应答报文字段报文信息及参数字段报文信息及参数硬件类型Ethernet(1)硬件类型Ethernet(1)协议类型IP(0x0800)协议类型IP(0x0800)硬件地址长度6硬件地址长度6协议地址长度4协议地址长度4操作Request(1)操作Reply(2)源站物理地址(10:78:d2:9d:9b:dc)源站物理地址(10:78:d2:98:7b:42)源站IP地址192.168.3.3源站IP地址192.168.3.183目的站物理地址(10:78:d2:98:7b:42)目的站物理地址(10:78:d2:9d:9b:dc)目的站IP地址192.168.3.183目的站IP地址192.168.3.31.B编程构造IP数据包部分使用C语言构造IP数据包程序。1)IPv4基本定长首部结构体定义structiphdr{ipverlen;u_charip_tos;u_shortip_len;shortip_id;shortip_fragoff;u_charip_ttl;u_charip_prpto;shortip_cksum;IPadderip_src;IPaddrip_dst;U_charip_data[1];}34};2)构造IP报文unsignedchar*Build_IP_Packet(unsignedintd_ip,unsignedints_ip,unsignedcharproto_type,constunsignedchar*buf,intlen,unsignedchar*ippacket,int*iplen){{*iplen=sizeof(structiphdr)+len;Unsignedchar*dbuf=ippacket+sizeof(strctiphdr);Strctiphdr*iph=(strctpihdr*)ippacket;Memcpy(dbuf,buf,len);Iph-version=4;Iph-ih1=5;Iph-tos=0;Iph-toto_len=htons(*iplen);Iph-id=htons(0x65d2);Iph-frag_off=htons(0);Iph-tt1=64;Iph-daddr=d_ip;Iph-saddr=s_ip;Iph-protocol=pro