Lab2211307周俊霞211320计算机网络实验抓包.docx
- 文档编号:29853040
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:27
- 大小:3.81MB
Lab2211307周俊霞211320计算机网络实验抓包.docx
《Lab2211307周俊霞211320计算机网络实验抓包.docx》由会员分享,可在线阅读,更多相关《Lab2211307周俊霞211320计算机网络实验抓包.docx(27页珍藏版)》请在冰豆网上搜索。
Lab2211307周俊霞211320计算机网络实验抓包
北邮计算机网络
实验二
协议数据的捕获和解析
班级:
2011211307
姓名:
周俊霞
学号:
2011211320
日期:
2013年12月28日
实验二:
协议数据的捕获和解析
1、实验类别
协议分析验证型
二.、实验内容和实验目的
本次实验主要包含下列内容:
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台装有MSWindows系列操作系统的计算机,能够连接到Internet,并已安装Wireshark软件。
4、实验步骤
(1)准备工作
1.下载Wireshark软件并了解其功能和使用方法。
2.确保计算机已经连接到网络。
3.启动Wireshark1,设置捕获接口(Interface)为本机网卡,选中混杂模(promiscuousmode)捕获选项,设置合适的捕获过滤器(CaptureFilter):
对于ping命令,设置过滤器为icmp
对于DHCP消息,设置过滤器为udpport67
对于ARP消息,设置过滤器为arp
对于通过网页浏览应用来捕获TCP消息,设置过滤器为tcpport80
4.开始捕获;
(2)数据捕获
捕获ICMP协议数据
1.运行ping命令(如:
c>ping192.168.0.1),远程主机地址可以是本机地址、网关路由器地址,也可以是域名(如)将捕获到的数据保存为文件。
2.使用Windows中ping命令的-l选项(例如:
c>ping-l8000192.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包进行分析,记录包头各字段的值,对照讲义和教材分析各字段的功能,并对于校验和和分段进行验证;对于WindowsVista和Windows7操作系统,需要以管理员身份运行;
2.ICMP消息分析:
记录并分析ICMP消息中分析各字段的功能;
3.DHCP消息分析:
针对一次地址分配过程(TransactionID相同的4个消息),分析其通信过程,
画出地址分配的消息序列图,并记录采用DHCP协议配置的各个参数。
4.ARP消息分析:
对照讲义理解ARP操作过程,记录分析消息中各字段的功能。
5.TCP报头及消息分析:
针对TCP连接建立、连接释放、数据和应答报文段,对照讲义和教材分析各字段的功能;针对一次完整的TCP通信过程,画出消息序列图,应包含连接建立、数据传送和连接释放阶段。
上述分析工作应在实验报告中进行详细描述,具体要求参见第9节。
(4)撰写实验报告
按要求撰写实验报告,对于捕获到的数据进行认真分析,归纳各协议的工作原理和实现要点。
5.
实验分析
1.IP协议分析
1)采用ping命令-l选项捕获的ICMP消息
字段
报文(16进制)
内容
版本号-包头长度
45
版本号IPV4,包头长20字节
服务类型
00
正常时延,正常吞吐量,正常可靠性
总长度
0078
数组分组长120字节
标识
1a52
标识为6738
标志
00
MF=0DF=0,不允许分片,
片偏移
00
偏移量为0
生存周期
40
每跳生存时间为64秒
协议
01
携带数据来自ICMP协议
头部校验和
423a
IP头部校验和为16进制423a
源地址
0ad3042d
源地址为10.211.4.45
目的地址
0ad30427
目的地址为10.211.4.39
字段
报文(16进制)
内容
版本号-包头长度
45
版本号IPV4,包头长20字节
服务类型
00
正常时延,正常吞吐量,正常可靠性
总长度
0078
数组分组长120字节
标识
1a52
标识为6738
标志
00
MF=0DF=0,不允许分片
片偏移
0
偏移量为0
生存周期
40
每跳生存时间为64秒
协议
01
携带数据来自ICMP协议
头部校验和
0000
IP头部校验和不正确
源地址
0ad3042d
源地址为10.211.4.45
目的地址
0ad30427
目的地址为10.211.4.39
2)IP包头校验和的校验原理
当数据到达时,所有的16位(半字)累加起来,然后再取结果的补码。
字段
报文(16进制)
内容
版本号-包头长度
45
版本号IPV4,包头长20字节
服务类型
00
正常时延,正常吞吐量,正常可靠性
总长度
0078
数组分组长120字节
标识
1a52
标识为6738
标志
00
MF=0DF=0,不允许分片,
片偏移
00
偏移量为0
生存周期
40
每跳生存时间为64秒
协议
01
携带数据来自ICMP协议
头部校验和
423a
IP头部校验和为16进制423a
源地址
0ad3042d
源地址为10.211.4.45
目的地址
0ad30427
目的地址为10.211.4.39
45
00
00
78
la
52
00
00
40
01
42
3a
0a
d3
04
2d
0a
d3
04
27
4500------->0100010100000000
0078------->0000000000111000
1a52------->0001101001010010
00and00------->0000000000000000
40and01------->0100000000000001
423a------->0100001000111010
0ad3------->0000101011010011
042d------->0000010000101101
0ad3------->0000101011010011
0427------->0000010000100111
简单求和后发现结果为:
1111111111111111符合条件,是正确的包,即IP头部校验和为423a是正确的。
3)IP包分段原理:
首先同一个数据报的所有分段包含同样的Identification(标识)值,同时每一个分段使用DF、MF和offset来表示该分段的信息。
1.DF代表不分段(DontFragment),它让路由器不要分割该数据报,因为目标主机无法将分片重组回原来的数据报,而数据报在分段后,此位置0;
2.MF表示更多的分段(MoreFragment),除了最后一个分段以外其他所有的分段必须设置这一位,将其置1,最后一个分段置0;
3.Fragmentoffset分段偏移域指明了该分段在当前数据报中的什么位置上。
除了一个数据包的最后一个分段以外,其他所有的分段必须是8字节的倍数,这里8字节是基本分段单位。
由截获的数据报来看,一共六段,除第一段offset为0外,其他各段偏移量为1480的倍数,也即前边每一段数据报(除包头)的长度,1480也为8的倍数,由此指明了各段在当前数据包中的位置。
同时,除最后一段MF为0外,其他各段MF为1,表明各段不是一个完整的数据报,
而是分割之后形成的分段。
2.ICMP协议分析
1)ICMP的功能
ICMP报文被封装在IP包里,并且ICMP协议数据包对IP分组在传送时出现的异常情况进行报告,对IP报文传输时出现的差错、拥塞、路由改变、以及路由器或主机信息的获取等情况,向源端主机提交报告,由源主机采取相应措施,改进传输质量。
2)其中有Destinationunreachable、timeexceeded、sourcequench、redirect、
ECHOandECHOreply、timestamprequestandreply几种不同功能的ICMP报文。
记录ICMP的包格式,自己查找资料总结各字段的功能。
3)ICMP协议包构成:
前8字节由报文类型(1字节)、代码(1字节)、校验和(2字节),选项部分(4字节)。
ICMP报文分为两大类——差错报告报文与询问报文,差错报文共有五种、询问报文有两种
下图为ICMP请求包
TYPE类型为8
code代码为0
checksum校验和为4f8
Identifier(大端表示)为1,(小端表示)为256
sequencenumber序列号(大端表示)为21,(小端表示)为5376
下图ICMP应答包
TYPE类型为0
code代码为0
checksum校验和为5748
Identifier(大端表示)为1,(小端表示)为256
sequencenumber序列号(大端表示)为21,(小端表示)为5376
由此可见,请求和应答数据包的区别在于类型,
请求包为Type8,而应答包为Type0。
ICMP与IP协议同处于TCP/IP模型的网际层,
但ICMP报文是封装在IP数据报的数据部分进行传输的。
3.DHCP协议分析
1)对照讲义和教材理解DHCP的功能,观察DHCPACK消息的各字段,自己查找资料理解各字段的功能,总结采用DHCP协议可以提供哪些配置参数。
DHCP是动态主机配置协议(Dynamichostconfigurationprotocol)的简称,它提供对于远程主机的自动配置,包括IP地址、路由地址、子网掩码、DNS服务器地址,是一个应用层上的协议。
作为BOOTP的拓展,它的作用是给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
它也是client-server的范例。
下图是DHCPACK消息包含的各字段
Messagetypebootreply
(2)操作码
HardwaretypeEthernet硬件类型
Hardwareaddresslength6硬件地址长度
Hops0跳数
TransactionID0xb247a900事务标识
Secondselapsed0过去的秒数
ClientIPaddress10.8.168.30客户IP
YourIPaddress10.8.168.30你的主机IP地址
NextserverIPaddress0.0.0.0下一个服务器的IP地址
RelayagentIPaddress0.0.0.0中介代理的IP地址
ClientMACaddress9c:
b7:
0d:
da:
92:
19客户MAC地址
DHCPmessagetypeDHCPACK(5)DHCP消息类型
Serveridentifier192.168.1.1供应商标识符
Subnetmask255.255.255.0子网掩码
Router192.168.1.1路由
IPaddressleasetime2hoursIP地址的租用时间
DomainNameserver:
10.3.9.4/10.3.9.5域名服务器
DHCP向网络主机提供配置参数,它由两个基本部分组成:
一部分是向网络主机传送专用的配置信息,
另一部分是给主机分配网络地址。
DHCP是用于向客户传送配置信息的,客户从DHCP服务器那里获得配置信息后应该可以和Internet上任何一台主机通信。
在初始化一台主机时并不需要配置所有这些参数,客户和服务器可以通过一种商讨机制决定传送哪些参数。
DHCP允许(不要求)客户参数配置不直接与IP协议相关,而且它也不将最加入的主机加入域名系统(DNS)中。
根据捕获到消息,画出DHCP地址分配过程的消息序列图。
注意DHCP是采用client-server模式工作的,你捕获到的消息中,DHCPserver是否由路由器充当?
是否有DHCPRelay?
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协议分析
1)根据捕获到的消息,对照讲义,理解ARP的功能和操作原理。
本地局域网内的主机用广播的方式发送ARP报文,来获取彼此的硬件地址。
ARP基本功能:
在以太网协议中规定,同一局域网中的一台主机要和另一台主机迚行直接通信,必须要知道目标主机的MAC地址。
而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。
这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。
于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。
这就是ARP协议要做的事情。
所谓地址解析(addressresolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
记录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发送一个FIN,用来关闭1到2的数据发送
服务器2收到这个FIN,它发回一个ACK,确认序号为收到的序号+1,和SYN一样,一个FIN将占用一个序号
服务器2关闭与客户端1的连接,发送一个FIN给客户端1
客户端1发回ACK报文确认,并将确认信号设置为收到序号+1
Ack
针对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字节)字节。
对照教材6-33图,理解TCP状态转换的过程,按照你所捕获的消息,画出Client侧的状态转换图,并进行解释。
当客户机器上的一个应用程序发出CONNECT请求的时候,本地的TCP创建一条连接记录,并将它标记为SYNSENT状态,然后发送一个SYN数据段。
当SYN+ACK到达时候,三步握手完成,连接建立开始发送和接收数据。
当应用结束时,发出CLOSE原语,从而使本地的TCp实体发送一个FIN数据段,并等待相应ACK,当ACK到达时,发生一次状态迁移,切换到FINWAIT2,而且连接的一个方向现在被关闭。
当另一方也关闭的时候,一个FIN数据段会到来,然后它被确认。
现在双方都已经关闭了,但是TCP要等待一段最大的分组生存期的时间,以确保该链接的所有分组都已经消失了,以防万一发生确认被丢失的情形。
当定时器到期之后,TCP删除该链接记录。
当客户完成的时候,它执行CLOSE,从而导致发送一个FIN到达服务器。
然后,服务器接到信号,当它也执行CLOSE的时候,TCP实体给客户发送一个FIN数据段。
当客户的确认回来的时候,服务器释放该链接,并且删除相应的链接记录。
实验总结:
1.通过本实验学到了不少的东西,毕竟只看课本上的IP头部是比较空洞的,只有接触软件,通过软件去体会硬件的实际情况,才知道许多实际的实现方法。
2.当然,我们现在做的工作只是在已有的东西上查看,以查看IP头为例,可以看到IP的20个字节的实际内容,以及每一项对应的区域占了几位,代表了什么意思,比如生命周期,有8位,大小就代表‘剩余的生命’,即还可以再经过几次路由转发;但是,如果往深处去思考的话,其实会更有意思;比如,前辈们为什么要这么做,这当然每一个区域都是经过一定的考究的;
3.软件下载的过程浪费了不少时间,这让我很是难过啊;在网上各种搜索出问题的地方,是winpcap的问题,当你想要做一件事,可能开始感觉它挺简单,但实际做起来就可能会出现一些不可预见的问题~~你要做的就是快速的解决这些琐碎的问题。
4.关于头部校验和,把各项简单求和,最高位可能产生进位,应该把这些进位累加到最低位上去,从而验证checksum是否正确。
5.总之,这个实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lab2211307 周俊霞 211320 计算机网络 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)