1、Lab2211307周俊霞211320计算机网络实验抓包 北邮计算机网络 实验二 协议数据的捕获和解析 班级:2011211307 姓名:周俊霞 学号:2011211320 日期:2013年12月28日 实验二:协议数据的捕获和解析1、 实验类别协议分析验证型二.、实验内容和实验目的本次实验主要包含下列内容:1)使用Wireshark 软件捕获在使用ping 命令时产生的ICMP 消息;2)分析网络层IP 包头格式,理解各字段的作用,对于分段和校验和进行验证;3)使用Wireshark 软件捕获在使用ARP 消息,分析其消息格式,理解工作原理;4)使用Wireshark 捕获DHCP 消息,分
2、析其消息序列,理解DHCP功能操作原理;5)使用Wireshark 捕获TCP 消息,分析TCP 报文段头格式,理解连接建立和释放的原理,差错控制原理、序号和窗口管理的原理。通过本实验来深入理解分层体系结构,理解和掌握TCP/IP 协议栈的代表协议IP、TCP、UDP、ICMP、ARP 和DHCP 协议的要点。三、实验设备环境 1 台装有MS Windows 系列操作系统的计算机,能够连接到Internet,并已安装Wireshark 软件。4、 实验步骤(1)准备工作1. 下载 Wireshark 软件并了解其功能和使用方法。2. 确保计算机已经连接到网络。3. 启动 Wireshark1,
3、设置捕获接口(Interface)为本机网卡,选中混杂模(promiscuous mode)捕获选项,设置合适的捕获过滤器(Capture Filter): 对于 ping 命令,设置过滤器为icmp 对于 DHCP 消息,设置过滤器为udp port 67 对于 ARP 消息,设置过滤器为arp 对于通过网页浏览应用来捕获 TCP 消息,设置过滤器为 tcp port 804. 开始捕获; (2) 数据捕获 捕获ICMP 协议数据1. 运行 ping 命令(如:c ping 192.168.0.1),远程主机地址可以是本机地址、网关路由器地址,也可以是域名(如)将捕获到的数据保存为文件。2.
4、 使用 Windows 中ping 命令的-l 选项(例如:cping -l 8000 192.168.0.1),制作大于8000 字节的IP 包并发送,捕获后分析其分段传输的包结构。捕获 DHCP 协议数据1. 使用 ipconfig 命令释放计算机的IP 地址(cipconfig -release);2. 使用 ipconfig 命令重新申请IP 地址(cipconfig -renew)。此时 wireshark 窗口中可以捕获到完整的DHCP 地址分配的流程,将捕获到的数据保存为文件。捕获 ARP 协议数据采用与捕获 DHCP 协议数据相同的方法释放IP 地址并重新申请,在wiresha
5、rk 窗口中可以捕获到ARP 请求和响应消息,保存为文件。捕获 TCP 协议数据打开浏览器,输入一个页面内容较简单网页URL,如;网页全部显示后关闭浏览器。(3) 协议分析运行Wireshark 软件,打开所捕获的数据文件,完成下列分析工作:1. IP 包头分析:对于采用ping 命令-l 选项捕获的ICMP 消息,对承载ICMP 消息的IP 包进行分析,记录包头各字段的值,对照讲义和教材分析各字段的功能,并对于校验和和分段进行验证; 对于 Windows Vista 和Windows 7 操作系统,需要以管理员身份运行;2. ICMP 消息分析:记录并分析ICMP 消息中分析各字段的功能;3
6、. DHCP 消息分析:针对一次地址分配过程(Transaction ID 相同的4 个消息),分析其通信过程,画出地址分配的消息序列图,并记录采用DHCP 协议配置的各个参数。4. ARP 消息分析:对照讲义理解ARP 操作过程,记录分析消息中各字段的功能。5. TCP 报头及消息分析:针对TCP 连接建立、连接释放、数据和应答报文段,对照讲义和教材分析各字段的功能;针对一次完整的TCP 通信过程,画出消息序列图,应包含连接建立、数据传送和连接释放阶段。上述分析工作应在实验报告中进行详细描述,具体要求参见第 9 节。(4) 撰写实验报告 按要求撰写实验报告,对于捕获到的数据进行认真分析,归纳
7、各协议的工作原理和实现要点。 5实验分析1.IP协议分析1)采用ping 命令-l 选项捕获的ICMP 消息字 段 报 文(16进制)内 容版本号-包头长度45版本号IPV4,包头长20字节服务类型00正常时延,正常吞吐量,正常可靠性总长度0078数组分组长120字节标识1a52标识为6738标志00MF=0 DF=0, 不允许分片,片偏移00偏移量为0生存周期40每跳生存时间为64秒协议01携带数据来自ICMP协议头部校验和423aIP头部校验和为16进制423a源地址0a d3 04 2d源地址为10.211.4.45目的地址0a d3 04 27目的地址为10.211.4.39 字 段
8、报 文(16进制)内 容版本号-包头长度45版本号IPV4,包头长20字节服务类型00正常时延,正常吞吐量,正常可靠性总长度0078数组分组长120字节标识1a52标识为6738标志00MF=0 DF=0,不允许分片片偏移0偏移量为0生存周期40每跳生存时间为64秒协议01携带数据来自ICMP协议头部校验和0000IP头部校验和不正确源地址0a d3 04 2d源地址为10.211.4.45目的地址0a d3 04 27目的地址为10.211.4.392)IP包头校验和的校验原理当数据到达时,所有的16位(半字)累加起来,然后再取结果的补码。字 段 报 文(16进制)内 容版本号-包头长度45
9、版本号IPV4,包头长20字节服务类型00正常时延,正常吞吐量,正常可靠性总长度0078数组分组长120字节标识1a52标识为6738标志00MF=0 DF=0,不允许分片,片偏移00偏移量为0生存周期40每跳生存时间为64秒协议01携带数据来自ICMP协议头部校验和423aIP头部校验和为16进制423a源地址0a d3 04 2d源地址为10.211.4.45目的地址0a d3 04 27目的地址为10.211.4.3945000078la5200004001423a0ad3042d0ad3042745 00 -01000101 0000000000 78 -00000000 001110
10、001a 52 -00011010 0101001000 and 00 -00000000 0000000040 and 01 -01000000 0000000142 3a -01000010 001110100a d3 -00001010 1101001104 2d -00000100 001011010a d3 -00001010 1101001104 27 -00000100 00100111简单求和后发现结果为:1111 1111 1111 1111 符合条件,是正确的包,即IP头部校验和为423a是正确的。3)IP包分段原理:首先同一个数据报的所有分段包含同样的Identifica
11、tion(标识)值,同时每一个分段使用DF、MF和offset来表示该分段的信息。 1. DF代表不分段(Dont Fragment),它让路由器不要分割该数据报,因为目标主机无法将分片重组回原来的数据报,而数据报在分段后,此位置0; 2. MF表示更多的分段(More Fragment),除了最后一个分段以外其他所有的分段必须设置这一位,将其置1,最后一个分段置0; 3. Fragment offset分段偏移域指明了该分段在当前数据报中的什么位置上。除了一个数据包的最后一个分段以外,其他所有的分段必须是8字节的倍数,这里8字节是基本分段单位。由截获的数据报来看,一共六段,除第一段offse
12、t为0外,其他各段偏移量为1480的倍数,也即前边每一段数据报(除包头)的长度,1480也为8的倍数,由此指明了各段在当前数据包中的位置。同时,除最后一段MF为0外,其他各段MF为1,表明各段不是一个完整的数据报,而是分割之后形成的分段。2. ICMP 协议分析1) ICMP 的功能ICMP报文被封装在IP包里,并且ICMP协议数据包对IP分组在传送时出现的异常情况进行报告,对IP报文传输时出现的差错、拥塞、路由改变、以及路由器或主机信息的获取等情况,向源端主机提交报告,由源主机采取相应措施,改进传输质量。2 ) 其中有Destination unreachable、time exceeded
13、、source quench、redirect、ECHO and ECHO reply、time stamp request and reply几种不同功能的ICMP报文。记录 ICMP 的包格式,自己查找资料总结各字段的功能。3 ) ICMP协议包构成:前8字节由报文类型(1字节)、代码(1字节)、校验和(2字节),选项部分(4字节)。ICMP报文分为两大类差错报告报文与询问报文,差错报文共有五种、询问报文有两种下图为ICMP请求包TYPE类型为8 code代码为0 checksum校验和为4f8 Identifier(大端表示)为 1 ,(小端表示)为256 sequence number
14、序列号(大端表示)为21,(小端表示)为5376下图ICMP应答包TYPE类型为0 code代码为0 checksum校验和为5748 Identifier(大端表示)为1,(小端表示)为256 sequence number序列号(大端表示)为21,(小端表示)为5376由此可见,请求和应答数据包的区别在于类型,请求包为Type8,而应答包为Type0。ICMP与IP协议同处于TCP/IP模型的网际层,但ICMP报文是封装在IP数据报的数据部分进行传输的。3.DHCP 协议分析1) 对照讲义和教材理解 DHCP 的功能,观察DHCP ACK 消息的各字段,自己查找资料理解各字段的功能,总结采
15、用DHCP 协议可以提供哪些配置参数。 DHCP是动态主机配置协议(Dynamic host configuration protocol)的简称,它提供对于远程主机的自动配置,包括IP地址、路由地址、子网掩码、DNS服务器地址,是一个应用层上的协议。 作为BOOTP的拓展,它的作用是给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。它也是client-server的范例。下图是DHCP ACK消息包含的各字段Message type boot reply(2) 操作码Hardware type Ethernet 硬件类型Hardware a
16、ddress length 6 硬件地址长度Hops 0 跳数Transaction ID 0xb247a900 事务标识Seconds elapsed 0 过去的秒数Client IP address 10.8.168.30 客户IPYour IP address 10.8.168.30 你的主机IP地址Next server IP address 0.0.0.0 下一个服务器的IP地址Relay agent IP address 0.0.0.0 中介代理的IP地址Client MAC address 9c:b7:0d:da:92:19 客户MAC地址DHCP message type DH
17、CP ACK(5) DHCP消息类型Server identifier 192.168.1.1 供应商标识符Subnet mask 255.255.255.0 子网掩码Router 192.168.1.1 路由IP address lease time 2 hours IP地址的租用时间Domain Name server: 10.3.9.4 /10.3.9.5 域名服务器DHCP向网络主机提供配置参数,它由两个基本部分组成:一部分是向网络主机传送专用的配置信息,另一部分是给主机分配网络地址。DHCP是用于向客户传送配置信息的,客户从DHCP服务器那里获得配置信息后应该可以和Internet上
18、任何一台主机通信。在初始化一台主机时并不需要配置所有这些参数,客户和服务器可以通过一种商讨机制决定传送哪些参数。DHCP允许(不要求)客户参数配置不直接与IP协议相关,而且它也不将最加入的主机加入域名系统(DNS)中。根据捕获到消息,画出 DHCP 地址分配过程的消息序列图。注意DHCP 是采用client-server 模式工作的,你捕获到的消息中,DHCP server 是否由路由器充当?是否有DHCP Relay?1 . 执行ipconfig/renew更新所有适配器,由于本地主机没有被分配到IP地址,并且也不知道DHCP服务器的地址,所以发送DHCP Discover报文时,源地址为0
19、.0.0.0,目的地址为255.255.255.255。本地网络上的所有主机都能收到DHCP Discover报文。 2.只有DHCP服务器收到这个DHCP,Discover报文后,向网络广播DHCP Offer报文作为回复。 3.本地主机(0.0.0.0)收到DHCP Offer报文后,向DHCP服务器发送DHCP Request报文 4DHCP(10.3.9.2)服务器收到DHCP Request报文后,回复DHCP ACK报文,给本地主机分配一个IP地址。本地主机就得到了一个临时IP地址(10.8.168.30)。至此四次握手完成。在我捕获到的消息中,DHCP sever由路由器充当,无
20、DHCP relay,因为在同一网段内。4. ARP 协议分析1) 根据捕获到的消息,对照讲义,理解 ARP 的功能和操作原理。本地局域网内的主机用广播的方式发送ARP报文,来获取彼此的硬件地址。 ARP基本功能:在以太网协议中规定,同一局域网中的一台主机要和另一台主机迚行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(ad
21、dress resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。记录 ARP 的包格式,自己查找资料总结各字段的功能。ARP报文的格式: 硬件类型:指明硬件的类型,以太网是1。协议类型:指明发送者映射到数据链路标识的网络层协议的类型; IP对应0x0800。 硬件地址长度:也就是MAC地址的长度,单位是字节,这里是6。 协议地址长度:网络层地址的长度,即IP地址长度,单位是字节。 操作:指明是ARP请求(1)还是ARP应答(2) 剩下的字段都比较简单,不作说明5、 TCP 协议分析1) 对照讲义和教材理解TCP 报文段的首部各字段的功能,以表格的方式总结每个字段的
22、名字、长度和功能。源端口和目的端口域标明了一个连接的两个端点(16位)+(16位)序列号发送TCP包的序列(32位)确认号指定下一个期望的字节(32位)TCP头长度指明在头部TCP头部包含多少个32位的字(4位)+后边的(6位保留位)+(6位标志域)URG用来指示出紧急数据在当前数据段中的位置ACK表示是否包含确认信息PUSH表示这是带有PUSH标志的数据RST被用于重置一个已经混乱的连接SYN被用于建立连接的过程FIN被用于释放一个连接窗口大小表示接收方的窗口大小(16位)校验和提供额外可靠性(16位)紧急指针16位,指向后面是优先数据的字节,在URG标志设置了时才有效可选项:长度不定,但长
23、度必须以字节。如果没有 选项就表示这个一字节的域等于0。 数据的开始处偏移量能够被32整除,一般额外的零以保证TCP头是32位的整数倍。针对连接建立消息和连接释放消息,分析相应标志位和序号的作用,参照讲义中的示例画出连接建立和连接释放过程的消息序列图,在图上标出对应的标志位和序号。 建立连接:在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手: 建立连接时, 客户端发送 syn 包(syn=j)到服务器, 并进入 SYN_SEND 状态,等待服务器确认;第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己 也发送一
24、个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态; 第三次握手:客户端收到服务器的 SYNACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三 次握手。 完成三次握手,客户端与服务器开始传送数据 释放连接: 虽然TCP连接是全双工的,但可将其视为一对单工连接,每个连接单独释放,两个单工之间独立。步骤:客户端1发送一个FIN,用来关闭1到2的数据发送服务器2收到这个FIN,它发回一个ACK,确认序号为收到的序号+1,和SYN一样,一个FIN将占用一个序号服务器2关闭与客户端1的
25、连接,发送一个FIN给客户端1客户端1发回ACK报文确认,并将确认信号设置为收到序号+1 Ack针对 TCP 的数据传输过程中的数据报文段和应答报文段,分析发送序号、应答序号、应答标志位、窗口大小、数据长度、MSS 等字段的作用,参照讲义中的示例画出数据传输过程的消息序列图,其中应包括数据校验错和数据丢失导致的数据重传情形,在图上应标出对应的序号、标志位和窗口大小。 每个TCP报文头部都包含源端口号(source port)和目的端口号(destination port),用于标识和区分源端设备和目的端设备的应用进程。在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组
26、成套接字(socket),唯一的确定一条TCP连接。 序列号(Sequence number)字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序列号对每个字节进行计数。序列号是一个32bits的数。 既然每个传输的字节都被计数,确认序号(Acknowledgement number,32bits)包含发送确认的一端所期望接收到的下一个序号。因此,确认序号应该是上次已成功收到的数据字节序列号加1。 TCP的流量控制由连接的每一端通过声明的窗口大小(windows size)来提供。窗口大小用数据包来表
27、示,例如Windows size=3, 表示一次可以发送三个数据包。窗口大小起始于确认字段指明的值,是一个16bits字段。窗口大小可以调节。 校验和(checksum)字段用于校验TCP报头部分和数据部分的正确性。 最常见的可选字段是MSS(Maximum Segment Size,最大报文大小)。MSS指明本端所能够接收的最大长度的报文段。当一个TCP连接建立时,连接的双方都要通告各自的MSS协商可以传输的最大报文长度。我们常见的MSS有1024(以太网可达1460字节)字节。对照教材 6-33 图,理解TCP 状态转换的过程,按照你所捕获的消息,画出Client 侧的状态转换图,并进行解
28、释。 当客户机器上的一个应用程序发出CONNECT请求的时候,本地的TCP创建一条连接记录,并将它标记为SYN SENT状态,然后发送一个SYN数据段。当SYN+ACK到达时候,三步握手完成,连接建立开始发送和接收数据。 当应用结束时,发出CLOSE原语,从而使本地的TCp实体发送一个FIN数据段,并等待相应ACK,当ACK到达时,发生一次状态迁移,切换到FIN WAIT 2,而且连接的一个方向现在被关闭。当另一方也关闭的时候,一个FIN数据段会到来,然后它被确认。现在双方都已经关闭了,但是TCP要等待一段最大的分组生存期的时间,以确保该链接的所有分组都已经消失了,以防万一发生确认被丢失的情形
29、。当定时器到期之后,TCP删除该链接记录。 当客户完成的时候,它执行CLOSE,从而导致发送一个FIN到达服务器。然后,服务器接到信号,当它也执行CLOSE的时候,TCP实体给客户发送一个FIN数据段。当客户的确认回来的时候,服务器释放该链接,并且删除相应的链接记录。实验总结: 1.通过本实验学到了不少的东西,毕竟只看课本上的IP头部是比较空洞的,只有接触软件,通过软件去体会硬件的实际情况,才知道许多实际的实现方法。 2. 当然,我们现在做的工作只是在已有的东西上查看,以查看IP头为例,可以看到IP的20个字节的实际内容,以及每一项对应的区域占了几位,代表了什么意思,比如生命周期,有8位,大小就代表剩余的生命,即还可以再经过几次路由转发;但是,如果往深处去思考的话,其实会更有意思;比如,前辈们为什么要这么做,这当然每一个区域都是经过一定的考究的; 3. 软件下载的过程浪费了不少时间,这让我很是难过啊;在网上各种搜索出问题的地方,是winpcap的问题,当你想要做一件事,可能开始感觉它挺简单,但实际做起来就可能会出现一些不可预见的问题你要做的就是快速的解决这些琐碎的问题。 4. 关于头部校验和,把各项简单求和,最高位可能产生进位,应该把这些进位累加到最低位上去,从而验证checksum是否正确。 5. 总之,这个实
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1