网络协议抓包实验.docx
《网络协议抓包实验.docx》由会员分享,可在线阅读,更多相关《网络协议抓包实验.docx(24页珍藏版)》请在冰豆网上搜索。
![网络协议抓包实验.docx](https://file1.bdocx.com/fileroot1/2023-1/30/ec58cebe-3a06-4079-a78a-8b282392f44a/ec58cebe-3a06-4079-a78a-8b282392f44a1.gif)
网络协议抓包实验
中国矿业大学
《网络协议》
姓名:
班级:
学号:
实验一:
抓数据链路层的帧
一、实验目的
分析MAC层帧结构
二、准备工作
本实验需要2组试验主机,在第一组上安装锐捷协议分析教学系统,使用其中的协议数据发生器对数据帧进行编辑发送,在第二组上安装锐捷协议分析教学系统,使用其中的网络协议分析仪对数据帧进行捕获分析。
三、实验内容及步骤
步骤一:
运行ipconfig命令
步骤二:
编辑LLC信息帧并发送
步骤三:
编辑LLC监控帧和无编号帧,并发送和捕获:
步骤四:
保存捕获的数据帧
步骤五:
捕获数据帧并分析
使用iptool进行数据报的捕获:
报文如下图:
根据所抓的数据帧进行分析:
(1)MACheader
目的物理地址:
00:
D0:
F8:
BC:
E7:
06
源物理地址:
00:
16:
EC:
B2:
BC:
68
Type是0x800:
意思是封装了ip数据报
(2)ip数据报
由以上信息可以得出:
①版本:
占4位,所以此ip是ipv4
②首部长度:
占4位,可表示的最大十进制数值是15。
此ip数据报没有选项,故它的最大十进制为5。
③服务:
占8位,用来获得更好的服务。
这里是0x00
④总长度:
总长度指首都及数据之和的长度,单位为字节。
因为总长度字段为16位,所以数据报的最大长度为216-1=65535字节。
此数据报的总长度为40字节,数据上表示为0x0028。
⑤标识(Identification):
占16位。
IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
但这个“标识”并不是序号,
因为IP是无连接的服务,数据报不存在按序接收的问题。
当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
在这个数据报中标识为18358,对应报文16位为47b6
⑥标志(Flag):
占3位,但目前只有2位有意义。
标志字段中的最低位记为MF(MoreFragment)。
MF=1即表示后面“还有分片”的数据报。
MF=0表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为DF(Don'tFragment),意思是“不能分片”。
只有当DF=0时才允许分片。
这个报文的标志是010,故表示为不分片!
对应报文16位为0x40。
⑦片偏移:
因为不分片,故此数据报为0。
对应报文16位为0x00。
⑧生存时间:
占8位,生存时间字段常用的英文缩写是TTL(TimeToLive),其表明数据报在网络中的寿命。
每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。
若数据报在路由器消耗的时间小于1秒,就把TTL值减1。
当TTL值为0时,就丢弃这个数据报。
经分析,这个数据报的的TTL为64跳!
对应报文16位为0x40。
⑨协议:
占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
这个ip数据报显示使用得是TCP协议对应报文16位为0x06。
⑩首部检验和:
占16位。
这个字段只检验数据报的首部,但不包括数据部分。
这是因为数据报每经过一个路由器,都要重新计算一下首都检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。
不检验数据部分可减少计算的工作量。
对应报文16位为0x8885。
⑾源地址:
占32位。
此报文为219.219.61.32对应数据为DB:
DB:
3D:
20
⑿目的地址:
占32位。
此报文为199.75.218.77对应数据为77:
4B:
DA:
4D
(13)选项:
这里是无!
(2)TCP报头
TCP报文首部格式
●源端口(SourcePort):
16位的源端口字段包含初始化通信的端口号。
源端口和IP地址的作用是标识报文的返回地址。
这个报文是3204对应的数据报中的16位为0x0c84。
●目的端口(DestinationPort):
16位的目的端口字段定义传输的目的。
这个端口指明接收方计算机上的应用程序接口。
这个报文的目的端口是80(代表了http协议)对应的数据报中的16位为0x0050
●序列号(SequenceNumber):
该字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第几个数据字节。
序列号是一个32位的数。
这个报文的sequencenumber是2416921514对应的数据报中的16位为0x900f4baa
●确认号(AcknowledgeNumber):
TCP使用32位的确认号字段标识期望收到的下一个段的第一个字节,并声明此前的所有数据已经正确无误地收到,因此,确认号应该是上次已成功收到的数据字节序列号加1。
收到确认号的源计算机会知道特定的段已经被收到。
确认号的字段只在ACK标志被设置时才有效。
这个报文的ACK是2803024519对应的数据报中的16位为0xa712c287
●首部长度(headerlength)这里是5代表了20字节也表示tcp选项是无,对应的数据报中的16位为0x50
●控制位(ControlBits):
共6位,每一位标志可以打开一个控制功能。
URG(UrgentPointerFieldSignificant,紧急指针字段标志):
表示TCP包的紧急指针字段有效,用来保证TCP连接不被中断,并且督促中间齐备尽快处理这些数据。
这里URG为0表示notset
ACK(Acknowledgementfieldsignificant,确认字段标志):
取1时表示应答字段有效,也即TCP应答号将包含在TCP段中,为0则反之。
这里ACK为1表示是确认帧
PSH(PushFunction,推功能):
这个标志表示Push操作。
所谓Push操作就是指在数据包到达接收端以后,立即送给应用程序,而不是在缓冲区中排队。
这里PSH位置0表示不直接送给应用程序
RST(Resettheconnection,重置连接):
这个标志表示感谢连接复位请求,用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包。
这里是0表示不产生重置连接
SYN(Synchronizesequencenumbers,同步序列号):
表示同步序号,用来建立连接。
这里SYN为0,表示没有设置同步
FIN(Nomoredatafromsender):
表示发送端已经发送到数据末尾,数据传送完成,发送FIN标志位的TCP段,连接将被断开。
这里FIN是0,表示没有设置
这里对应的数据报中的16位为0x10
●窗口(Window):
目的主机使用16位的窗口字段告诉源主机它期望每次收到的数据通的字节数。
此报文窗口大小为65535对应的数据报中的16位为0xffff
●校验和(Checksum):
TCP头包括16位的校验和字段用于错误检查。
源主机基于部分IP头信息,TCP头和数据内容计算一个校验和,目的主机也要进行相同的计算,如果收到的内容没有错误过,两个计算应该完全一样,从而证明数据的有效性。
这里检验和为:
0xf317
●紧急指针(UrgentPointer):
紧急指针字段是一个可选的16位指针,指向段内的最后一个字节位置,这个字段只在URG标志被设置时才有效。
这里UrgentPointer为零,表示没有使用紧急指针
选项(Option):
至少1字节的可变长字段,标识哪个选项(如果有的话)有效。
如果没有选项,这个字节等于0,说明选项的结束。
这个字节等于1表示无需再有操作;等于2表示下四个字节包括源机器的最大长度(MaximumSegmentSize,MSS).这里选项没有设置
●填充(Padding):
这个字段中加入额外的零,以保证TCP头是32的整数倍。
实验二IP报文分析
一、实验目的
掌握IP数据包的组成和网络层的基本功能;
二、准备工作
本实验需要2组试验主机,在第一组上安装锐捷协议分析教学系统,使用其中的协议数据发生器对数据帧进行编辑发送,在第二组上安装锐捷协议分析教学系统,使用其中的网络协议分析仪对数据帧进行捕获分析。
三、实验内容及步骤
步骤一:
设定实验环境
步骤二:
利用网络协议分析软件捕获并分析IP数据包
1、在某台主机中打开网络协议分析软件,在工具栏中点击“开始”,待一段时间后,点击“结束”,
2、在捕获到数据包中,选择IP数据包进行分析
分析捕获到的IP数据包,因此在本实验中,只分析数据的的IP包头部分。
步骤三:
利用网络协议编辑软件编辑并发送IP数据包
1、在主机PC1打开网络协议编辑软件,在工具栏选择“添加”,建立一个IP数据包。
2、填写“源物理地址”:
可以在地址本中找到本机的MAC地址,然后左键选择,点击“确定”加入地址。
3、填写“目的物理地址”:
可以在地址本中选择PC2的MAC地址,然后左键选择并单击“确定”加入地址。
4、填写“类型或长度”:
该字段值为0800。
点击工具栏或菜单栏中的“发送”,在弹出的对话框中配置发送次数,然后选择“开始”按钮,发送帧序列
在PC2中用协议分析器截获数据包并分析。
步骤四:
运行ipconfig命令
步骤五:
运行ping命令
IP数据报分析
由以上信息可以得出:
①版本:
占4位,所以此ip是ipv4
②首部长度:
占4位,可表示的最大十进制数值是15。
此ip数据报没有选项,故它的最大十进制为5。
③服务:
占8位,用来获得更好的服务。
这里是0x00
④总长度:
总长度指首都及数据之和的长度,单位为字节。
因为总长度字段为16位,所以数据报的最大长度为216-1=65535字节。
此数据报的总长度为40字节,数据上表示为0x0028。
⑤标识(Identification):
占16位。
IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
但这个“标识”并不是序号,
因为IP是无连接的服务,数据报不存在按序接收的问题。
当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
在这个数据报中标识为18358,对应报文16位为47b6
⑥标志(Flag):
占3位,但目前只有2位有意义。
标志字段中的最低位记为MF(MoreFragment)。
MF=1即表示后面“还有分片”的数据报。
MF=0表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为DF(Don'tFragment),意思是“不能分片”。
只有当DF=0时才允许分片。
这个报文的标志是010,故表示为不分片!
对应报文16位为0x40。
⑦片偏移:
因为不分片,故此数据报为0。
对应报文16位为0x00。
⑧生存时间:
占8位,生存时间字段常用的英文缩写是TTL(TimeToLive),其表明数据报在网络中的寿命。
每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。
若数据报在路由器消耗的时间小于1秒,就把TTL值减1。
当TTL值为0时,就丢弃这个数据报。
经分析,这个数据报的的TTL为64跳!
对应报文16位为0x40。
⑨协议:
占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
这个ip数据报显示使用得是TCP协议对应报文16位为0x06。
⑩首部检验和:
占16位。
这个字段只检验数据报的首部,但不包括数据部分。
这是因为数据报每经过一个路由器,都要重新计算一下首都检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。
不检验数据部分可减少计算的工作量。
对应报文16位为0x8885。
⑾源地址:
占32位。
此报文为219.219.61.32对应数据为DB:
DB:
3D:
20
⑿目的地址:
占32位。
此报文为199.75.218.77对应数据为77:
4B:
DA:
4D
(13)选项:
这里是无!
(2)TCP报头
TCP报文首部格式
●源端口(SourcePort):
16位的源端口字段包含初始化通信的端口号。
源端口和IP地址的作用是标识报文的返回地址。
这个报文是3204对应的数据报中的16位为0x0c84。
●目的端口(DestinationPort):
16位的目的端口字段定义传输的目的。
这个端口指明接收方计算机上的应用程序接口。
这个报文的目的端口是80(代表了http协议)对应的数据报中的16位为0x0050
●序列号(SequenceNumber):
该字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第几个数据字节。
序列号是一个32位的数。
这个报文的sequencenumber是2416921514对应的数据报中的16位为0x900f4baa
●确认号(AcknowledgeNumber):
TCP使用32位的确认号字段标识期望收到的下一个段的第一个字节,并声明此前的所有数据已经正确无误地收到,因此,确认号应该是上次已成功收到的数据字节序列号加1。
收到确认号的源计算机会知道特定的段已经被收到。
确认号的字段只在ACK标志被设置时才有效。
这个报文的ACK是2803024519对应的数据报中的16位为0xa712c287
●首部长度(headerlength)这里是5代表了20字节也表示tcp选项是无,对应的数据报中的16位为0x50
●控制位(ControlBits):
共6位,每一位标志可以打开一个控制功能。
URG(UrgentPointerFieldSignificant,紧急指针字段标志):
表示TCP包的紧急指针字段有效,用来保证TCP连接不被中断,并且督促中间齐备尽快处理这些数据。
这里URG为0表示notset
ACK(Acknowledgementfieldsignificant,确认字段标志):
取1时表示应答字段有效,也即TCP应答号将包含在TCP段中,为0则反之。
这里ACK为1表示是确认帧
PSH(PushFunction,推功能):
这个标志表示Push操作。
所谓Push操作就是指在数据包到达接收端以后,立即送给应用程序,而不是在缓冲区中排队。
这里PSH位置0表示不直接送给应用程序
RST(Resettheconnection,重置连接):
这个标志表示感谢连接复位请求,用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包。
这里是0表示不产生重置连接
SYN(Synchronizesequencenumbers,同步序列号):
表示同步序号,用来建立连接。
这里SYN为0,表示没有设置同步
FIN(Nomoredatafromsender):
表示发送端已经发送到数据末尾,数据传送完成,发送FIN标志位的TCP段,连接将被断开。
这里FIN是0,表示没有设置
这里对应的数据报中的16位为0x10
●窗口(Window):
目的主机使用16位的窗口字段告诉源主机它期望每次收到的数据通的字节数。
此报文窗口大小为65535对应的数据报中的16位为0xffff
●校验和(Checksum):
TCP头包括16位的校验和字段用于错误检查。
源主机基于部分IP头信息,TCP头和数据内容计算一个校验和,目的主机也要进行相同的计算,如果收到的内容没有错误过,两个计算应该完全一样,从而证明数据的有效性。
这里检验和为:
0xf317
●紧急指针(UrgentPointer):
紧急指针字段是一个可选的16位指针,指向段内的最后一个字节位置,这个字段只在URG标志被设置时才有效。
这里UrgentPointer为零,表示没有使用紧急指针
选项(Option):
至少1字节的可变长字段,标识哪个选项(如果有的话)有效。
如果没有选项,这个字节等于0,说明选项的结束。
这个字节等于1表示无需再有操作;等于2表示下四个字节包括源机器的最大长度(MaximumSegmentSize,MSS).这里选项没有设置
●填充(Padding):
这个字段中加入额外的零,以保证TCP头是32的整数倍。
实验三ARP地址解析协议分析实验
一、实验目的
掌握ARP协议的作用和格式;
二、准备工作
本实验需要2组试验主机,在第一组上安装锐捷协议分析教学系统,使用其中的协议数据发生器对数据帧进行编辑发送,在第二组上安装锐捷协议分析教学系统,使用其中的网络协议分析仪对数据帧进行捕获分析。
三、实验内容及步骤
步骤一:
设定实验环境
步骤二:
捕获ARP报文并进行分析
1、在主机PC1中用命令arp–a可以查看ARP缓存表中的ARP记录,用arp–d命令删除ARP缓存中的记录
2、在PC1中开启协议分析仪进行数据包捕获。
3、在PC1中用命令ping219.219.61.114。
4、捕获ARP报文进行分析。
捕获的ARP请求报文;捕获的ARP应答报文
在PC1中用命令arp–d删去ARP缓存中的ARP记录。
在PC1上开启协议分析仪捕获ARP包进行分析。
在PC1上pingPC3地址172.16.2.2。
对捕获的数据包进行分析。
步骤三:
编辑发送ARP报文请求报文(同网段)
1、在命令提示符下运行:
arp–d,清空ARP高速缓存。
2、编辑并发送ARP报文
3、在PC1上开启协议分析软件,进行数据包捕获分析
4、在PC1中用命令arp–a可以查看到ARP缓存中的PC2的ARP记录
步骤四:
编辑发送ARP报文请求报文(不同网段)
1、在命令提示符下运行:
arp–d,清空ARP高速缓存。
2、在PC1上编辑并发送ARP请求,目标地址为PC3主机的地址
3、在PC1上开启协议分析软件,进行数据包捕获分析
第一步:
获得物理地址
抓arp数据报:
如下是ARP是请求报文:
帧头部分上两次实验已经分析,这里不再赘述了
ARP请求报文的格式如下:
分析报文如下:
此报文的源硬件地址为:
00:
16:
EC:
B2:
BC:
68
在请求时是广播所以是:
FF:
FF:
FF:
FF:
FF:
FF
硬件类型指明发送方想知道的硬件接口类型。
对以太网,值为1;
这里是0001,所以是以太网。
协议类型指明发送方提供的高层协议地址类型。
对TCP/IP互联网,采用IP地址,值为十六机制的0800;
硬件地址长度:
这里是6这里对应的数据报中的16位为0x06
协议地址长度:
这里是4这里对应的数据报中的16位为0x04
操作指明ARP的操作类型,ARP请求为1
这里是0001代表是请求
发送方硬件地址:
00:
16:
EC:
B2:
BC:
68
发送方协议地址:
219.219.61.32这里对应的数据报中的16位为DBDB3D20
目标硬件地址:
00:
00:
00:
00:
00:
00
目标协议地址:
219.219.61.114这里对应的数据报中的16位为DBDB3D72
填充:
这里没有添加
如下是arp应答报文:
报文分析:
请求和应答报文有些部分是相同的,就不再赘述了,只是目的地址和源地址互换了一下,且将请求的ip的作为源逻辑地址
此报文中:
操作指明ARP的操作类型,ARP应答为2
这里是
代表是请求
这里用了填充占用了18字节如上图阴影部分。
实验四tcp协议
一、
三次握手过(利用HTTP协议)
Tcp握手第一次
Tcp握手的第二次
Tcp握手的三次
分析三次握手,入手点应该从seq和ack入手
如上图三个数据报:
首先看上图的三个tcp报文的共同部分
1、这个tcp连接应该是http服务,因为使用的端口为80
2、然后这三个tcp报文的地址:
本机物理地址:
192.168.66.129
本机逻辑地址:
0c:
29:
AD:
44:
3D:
08
远地物理地址:
119.75.217.56
远地逻辑地址:
0d:
50:
56:
e9:
e3:
27
然后是不同部分:
那就是seq和ack的不同,根据上图
第一次seq的值为:
3452172089
ack为0
第二次对第一次进行确认并且设置自己的seq:
Ack为:
3452172090第一次seq+1
seq:
948198055
第三次对第二次进行确认:
Seq为3452172090
Ack为948198056这里为第二次seq+1
二、FTP协议分析
分析ftp首先要了解ftp:
FTP(FileTransferProtocol,FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。
FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。
FTP服务一般运行在20和21两个端口。
端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。
当数据通过数据流传输时,控制流处于空闲状态。
分析:
FTP使用的是tcp连接
所以如上图:
使用的端口21用于控制,其他部分和tcp报文是相同的。
三、SMTP协议分析
SMTP是另一种常用的应用层协议,SMTP(SimpleMailTransferProtocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。
通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。
SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
SMTP的常用端口为25
所以如下为所抓到的SMTP数据包
如上为序号30的帧的部分内容
此为序号为31的帧的部分内容
如上为TCP的三次握手协议,以及一些基本的应用层协议。
实验总结:
通过网络协议的四次实验,很好的将理论课所学和实际相结合,更好的促进了我对各层协议的理解,学会使用了一些抓包工具,例如wireshark和iptool
同时一些协议的调用机制有了更深的理解,例如:
Tcp的三次握手协议。
对于自己感觉还有很大不足,比如对于数据报的格式,还不能很熟练的辨认出每个部分,还需要对照一些书籍进行分析和解释,所以希望自己以后更加努力,做的更好。