完整word版IP和TCP数据分组捕获和解析.docx
《完整word版IP和TCP数据分组捕获和解析.docx》由会员分享,可在线阅读,更多相关《完整word版IP和TCP数据分组捕获和解析.docx(17页珍藏版)》请在冰豆网上搜索。
完整word版IP和TCP数据分组捕获和解析
1实验二:
IP和TCP数据分组的捕获和解析
1.实验类别
协议分析型
2.实验内容和实验目的
本次实验内容:
1)捕获在连接Internet过程中产生的网络层分组:
DHCP分组,ARP分组,IP数据分组,ICMP分组。
2)分析各种分组的格式,说明各种分组在建立网络连接过程中的作用。
3)分析IP数据分组分片的结构。
通过本次实验了解计算机上网的工作过程,学习各种网络层分组的格式及其作用,理解长度大于1500字节IP数据组分片传输的结构。
4)分析TCP建立连接,拆除连接和数据通信的流程。
3.实验学时
4学时。
4.实验分组
单独完成。
5.实验设备环境
1台装有WindowsXP操作系统的pc机,要求能够连接到Internet,并安装WireShark软件。
6.实验步骤
6.1准备工作
启动计算机,连接网络确保能够上网,安装WireShark软件。
6.2捕获DHCP报文并分析
DHCP报文格式
先介绍一下DHCP的报文格式,如图1
OP
(1)
Htype
(1)
Hlen
(1)
Hops
(1)
TransactionID(4)
Seconds
(2)
Flags
(2)
Ciaddr(4)
Yiaddr(4)
Siaddr(4)
Giaddr(4)
Chaddr(16)
Sname(64)
File(128)
Options(variable)
(图1DHCP报文格式)
OP:
若是client送给server的封包,设为1,反向为2;
Htype:
硬件类别,ethernet为1;
Hlen:
硬件长度,ethernet为6;
Hops:
若数据包需经过router传送,每站加1,若在同一网内,为0;
TransactionID:
事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;
Seconds:
由用户指定的时间,指开始地址获取和更新进行后的时间;
Flags:
从0-15bits,最左一bit为1时表示server将以广播方式传送封包给client,其余尚未使用;
Ciaddr:
用户IP地址;
Yiaddr:
客户IP地址;
Siaddr:
用于bootstrap过程中的IP地址;
Giaddr:
转发代理(网关)IP地址;
Chaddr:
client的硬件地址;
Sname:
可选server的名称,以0x00结尾;
File:
启动文件名;
Options:
,厂商标识,可选的参数字段
如下图所示,在DOS窗口执行命令ipconfig/release后,已经申请的IP地址被释放。
再执行ipconfig/renew,在WireShark上就看到了DHCP的四次握手获得IP地址,缺省路由DNS等参数的过程。
现在来详细分析下这四次握手的过程。
(1)第一次握手:
客户端首先向网络以广播形式发送DHCPdiscover报文,目的是发现网络中存在的DHCPserver,并请求给出回应。
从图中可以看出DHCPdiscover数据包二层源mac地址为源端口mac,目的mac为广播地址ff:
ff:
ff:
ff:
ff:
ff.三层源地址为0.0.0.0。
目的地址为广播地址255.255.255.255。
端口:
源端68,目的端67。
(2)第二次握手:
向client端提供IP地址。
当DHCP服务器监听到客户端发出的Dhcpdiscover广播后,它会从那些还没有租出的地址池内,选择最前面的的空置IP,连同其它TCP/IP设定,回应给客户端一个DHCPOFFER封包。
由于客户端在开始的时候还没有IP位址,所以在其Dhcpdiscover封包内会带有其MAC位址信息,并且有一个XID编号来辨别该封包,DHCP服务器回应的Dhcpoffer封包则会根据这些资料传递给要求租约的客户。
根据服务器端的设定,Dhcpoffer封包会包含一个租约期限的信息,当客户端到了这个期限,会释放出IP,进行相同步骤的再次申请.
在DHCPoffer包中我们可以获得以下的信息:
信息类型为应答广播信息,客户端IP地址为0.0.0.0.通过DHCPdiscover请求申请后,服务器端分配的IP地址为118.229.161.236DHCP服务器的IP地址为211.68.71.5.租约时间为4个小时.
ClientIPaddress=0.0.0.0(0.0.0.0)表示客户机还没有使用该地址
Your(Client)IPaddress=118.229.162.236(118.229.162.236)表示DHCPServer分配给该客户机的IP地址
nextServerIPaddress它标示了客户机下一次发出DHCPRequest报文时,哪个DHCPServer会发出回应
DHCPMessageType=DHCPOffer表示这是一个对DHCPDiscover的回应报文
SubnetMask=255.255.255.128表示分配的IP地址子网掩码为16位
Ipaddressleasetime=4hour表示租期是4小时
Serveridentifier=211.68.71.5表示服务器的IP地址为211.68.71.5
Router=118.229.161.129表示它的路由网关是118.229.161.129
DomainName=""表示域名
所有发送DHCPOffer信息包的服务器将保留它们提供的一个IP地址。
在该地址不再保留之前,该地址不能分配给其他的客户。
(3)第三次握手:
用户发送DHCPrequest报文,客户以广播的方式发送DHCPRequest信息包作为响应。
注意其中的DHCPMessageType一项中type=Request表示这是一个请求报文。
(4)第四次握手:
第四阶段DHCPserver回应DHCPACK报文,该信息包是以单播的方式发送的。
当服务器接收到DHCPRequest信息包时,它以一个DHCPAcknowledge信息作为响应,其内容同DHCPOFFER类似。
在该报文中可以获得以下信息:
DHCP服务器端给出了domainname=”e”表示服务器的域名为””。
现在观察ARP和PING命令的执行过程。
我们向118.229.161.140发送ping请求,发送的数据大小为32字节。
默认情况下,只发送四个数据包此时得到对方的4次回应。
在给118.229.161.140发送4个数据包的过程当中,返回了4个,这48个数据包当中返回速度最快为1ms,最慢为7ms,平均速度为2ms。
下面看看ARP的执行过程:
上图表示的是apr的格式。
先发送一个请求包:
整个报文长度为42字节,"whohas118.229.161.140?
tell118.229.161.236",即将本机的信息以及想要连接的ip进行广播。
头6个字节是以太网目的地址ffffffffffff这是一个广播地址,全网下的所有终端都能接受到。
Sendermacadd发送者的mac地址ip地址以及想要获得的ip地址都广播出去。
接下来分析是应答的数据包。
应答包长度为60个字节头6个字节是本地的mac地址接着的6个字节就是对方的mac地址,这样我们就知道了对方地址。
加进缓存表。
6.3分析数据分组的分片传输过程
制作大于8000字节的IP数据分组并发送,捕获后分析其分片传输的分组结构。
使用Windows中ping命令的-l选项,ping-l8000192.168.0.1
执行之后我们捕获了4个数据包:
(默认情况下,只发送四个数据包)
从4个分组中随便选取一个进行详细的分析:
Version:
版本的信息是IPv4。
所有的设备必要运行相同版本的IP协议,否则设备将会拒绝接收数据包。
长度为4个字节。
HeaderlengthIP:
报头长度为20字节
Totallength:
总长度,表示整个数据包的长度。
包括数据和报头。
从该值中减去Headerlength值的长度,得到的就是数据有效负荷的长度。
在我们分析的这个数据包中,总长度为56.
Identification:
表示当前的数据包。
在我们分析的这个数据包中,为0xb3e6(46054)
Fragmentoffset:
重组分片为0。
Timetolive:
存活时间。
计数器会按一定增量逐渐减少为0.当到0时,该数据包将被丢弃。
Protocol:
ICMP协议接收。
。
Headerchecksum(报头的校验和):
报头正确(correct)
Source:
发送设备的IP地址为118.229.161.236。
Destination:
接收设备的IP地址为192.168.0.1。
6.4分析TCP通信过程
WireShark的Filter项填为tcp.port==21(仅观察FTP的TCP通信,FTP端口号为21)。
捕获所有下面通信过程的TCP报文进行分析。
(1)观察TCP建立连接的三次握手和粗暴方式拆除连接的流程。
执行命令ftp
连接建立后直接按下Ctrl-C中止程序运行。
可以看出,我的ip地址为118.220.161.236,目的ip地址为202.38.97.197.现在来详细分析一下这3次握手过程。
①第一次握手:
Sourceport:
源端口号为1666
Destinationport:
目的端口号为FTP的21端口
Sequencenumber:
相对确认号为0
Headerlength:
首部长度为32字节
Flag:
标志位(0x02).只设置了SYN,也就是位同步标志,表示请求建立连接。
Windowssizevalue:
窗口大小为65535.
Checksum;校验和是正确的。
Options:
选项是12字节
可以看到是我(客户)向目标地址(服务器)发出的第一次握手,seq=0,SYN=1。
服务器可以知道我的联机请求。
②第二次握手:
服务器在收到请求后,发回确认(SYN+ACK)。
Sourceport:
源端口号(服务器)为FTP的21
Destinationport:
目的端口为(客户端)1666
Sequencenumber:
相对确认号为0
Acknum=1:
对所接受的段的确认
Headerlength:
首部长度为32字节
Flag:
标志位(0x02).
Flag中,SYN:
认可连接。
ACK表示对所接受的段的确认。
Windowssizevalue:
窗口大小为65535.
Checksum;校验和是正确的。
Options:
选项是12字节
③第三次握手:
客户向服务器发出的确认段。
再向服务器发出第三次握手,可以看到ACK=1,seq=1,ack=1。
Sourceport:
源端口号为1666
Destinationport:
目的端口号为FTP的21端口
Sequencenumber:
相对确认号为1
Headerlength:
首部长度为32字节
Flag:
标志位(0x02).只设置了ACK,表示已建立连接。
Windowssizevalue:
窗口大小为65535.
Checksum;校验和是正确的。
Options:
选项是12字节
粗暴方式拆除连接:
用户直接与服务器断开连接。
(2)观察TCP建立连接的三次握手,数据通信和优雅方式拆除连接的流程。
执行命令ftp
用户名输入anonymous
口令输入a@b
执行成功后输入命令bye
TCP三次握手见
(1)的描述,在这里就不再重复讨论了。
在三次握手建立好建立起连接后,以优雅方式拆除连接。
TCP采用四次握手的方式拆除连接。
首先我们向服务器发送一个QUIT请求,然后开始4次握手。
①第一次握手:
释放请求
服务器发送一个FIN=1的分组作为对quit请求的回应。
②第二次握手:
得到回复,并且半关闭TCP连接。
本机对服务器发来的FIN进行确认,并回复ACK。
③第三次握手:
发拆除请求
我们向服务器发出拆除的请求。
FIN=1.
④第四次握手:
确认,到此拆除完成
服务器反馈一个ACK,表示连接已经被拆除。