计算机网络实验2.docx
- 文档编号:9280249
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:18
- 大小:384.46KB
计算机网络实验2.docx
《计算机网络实验2.docx》由会员分享,可在线阅读,更多相关《计算机网络实验2.docx(18页珍藏版)》请在冰豆网上搜索。
计算机网络实验2
计算机网络
实验二
协议数据的捕获和解析
班级:
2013211306
姓名:
黄明
学号:
2013211330
日期:
2015年6月18日
实验二:
协议数据的捕获和解析
1.实验类别
协议分析验证型
2.实验内容和实验目的
本次实验主要包含下列内容:
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协议的要点。
3.实验组人数
每组1人,独立完成数据捕获工作、进行分析并撰写实验报告。
4.实验设备环境
1台装有MSWindows系列操作系统的计算机,要求能够连接到Internet,并安装Wireshark软件。
5.实验步骤
5.1准备工作
1.下载Wireshark软件并了解其功能和使用方法。
2.确保计算机已经连接到网络。
3.启动Wireshark1,设置捕获接口(Interface)为本机网卡,选中混杂模式(promiscuousmode)
捕获选项,设置合适的捕获过滤器(CaptureFilter):
对于ping命令,设置过滤器为icmp
对于DHCP消息,设置过滤器为udpport67
对于ARP消息,设置过滤器为arp
对于通过网页浏览应用来捕获TCP消息,设置过滤器为tcpport80
4.开始捕获。
5.2数据捕获
5.2.1捕获ICMP协议数据
1.运行ping命令(例如:
c>ping192.168.0.1),远程主机地址可以是本机地址、网关路由器地
址,也可以是域名(如)。
将捕获到的数据保存为文件。
2.使用Windows中ping命令的-l选项(例如:
c>ping-l8000192.168.0.1),制作大于8000字
节的IP包并发送,捕获后分析其分段传输的包结构。
5.2.2捕获DHCP协议数据
1.使用ipconfig命令释放计算机的IP地址(c>ipconfig-release);
2.使用ipconfig命令重新申请IP地址(c>ipconfig-renew)。
此时wireshark窗口中可以捕获到完整的DHCP地址分配的流程,将捕获到的数据保存为文件。
5.2.3捕获ARP协议数据
采用与7.2.2相同的方法释放IP地址并重新申请,在wireshark窗口中可以捕获到ARP请求和响应消息,保存为文件。
5.2.4捕获TCP协议数据
打开浏览器,输入一个页面内容较简单的网页的URL,如;网页全部显示后
关闭浏览器。
5.3协议分析
运行Wireshark软件,打开所捕获的数据文件,完成下列分析工作:
1.IP包头分析:
对于采用ping命令-l选项捕获的ICMP消息,对承载ICMP消息的IP包进行分析,
记录包头各字段的值,对照讲义和教材分析各字段的功能,并对于校验和和分段进行验证;
2.ICMP消息分析:
记录并分析ICMP消息中分析各字段的功能;
3.DHCP消息分析:
针对一次地址分配过程(TransactionID相同的4个消息),分析其通信过程,
画出地址分配的消息序列图,并记录采用DHCP协议配置的各个参数。
4.ARP消息分析:
对照讲义理解ARP的操作过程,记录并分析消息中各字段的功能。
5.TCP报头及消息分析:
针对TCP连接建立、连接释放、数据和应答报文段,对照讲义和教材分
析各字段的功能;针对一次完整的TCP通信过程,画出消息序列图,应包含连接建立、数据传
送和连接释放阶段。
上述分析工作应在实验报告中进行详细描述,具体要求参见第9节。
5.4撰写实验报告
按第9节的要求撰写实验报告,对于捕获到的数据进行认真分析,归纳各协议的工作原理和实现要
点。
6.实验步骤和实验结果
6.1:
IP协议分析
分组格式:
实验结果:
1)采用ping命令-l选项捕获的TCP消息
字段
报文(16进制)
内容
包头长度
45
包头长度20字节
服务类型
00
正常时延、吞吐量、可靠性
总长度
0028
数据分组长40字节
标识
9d9d
标识为40349
标志
40
MF=0,DF=1,允许分片.
片偏移
4000
片偏移量为0
生存周期
33
生存周期为51秒
协议
06
使用TCP协议
首部校验和
36b7
IP头部校验和为36b7
源地址
da1e67ed
源地址:
218.30.103.237
目标地址
0ace26a2
目标地址:
10.206.38.162
2)校验原理及分析:
检验和算法可以分成两步来实现。
首先在发送端,有以下三步:
1.把即将发送的IP头部中的检验和设置为0,然后以16位为一个间隔,将IP头部分成许多个16位的字段;
2.将第1步获得的所有字段进行二进制相加求和;
3.把最终结果取反,就得到检验和,再将该值填充到IP头部。
其次在接收端,也有相应的三步:
1.把接收到的IP头部分成16位一个间隔的字段集合;
2.所有字段进行二进制相加求和;
3.将最终结果取反,判断该结果是否为0,若为0,则说明检验和正确,若不为0,则协议栈会丢掉这个包。
计算:
4500+0028+9d9d+4000+3306+36b7+da1e+67ed+0ace+26da=2fffd;
2fffd+0002=2ffff;
取反码得到0,校验正确。
3)IP包分段原理:
首先同一个数据报的所有分段包含同样的Identification(标识)值,同时每一个分段使用DF、MF和offset来表示该分段的信息。
1.DF代表不分段(Don’tFragment),它让路由器不要分割该数据报,因为目标主机无法将分片重组回原来的数据报,而数据报在分段后,此位置0;
2.MF表示更多的分段(MoreFragment),除了最后一个分段以外其他所有的分段必须设置这一位,将其置1,最后一个分段置0;
3.Fragmentoffset分段偏移域指明了该分段在当前数据报中的什么位置上。
除了一个数据包的最后一个分段以外,其他所有的分段必须是8字节的倍数,这里8字节是基本分段单位。
由截获的数据报来看,一共六段,除第一段offset为0外,其他各段偏移量为1480的倍数,也即前边每一段数据报(除包头)的长度,1480也为8的倍数,由此指明了各段在当前数据包中的位置。
同时,除最后一段MF为0外,其他各段MF为1,表明各段不是一个完整的数据报,而是分割之后形成的分段。
6.1ICMP分组
分组格式:
0001020304050607080910111213141516171819202122232425262728293031
ip头部(20字节)
类型(0、8)
代码(0)
校验和
标识符
序列号
选项(若有)
实验结果:
1)ICMP功能:
ICMP是(InternetControlMessageProtocol)Internet控制器报文协议。
他是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
对IP报文传输时出现的差错、拥塞、路由改变、以及路由器或主机信息的获取等情况,向源端主机提交报告,由源主机采取相应措施,改进传输质量。
2)各字段功能:
字段
报文
解释
类型
Type:
0
Echo响应
代码
Code:
0
Echo响应
校验和
checksum:
0xf3cb
校验和为0xf3cb校验正确
标识符
Identifier(BE):
1
Identifier(LE):
256
标识符
序列号
Sequencenumber(BE):
41
Sequencenumber(LE):
10496
序列号
3.DCHP协议分析
分组格式:
实验结果:
1)各字段功能
OP:
若是client送给server的封包,设为1,反向为2。
HTYPE:
硬件类别,Ethernet为1。
HLEN:
硬件地址长度,Ethernet为6。
HOPS:
若封包需经过router传送,每站加1,若在同一内,为0。
TRANSACTIONID:
DHCPREQUEST时产生的数值,以作
DHCPREPLY时的依据。
SECONDS:
Client端启动时间(秒)。
FLAGS:
从0到15共16bits,最左一bit为1时表示server将以广播方式传送封包给client,其余尚未使用。
Ciaddr:
要是client端想继续使用之前取得之IP地址,则列于这里。
Yiaddr:
从server送回client之DHCPOFFER与DHCPACK封包中,此栏填写分配给client的IP地址。
Siaddr:
若client需要透过网络开机,从server送出之DHCPOFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在server之地址。
Giaddr:
若需跨网域进行DHCP发放,此栏为relayagent的地址,否则为0。
Chaddr:
Client之硬件地址。
Sname:
Server之名称字符串,以0x00结尾。
File:
若client需要透过网络开机,此栏将指出开机程序名称,稍后以TFTP传送。
Options:
允许厂商定议选项(Vendor-SpecificArea),以提供更多的设定信息查看DHCP的四次握手获得IP地址,缺省路由DNS等参数的过程。
在DOS窗口执行命令ipconfig/release先释放已经申请的IP地址。
2)
1.执行ipconfig/renew更新所有适配器,由于本地主机没有被分配到IP地址,并且也不知道DHCP服务器的地址,所以发送DHCPDiscover报文时,源地址为0.0.0.0,目的地址为255.255.255.255。
本地网络上的所有主机都能收到DHCPDiscover报文。
2.只有DHCP服务器收到这个DHCP,Discover报文后,向网络广播DHCPOffer报文作为回复。
3.本地主机(0.0.0.0)收到DHCPOffer报文后,向DHCP服务器发送DHCPRequest报文
4.DHCP(10.3.9.2)服务器收到DHCPRequest报文后,回复DHCPACK报文,给本地主机分配一个IP地址。
本地主机就得到了一个临时IP地址(10.8.168.30)。
至此四次握手完成。
在我捕获到的消息中,DHCPsever由路由器充当,无DHCPrelay,因为在同一网段内。
4.ARP协议分析
ARP分组格式:
实验结果:
本地局域网内的主机用广播的方式发送ARP报文,来获取彼此的硬件地址。
ARP基本功能:
在以太网协议中规定,同一局域网中的一台主机要和另一台主机迚行直接通信,必须要知道目标主机的MAC地址。
而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。
这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。
于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。
这就是ARP协议要做的事情。
所谓地址解析(addressresolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
ARP报文的格式:
①硬件类型:
指明硬件的类型,以太网是1。
②协议类型:
指明发送者映射到数据链路标识的网络层协议的类型;
IP对应0x0800。
③硬件地址长度:
也就是MAC地址的长度,单位是字节,这里是6。
④协议地址长度:
网络层地址的长度,即IP地址长度,单位是字节。
⑤操作:
指明是ARP请求、还是ARP应答。
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位的整数倍。
2)针对连接建立消息和连接释放消息,分析相应标志位和序号的作用,参照讲义中的示例画出连接建立和连接释放过程的消息序列图,在图上标出对应的标志位和序号。
建立连接:
在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发送一个FIN,用来关闭1到2的数据发送
服务器2收到这个FIN,它发回一个ACK,确认序号为收到的序号+1,和SYN一样,一个FIN将占用一个序号
服务器2关闭与客户端1的连接,发送一个FIN给客户端1
客户端1发回ACK报文确认,并将确认信号设置为收到序号+1
3)针对TCP的数据传输过程中的数据报文段和应答报文段,分析发送序号、应答序号、应答标志位、窗口大小、数据长度、MSS等字段的作用,参照讲义中的示例画出数据传输过程的消息序列图,其中应包括数据校验错和数据丢失导致的数据重传情形,在图上应标出对应的序号、标志位和窗口大小。
每个TCP报文头部都包含源端口号(sourceport)和目的端口号(destinationport),用于标识和区分源端设备和目的端设备的应用进程。
在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接字(socket),唯一的确定一条TCP连接。
序列号(Sequencenumber)字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第一个数据字节。
如果将字节流看作在两个应用程序间的单向流动,则TCP用序列号对每个字节进行计数。
序列号是一个32bits的数。
既然每个传输的字节都被计数,确认序号(Acknowledgementnumber,32bits)包含发送确认的一端所期望接收到的下一个序号。
因此,确认序号应该是上次已成功收到的数据字节序列号加1。
TCP的流量控制由连接的每一端通过声明的窗口大小(windowssize)来提供。
窗口大小用数据包来表示,例如Windowssize=3,表示一次可以发送三个数据包。
窗口大小起始于确认字段指明的值,是一个16bits字段。
窗口大小可以调节。
校验和(checksum)字段用于校验TCP报头部分和数据部分的正确性。
最常见的可选字段是MSS(MaximumSegmentSize,最大报文大小)。
MSS指明本端所能够接收的最大长度的报文段。
当一个TCP连接建立时,连接的双方都要通告各自的MSS协商可以传输的最大报文长度。
我们常见的MSS有1024(以太网可达1460字节)字节。
4)对照教材6-33图,理解TCP状态转换的过程,按照你所捕获的消息,画出Client侧的状态转换图,并进行解释。
当客户机器上的一个应用程序发出CONNECT请求的时候,本地的TCP创建一条连接记录,并将它标记为SYNSENT状态,然后发送一个SYN数据段。
当SYN+ACK到达时候,三步握手完成,连接建立开始发送和接收数据。
当应用结束时,发出CLOSE原语,从而使本地的TCp实体发送一个FIN数据段,并等待相应ACK,当ACK到达时,发生一次状态迁移,切换到FINWAIT2,而且连接的一个方向现在被关闭。
当另一方也关闭的时候,一个FIN数据段会到来,然后它被确认。
现在双方都已经关闭了,但是TCP要等待一段最大的分组生存期的时间,以确保该链接的所有分组都已经消失了,以防万一发生确认被丢失的情形。
当定时器到期之后,TCP删除该链接记录。
当客户完成的时候,它执行CLOSE,从而导致发送一个FIN到达服务器。
然后,服务器接到信号,当它也执行CLOSE的时候,TCP实体给客户发送一个FIN数据段。
当客户的确认回来的时候,服务器释放该链接,并且删除相应的链接记录。
7.实验总结:
通过本次实验,我学到了很多东西,不仅仅是理论知识,也通过实践,有了一定的动手能力。
通过wireshark软件抓包,也是一种新的体验。
通过此次实验,对很多协议有了清晰明确的认识,而非以前仅仅停留在理论上.例如:
IP的各个字段,分段,校验和,ICMP的异常情况报告,通过请求应答机制,以及个字段的含义等。
虽然花了不少时间,但是我认为还是值得的。
在临近期末之时,通过实验,再有对比的情况下,详细而深入的复习了IP协议。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)