当前位置:文档之家› SNIFFER网络数据包分析

SNIFFER网络数据包分析

SNIFFER网络数据包分析实验班级:学号:姓名:指导教师:日期:使用SNIFFER工具进行网络数据包分析一、实验目的通过使用Sniffer Pro软件捕获网络流量,分析数据报结构,来验证我们在计算机网络基础课堂中所学习的知识,使学生能够更加清楚地掌握网络分层的思想,从感性认识飞跃到理性认识。

再通过捕获各个具体协议的通信数据包,一步一步具体分析其实现步骤,更加具体地掌握协议的实现过程。

二、实验主要仪器设备和材料一台联网计算机和Sniffer Pro v4.7.530软件。

三、实验内容和要求本次实验包括三项实验内容,分别是捕获报文基本分析实验、捕获并分析用户数据报协议(UDP)、捕获并分析传输控制协议(TCP)。

a)任意捕获一个数据包,分析其数据链路层格式、网络层格式和传输层格式,加深学生对计算机网络分层概念的理解。

b)用户数据报协议(UDP)是网络上另外一种很常用的第四层协议。

用户数据报协议是OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

UDP 协议基本上是IP 协议与上层协议的接口。

UDP 协议适用端口分别运行在同一台设备上的多个应用程序。

c)传输控制协议(TCP)一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。

在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。

四、实验原理1、UDP协议UDP协议使用端口号为不同的应用保留其各自的数据传输通道。

UDP正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。

数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。

有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。

UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:源端口号、目标端口号、数据报长度、校验值。

Source Port — 16位。

源端口是可选字段。

当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。

如果不使用,设置值为0。

Destination Port 目标端口在特殊因特网目标地址的情况下具有意义。

Length 该用户数据报的八位长度,包括协议头和数据。

长度最小值为8。

Checksum IP 协议头、UDP 协议头和数据位,最后用0填补的信息假协议头总和。

如果必要的话,可以由两个八位复合而成。

UDP协议使用报头中的校验值来保证数据的安全。

校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。

虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。

2、TCP协议在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。

不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP 把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。

之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。

TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。

然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

首先,TCP建立连接之后,通信双方都同时可以进行数据的传输。

其次,他是全双工的,在保证可靠性上,采用超时重传和捎带确认机制;在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传;在拥塞控制上,采用慢启动算法。

下图展示了TCP首部的数据格式。

如果不计任选(Options)字段,那么,它的大小是20个字节。

TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake),过程如下图所示。

在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状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。

这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

Backlog参数:表示未连接队列的最大容纳数目。

SYN-ACK 重传次数服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。

注意,每次重传等待的时间不一定相同。

半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN 包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。

有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

SYN:同步标志同步序列编号(Synchronize Sequence Numbers)栏有效。

该标志仅在三次握手建立TCP连接时有效。

它提示TCP连接的服务端检查序列编号,该序列编号为TCP 连接初始端(一般是客户端)的初始序列编号。

在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。

通过TCP连接交换的数据中每一个字节都经过序列编号。

在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。

ACK:确认标志确认编号(Acknowledgement Number)栏有效。

大多数情况下该标志位是置位的。

TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。

RST:复位标志复位标志有效。

用于复位相应的TCP连接。

URG:紧急标志紧急(The urgent pointer) 标志有效。

紧急标志置位,PSH:推标志该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。

在处理telnet 或rlogin 等交互模式的连接时,该标志总是置位的。

FIN:结束标志带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。

五、实验步骤:1、捕获报文基本分析实验1. 打开Sniffer Pro程序后,选择Capture(捕获)—Start(开始),或者使用F10键,或者是工具栏上的开始箭头。

2. 一小段时间过后,再次进入Capture(捕获)菜单,然后选择Stop(停止)或者按下F10键,还可以使用工具栏。

3. 还可以按F9键来执行“停止并显示”的功能,或者可以进入Capture(捕获)菜单,选择“停止并显示”。

4. 停止捕获后,在对话框最下角增加了一组窗口卷标,包括高级、解码、矩阵、主机表单、协议分布和统计信息。

5. 选择解码卷标,可以看到Sniffer Pro缓冲器中的所有实际“数据”。

分析该卷标结构及其内容。

具体结构:分割为上中下三个相连接的窗口,分别用于显示不同信息内容;内容:1)最上面得窗口显示的是捕获各帧的数量和主要信息(包括帧编号,帧状态,源地址与目的地址,摘要等信息);2)中间的窗口显示的是所选取帧的协议信息(DLC,IP,UDP及TCP协议等的协议内容);3)最下面得窗口显示的是帧中协议各项内容对应的位置和机器码(默认以ASCII码显示)。

2、捕获并分析用户数据报协议(UDP)(图一)选择的数据包是用蓝色标记的IP数据包封装UDP此数据包是ip数据包(图二)说明1 Version=4代表的是现在使用的是IPv4网络层协议2 Header length=20表明头部长度为20bytes IP 协议规定的首部信息是20bytes符合3 Type of service=00表示为普通服务分析如下:000. . . . .=00代表的是优先权选择字段(现在已经忽略)…0 ….=0 最小时延字段为0代表正常时延…. 0…=0 最大吞吐量字段为0代表正常吞吐量…. . 0..=0 最高可靠性字段为0代表正常可靠性…. ..0.=0 0表示将忽略下面的CE字段…. …0=0 0表示没有阻塞4total length =1308=1024+256+16+8+4所以二进制表示为101000111005标识位为346446标志位为说明此标志位数据报最后一个分片倒数最后一位为DF位DF=0表示可以分片;7片偏移为08生存时间为2559上层协议是UDP协议(因为代码为17 ip封装的UDP即ip层的上层是UDP 协议)10首部校验和为9560是正确的(用反码求和)我主机的ip地址是192.168.1.101(图三)根据9所列出的理由所以IP层的上层是UDP数据包根据图一可以看出,在传输层抓的是UDP数据包,源ip地址(即我所用的这台电脑的ip)为(图一、图三)192.168.1.101服务器端的ip地址(图一)为183.93.32.177,源端口(我电脑上所接受的数据包所用端口号)为7138,目的端口(服务器上的)为7300.满足要求(电脑上的端口号为16位的<65536)ip数据包的长度为1308字节,但他是封装了UDP,在UDP头部加了ip的头部,ip数据包头部长度为20,所以1308-20=1288为UDP数据包的长度,从而也验证了图一UDP数据包长度为1288 bytes本ip数据包验证了ip层和传输层的UDP协议之间的关系,网络层(ip层)对传输层(传输层有UDP协议)数据的的封装3、捕获并分析传输控制协议(TCP)(图一)这三次握手是从蓝颜色标记处开始的三个TCP包,机器A源IP为192.168.1.101,机器B目的地址为113.4.72.88(图二)此图是图一蓝色标记那个被截获的TCP数据包的详细内容分析图二如下:机器A(ip为192.168.1.101)访问机器B(113.4.72.88)首先A向B发送连接请求1 源端口号(机器A)为2988,目的端口(机器B)为14095。

相关主题