(精选)北邮计网实验协议数据的捕获与解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络
实验二:协议数据的捕获和解析
一、实验类别
协议分析验证型
二.、实验内容和实验目的
本次实验主要包含下列内容:
1)使用Wireshark 软件捕获在使用ping 命令时产生的ICMP 消息;
2)分析网络层IP 包头格式,理解各字段的作用,对于分段和校验和进行验证;
3)使用Wireshark 软件捕获在使用ARP 消息,分析其消息格式,理解其工作原理;
4)使用Wireshark 捕获DHCP 消息,分析其消息序列,理解DHCP 的功能和操作原理;
5)使用Wireshark 捕获TCP 消息,分析TCP 报文段头格式,理解连接建立和释放的原理,差错控制原理、序号和窗口管理的原理。
通过本实验来深入理解分层体系结构,理解和掌握TCP/IP 协议栈的代表协议——IP、TCP、UDP、ICMP、ARP 和DHCP 协议的要点。
三、实验设备环境
1 台装有MS Windows 系列操作系统的计算机,能够连接到Internet,并已安装Wireshark 软件。
四、实验步骤
(1)准备工作
1. 下载Wireshark 软件并了解其功能和使用方法。
2. 确保计算机已经连接到网络。
3. 启动Wireshark1,设置捕获接口(Interface)为本机网卡,选中混杂模式(promiscuous mode)捕获选项,设置合适的捕获过滤器(Capture Filter):
对于ping 命令,设置过滤器为icmp
对于DHCP 消息,设置过滤器为udp port 67
对于ARP 消息,设置过滤器为arp
对于通过网页浏览应用来捕获TCP 消息,设置过滤器为tcp port 80
4.开始捕获。
(2) 数据捕获
捕获ICMP 协议数据
1. 运行ping 命令(例如:c> ping 19
2.168.0.1),远程主机地址可以是本机地址、网关路由器地
址,也可以是域名(如)。
将捕获到的数据保存为文件。
2. 使用Windows 中ping 命令的-l 选项(例如:c>ping -l 8000 192.168.0.1),制作大于
8000 字
节的IP 包并发送,捕获后分析其分段传输的包结构。
捕获 DHCP 协议数据
1. 使用ipconfig 命令释放计算机的IP 地址(c>ipconfig -release);
2. 使用ipconfig 命令重新申请IP 地址(c>ipconfig -renew)。
此时wireshark 窗口中可以捕获到完整的DHCP 地址分配的流程,将捕获到的数据保存为文件。
捕获 ARP 协议数据
采用与捕获 DHCP 协议数据相同的方法释放IP 地址并重新申请,在wireshark 窗口中可以捕获到ARP 请求和响应消息,保存为文件。
捕获 TCP 协议数据
打开浏览器,输入一个页面内容较简单网页URL,如;网页全部显示后关闭浏览器。
(3) 协议分析
运行Wireshark 软件,打开所捕获的数据文件,完成下列分析工作:
1. IP 包头分析:对于采用ping 命令-l 选项捕获的ICMP 消息,对承载ICMP 消息的IP 包进行分析,记录包头各字段的值,对照讲义和教材分析各字段的功能,并对于校验和和分段进行验证;对于Windows Vista 和Windows 7 操作系统,需要以管理员身份运行;
2. ICMP 消息分析:记录并分析ICMP 消息中分析各字段的功能;
3. DHCP 消息分析:针对一次地址分配过程(Transaction ID 相同的4 个消息),分析其通信过程,
画出地址分配的消息序列图,并记录采用DHCP 协议配置的各个参数。
4. ARP 消息分析:对照讲义理解ARP 的操作过程,记录并分析消息中各字段的功能。
5. TCP 报头及消息分析:针对TCP 连接建立、连接释放、数据和应答报文段,对照讲义和教材分
析各字段的功能;针对一次完整的TCP 通信过程,画出消息序列图,应包含连接建立、数据传
送和连接释放阶段。
上述分析工作应在实验报告中进行详细描述,具体要求参见第9 节。
(4)撰写实验报告
按要求撰写实验报告,对于捕获到的数据进行认真分析,归纳各协议的工作原理和实现要点。
五、实验分析
1.IP协议分析
2)
IP包头校验和的校验原理
4,5 and 0------->01000101 00000000
003c ------->00000000 00111100
148a ------->00010100 10001010
00 and 0 ------->00000000 00000000
40 and 1 ------->01000000 00000001
8ae6 ------->10001010 11100110
192.168 ------->11000000 10101000
1.102 ------->00000001 01100110
211.68 ------->11010011 01000100
69.254 ------->01000101 11111110
简单求和后发现结果为:1111 1111 1111 1111 符合条件,是正确的包,即IP头部校验和为8ae6是正确的。
..(。
)
3)
IP包分段原理:
首先同一个数据报的所有分段包含同样的Identification(标识)值,同时每一个分段使用DF、MF和offset来表示该分段的信息。
DF代表不分段(Dont Fragment),它让路由器不要分割该数据报,因为目标主机无法将分片重组回原来的数据报,而数据报在分段后,此位置0;
MF表示更多的分段(More Fragment),除了最后一个分段以外其他所有的分段必须设置这一位,将其置1,最后一个分段置0;
Fragment offset分段偏移域指明了该分段在当前数据报中的什么位置上。
除了一个数据包的最后一个分段以外,其他所有的分段必须是8字节的倍数,这里8字节是基本分段单位。
由截获的数据报来看,一共六段,除第一段offset为0外,其他各段偏移量为1480的倍数,也即前边每一段数据报(除包头)的长度,1480也为8的倍数,由此指明了各段在当前数据包中的位置。
同时,除最后一段MF为0外,其他各段MF为1,表明各段不是一个完整的数据报,而是分割之后形成的分段。
2. ICMP 协议分析
1)ICMP 的功能
ICMP报文被封装在IP包里,并且ICMP协议数据包对IP分组在传送时出现的异常情况进行报告,对IP报文传输时出现的差错、拥塞、路由改变、以及路由器或主机信息的获取等情况,向源端主机提交报告,由源主机采取相应措施,改进传输质量。
其中有Destination un reachable、time exceeded、source quench、redirect、ECHO and ECHO reply、time stamp request and reply几种不同功能的ICMP报文。
2)记录ICMP 的包格式,自己查找资料总结各字段的功能。
ICMP协议包构成:前8字节由报文类型(1字节)、代码(1字节)、校验和(2字节),选项部分(4字节)。
ICMP报文分为两大类——差错报告报文与询问报文,差错报文共有五种、询问报文有两种
下图为ICMP请求包
TYPE类型为8 code代码为0 checksum校验和为4d2c Identifier(大端表示)为1
(小端表示)为256 sequence number序列号(大端表示)为47,(小端表示)为12032
下图ICMP应答包
TYPE类型为0 code代码为0 checksum校验和为552c Identifier(大端表示)为1
(小端表示)为256 sequence number序列号(大端表示)为47,(小端表示)为12032
由此可见,请求和应答数据包的区别在于类型,请求包为Type8,而应答包为Type0。
ICMP 与IP协议同处于TCP/IP模型的网际层,但ICMP报文是封装在IP数据报的数据部分进行传输的。
3.DHCP 协议分析
1)对照讲义和教材理解DHCP 的功能,观察DHCP ACK 消息的各字段,自己查找资料理解各字段的功能,总结采用DHCP 协议可以提供哪些配置参数。
DHCP是动态主机配置协议(Dynamic host configuration protocol)的简称,它提供对于远程主机的自动配置,包括IP地址、路由地址、子网掩码、DNS服务器地址,是一个应用层上的协议。
作为BOOTP的拓展,它的作用是给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
它也是client-server的范例。
下图是DHCP ACK消息包含的各字段
Message type boot reply(2) 操作码
Hardware type Ethernet 硬件类型
Hardware address length 6 硬件地址长度
Hops 0 跳数
Transaction ID 0xe4c5866c 事务标识
Seconds elapsed 0 过去的秒数
Client IP address 0.0.0.0 客户IP
Your IP address 192.168.1.108 你的主机IP地址
Next server IP address 0.0.0.0 下一个服务器的IP地址Relay agent IP address 0.0.0.0 中介代理的IP地址
Client MAC address 58:94:6b:4a:cd:28 客户MAC地址
DHCP message type DHCP 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上任何一台主机通信。
在初始化一台主机时并不需要配置所有这些参数,客户和服务器可以通过一种商讨机制决定传送哪些参数。
DHCP允许(不要求)客户参数配置不直接与IP协议相关,而且它也不将最加入的主机加入域名系统(DNS)中。
2)根据捕获到消息,画出DHCP 地址分配过程的消息序列图。
注意DHCP 是采用client-server 模式工作的,你捕获到的消息中,DHCP server 是否由路由器充当?是否有DHCP Relay?
1 . 执行ipconfig/renew更新所有适配器,由于本地主机没有被分配到IP地址,并且也不知道DHCP服务器的地址,所以发送DHCP
Discover报文时,源地址为0.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报文
4.DHCP(192.168.1.1)服务器收到DHCP Request报文后,回复DHCP ACK报文,给本地主机分配一个IP地址。
本地主机就得到了一个临时IP地址(192.168.1.10 8)。
至此四次握手完成。
在我捕获到的消息中,DHCP sever由路由器充当,无DHCP relay,因为在同一网段内。
4. ARP 协议分析
1)根据捕获到的消息,对照讲义,理解ARP 的功能和操作原理。
本地局域网内的主机用广播的方式发送ARP报文,来获取彼此的硬件地址。
ARP基本功能:在以太网协议中规定,同一局域网中的一台主机要和另一台主机迚行直接通信,必须要知道目标主机的MAC地址。
而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。
这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。
于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。
这就是ARP协议要做的事情。
所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
2)记录ARP 的包格式,自己查找资料总结各字段的功能。
ARP报文的格式:①硬件类型:指明硬件的类型,以太网是1。
②协议类型:指明发送者映射到数据链路标识的网络层协议的类型;IP对应0x0800。
③硬件地址长度:也就是MAC地址的长度,单位是字节,这里是6。
④协议地址长度:网络层地址的长度,即IP地址长度,单位是字节。
⑤操作:指明是ARP请求(1)还是ARP应答(2)⑥剩下的字段都比较简单,不作说明
5、 TCP 协议分析
1)对照讲义和教材理解TCP 报文段的首部各字段的功能,以表格的方式总结每个字段的名字、长度和功能。
源端口和目的端口域标明了一个连接的两个端点(16位)+(16位) 序列号发送TCP包的序列(32位)
确认号指定下一个期望的字节(32位)
TCP头长度指明在头部TCP 头部包含多少个32位的字
(4位)+后边的(6位保留位)+(6位标志域)URG
用来
指示
出紧
急数
据在
当前
数据
段中
的位
置
ACK
表示
是否
包含
确认
信息
PUSH
表示
这是
带有
PUSH
标志
的数
据
RST
被用
于重
置一
个已
经混
乱的
连接
SYN
被用
于建
立连
接的
过程
FIN被
用于
释放
一个
连接
窗口
大小
表示
接收
方的
窗口
大小
(16位)
校验和提供额外可靠性(16位)紧急指针16位,指向后面是优先数据的字节,在URG标志设置了时才有效
可选项:长度不定,但长度必须以字节。
如果没有选项就表示这个一字节的域等于0。
数据的开始处偏移量能够被32整除,一般额外的零以保证TCP头是32位的整数倍。
针对连接建立消息和连接释放消息,分析相应标志位和序号的作用,参照讲义中的示例画出连接建立和连接释放过程的消息序列图,在图上标出对应的标志位和序号。
建立连接:
在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认;第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据
释放连接:
虽然TCP连接是全双工的,但可将其视为一对单工连接,每个连接单独释放,两个单工之间独立。
步骤:
(1)客户端1发送一个FIN,用来关闭1到2的数据发送
(2)服务器2收到这个FIN,它发回一个ACK,确认序号为收到的序号+1,和SYN一样,一个FIN将占用一个序号
(3)服务器2关闭与客户端1的连接,发送一个FIN给客户端1
(4)客户端1发回ACK报文确认,并将确认信号设置为收到序号+1
2)针对TCP 的数据传输过程中的数据报文段和应答报文段,分析发送序号、应答序号、应答标志位、窗口大小、数据长度、MSS 等字段的作用,参照讲义中的示例画出数据传输过程的消息序列图,其中应包括数据校验错和数据丢失导致的数据重传情形,在图上应标出对应的序号、标志位和窗口大小。
每个TCP报文头部都包含源端口号(source port)和目的端口号(destination port),用于标识和区分源端设备和目的端设备的应用进程。
在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接字(socket),唯一的确定一条TCP连接。
序列号(Sequence number)字段用来标识TCP源端设备向目的端设备发送的字节流,
它表示在这个报文段中的第一个数据字节。
如果将字节流看作在两个应用程序间的单向流动,则TCP用序列号对每个字节进行计数。
序列号是一个32bits的数。
既然每个传输的字节都被计数,确认序号(Acknowledgement number,32bits)包含发送确认的一端所期望接收到的下一个序号。
因此,确认序号应该是上次已成功收到的数据字节序列号加1。
TCP的流量控制由连接的每一端通过声明的窗口大小(windows size)来提供。
窗口大小用数据包来表示,例如Windows size=3, 表示一次可以发送三个数据包。
窗口大小起始于确认字段指明的值,是一个16bits字段。
窗口大小可以调节。
校验和(checksum)字段用于校验TCP报头部分和数据部分的正确性。
最常见的可选字段是MSS(Maximum Segment Size,最大报文大小)。
MSS指明本端所能够接收的最大长度的报文段。
当一个TCP连接建立时,连接的双方都要通告各自的MSS 协商可以传输的最大报文长度。
我们常见的MSS有1024(以太网可达1460字节)字节。
3)对照教材6-33 图,理解TCP 状态转换的过程,按照你所捕获的消息,画出Client 侧的状态转换图,并进行解释。
当客户机器上的一个应用程序发出CONNECT请求的时候,本地的TCP创建一条连接记录,并将它标记为SYN SENT状态,然后发送一个SYN数据段。
当SYN+ACK到达时候,三步握手完成,连接建立开始发送和接收数据。
当应用结束时,发出CLOSE原语,从而使本地的TCp实体发送一个FIN数据段,并等待相应ACK,当ACK到达时,发生一次状态迁移,切换到FIN WAIT 2,而且连接的一个方向现在被关闭。
当另一方也关闭的时候,一个FIN数据段会到来,然后它被确认。
现在双方都已经关闭了,但是TCP要等待一段最大的分组生存期的时间,以确保该链接的所有分组都已经消失了,以防万一发生确认被丢失的情形。
当定时器到期之后,TCP删除该链接记录。
当客户完成的时候,它执行CLOSE,从而导致发送一个FIN到达服务器。
然后,服务器接到信号,当它也执行CLOSE的时候,TCP实体给客户发送一个FIN数据段。
当客户的确认回来的时候,服务器释放该链接,并且删除相应的链接记录。
六、实验总结
1.通过本实验更加深刻了课堂内学习的知识。
2.实验过程很累人,实际花费超过了6个小时,但是也是一种提高过程。
3.并且在验证头部校验和的时候,尽管是把各项简单求和,但最高位可能产生进位,这时候应该把这些进位累加到最低位上去,从而验证checksum是否正确。
这块在计算时,一直疏忽了,后来才反应过来。
4.最后一点,本次实验结束之后我们都感觉自己有较大的提高和认识。
5.
6.
7.
8.
9.
(注:文档可能无法思考全面,请浏览后下载,供参考。
可复制、编制,期待你的好评与关注)
10.
11.。