实验数据链路层的帧分析
一、实验目的
分析 TCP、UDP的数据链路层帧结构、
二、准备工作
虚拟机XP,虚拟网卡设置,NAT模式,TCP/IP参数设置自动获取。本实验需安装抓包工具软件IPTool。
三、实验内容及步骤
1.运行ipconfig命令
在Windows的命令提示符界面中输入命令:ipconfig /all,会显示本机的网络配置信息。
2.运行抓包工具软件
双击抓把工具软件图标,输入所需参数,和抓包过滤参数,点击捕捉。
3.进行网络访问
进行网络访问,下载文件/搜索资料/www访问/登录邮件系统等均可。
4.从抓包工具中选择典型数据帧
5.保存捕获的数据帧
6.捕获数据帧并分析
1、启动网络抓包工具软件在网络内进行捕获,获得若干以太网帧。
2、对其中的5-10个帧的以太网首部进行观察和分析,分析的内容为:源物理地址、目的物理地址、上层协议类型。
实验过程:
1.TCP协议数据包、数据帧分析
启动IPTool,IE访问站点,使用iptool进行数据报的捕获。
TCP报文如下图:
根据所抓的数据帧进行分析:
(1)MAC header
目的物理地址: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=65 535字节。
此数据报的总长度为40字节,数据上表示为0x0028。
⑤标识(Identification):占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接的服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
在这个数据报中标识为18358,对应报文16位为47b6
⑥标志(Flag):占3 位,但目前只有2位有意义。标志字段中的最低位记为MF (More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。标志字段中间的一位记为DF(Don't Fragment),意思是“不能分片”。只有当DF=0时才允许分片。这个报文的标志是010,故表示为不分片!对应报文16位为0x40。
⑦片偏移:因为不分片,故此数据报为0。对应报文16位为0x00。
⑧生存时间:占8位,生存时间字段常用的英文缩写是TTL (Time To Live),其表明数据报在网络中的寿命。每经过一个路由器时,就把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报文首部格式
●源端口(Source Port):16位的源端口字段包含初始化通信的端口号。源端口和IP地址的作用是标识报文的返回地址。这个报文是3204对应的数据报中的16位为0x0c84。
●目的端口(Destination Port):16位的目的端口字段定义传输的目的。这个端口指明接收方计算机上的应用程序接口。
这个报文的目的端口是80(代表了http协议)对应的数据报中的16位为0x0050
●序列号(Sequence Number):该字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段中的第几个数据字节。序列号是一个32位的数。
这个报文的sequence number是2416921514对应的数据报中的16位为0x900f4baa
●确认号(Acknowledge Number):TCP使用32位的确认号字段标识期望收到的下一个段的第一个字节,并声明此前的所有数据已经正确无误地收到,因此,确认号应该是上次已成功收到的数据字节序列号加1。收到确认号的源计算机会知道特定的段已经被收到。确认号的字段只在ACK标志被设置时才有效。
这个报文的ACK是2803024519对应的数据报中的16位为0xa712c287
●首部长度(header length)这里是5 代表了20字节也表示tcp选项是无,对应的数据报中的16位为0x50
●控制位(Control Bits):共6位,每一位标志可以打开一个控制功能。
URG(Urgent Pointer Field Significant,紧急指针字段标志):表示TCP包的紧急指针字段有效,用来保证TCP连接不被中断,并且督促中间齐备尽快处理这些数据。
这里URG为0 表示not set
ACK(Acknowledgement field significant,确认字段标志): 取1时表示应答字段有效,也即TCP应答号将包含在TCP段中,为0则反之。
这里ACK为1 表示是确认帧
PSH(Push Function,推功能):这个标志表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即送给应用程序,而不是在缓冲区中排队。
这里PSH位置0表示不直接送给应用程序
RST(Reset the connection,重置连接):这个标志表示感谢连接复位请求,用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包。
这里是0 表示不产生重置连接
SYN(Synchronize sequence numbers,同步序列号):表示同步序号,用来建立连接。
这里SYN为0,表示没有设置同步
FIN(No more data from sender):表示发送端已经发送到数据末尾,数据传送完成,发送FIN标志位的TCP段,连接将被断开。
这里FIN是0,表示没有设置
这里对应的数据报中的16位为0x10
●窗口(Window):目的主机使用16位的窗口字段告诉源主机它期望每次收到的数据通的字节数。