(精选)北邮计网实验协议数据的捕获与解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.。

相关文档
最新文档