IP网络抓包分析作业

一:实验目的:

1、 学习使用数据网络数据抓包软件Wireshark,

2、 对互联网进行数据抓包,巩固对所学知识的理解

二:实验内容:

1:分析传输层协议(TCP、UDP)的报文格式,TCP协议连接管理。

TCP报文格式:每个TCP报文头部都包含端口号(Source Port)和目的端口号(Destination Port),用于标识和区分源端设备和目的端设备的应用进程。在TCP/IP协议栈中,源端口和目的端口号分别与源IP地址和目的IP地址组成套接字(Socket),唯一的确定一条TCP连接。序列号(Sequence Number)字段用来标识TCP源端设备向目的端设备发送的字节流,它表示在这个报文段的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序列号对每个字节进行计数。

确认号:(Acknowledgement Number32bits包含发送确认的一端所期望接收到的下一个序号。因此,确认序号应该是上次成功接收道德数据字节序列号加1。

首部长度——占4,指出TCP首部共有多少个4字节字,首部长度在20-60字节之间,所以,该字段值在5-15之间。

保留字段——占6,保留为今后使用,但目前应置0。

紧急URG——当UPG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

确认ACK——只有当ACK=1时确认号字段才有效,当ACK=0时确认号无效。

推送PSHPuSH——接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等待到整个缓存填满了后再向上交付。

复位RSTReSeT——当RST=1时表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放链接,然后重新建立传输连接。

同步SYN——同步SYN=1表示这是一个连接请求或连接接受报文。

终止FINFINis——用来释放一个连接。FIN=1表明此报文段的发送端数据已发送完毕,并要求释放传输连接。

窗口字段——占2字节,用来让对方设置发送窗口的依据,单位为字节。窗口大小用字节数来表示,例如Windows size=1024,表示一次可以发送1024字节的数据。窗口大小起始于确认字段指明的值,是一个16bits字段,窗口的大小可以由接收方调节。窗口实际上是一种流量控制的机制。

校验和(Checksum——占2字节。校验和字段检验的范围包括首部和数据这两部分。校验和字段用于校验TCP报头部分和数据部分的正确性。

紧急指针字段——占16 ,指出在本报文中紧急数据共有多少字节(紧急数据放在本报文段的最前面)。

选项字段——长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接受的报文段的数据字段的最大长度是MSS个字节。”

填充字段——这是为了使整个首部长度是4字节的整数倍。

UDP报文格式:

用户数据报协议UDP:提供了不面向连接的通信,且不对传送数据包进行可靠地保证。适用于一次传输量小数据,可靠性由应用层来负责。UDP报文只有少量字段:源端口号、目的端口号、长度、校验和等。

源、目标端口号字段:占16比特。作用与TCP数据段中的端口号字段相同,用来标识源端和目标端的应用进程。  
长度字段:占16比特。标明UDP头部和UDP数据的总长度字节。  
校验和字段:占16比特。用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。

TCP协议连接管理:(TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP 是面向连接的所以只能用于点对点的通讯)源IP地址:发送包的IP地址;目的IP地址:接收包的IP地址;源端口:源系统上的连接的端口;目的端口:目的系统上的连接的端口。  TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN,ACK。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。第一次握手:建立连接时,客户端发送SYN包(SEQ=x)到服务器,并进入SYN_SEND状态,等待服务器确认。第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也送一个SYN包(SEQ=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器进入Established状态,完成三次握手。

2. 分析网络层协议的报文格式,IPICMP的报文格式。

IP报文格式;

版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。  

  报头长度(Internet Header Length,IHL)字段:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。  

  服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。  

  总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。  

  标志字段:占16比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。  

  标志位字段:占3比特。标志一份数据报是否要求分段。MF=0:最后一片,MF=1:不是最后一片  

  片偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。  

  生存时间(TTL:Time to Live)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。  

  协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。  

  头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。  

  源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。  

可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。

ICMP报文格式:

ICMP(Internet Control Message Protocol)因特网控制报文协议。它是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是在网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要的作用。 

基于ICMP协议的两个用户协议是Ping和Tracert

类型:占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文。

代码:占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。

校验和:这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。其计算方法与在我们介绍IP报头中的校验和计算方法是一样的。

标识:占两字节,用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

IP头部(20字节)

类型(0、8

代码(0

校验和

标识符

序列号

选项(若有)

 

 

 

 

 

wireshark验证FCS_字段

 

封包详细信息:

第一行,帧Frame 5指的是要发送的数据块,其中,所抓帧的序号为5,捕获字节数等于传送字节数:60字节;

第二行,以太网,有线局域网技术,是数据链路层。源Mac地址为04:f9:38:c9:6a:22;目标Mac地址为00:e0:4c:36:42:ac

第三行,IPV4协议,也称网际协议,是网络层;源IP地址为157.55.135.130;目标IP地址为172.31.116.114

第四行,TCP协议,也称传输控制协议,是传输层;源端口(443);目标端口(51018);序列号(1)ACKTCP数据包首部中的确认标志,对已接收到的TCP报文进行确认,值为1表示确认号有效;长度为0


TCP建立连接/三次握手

1、第一次握手:客户端发送SYN=1,seq=0给服务器

 

wireshark验证FCS_字段_02

 

第二次握手:服务器发送SYN=1,ACK=1,seq=0给客户端

 

 

wireshark验证FCS_wireshark验证FCS_03

 

第三次握手:客户端发送ACK=1给服务器

 

wireshark验证FCS_TCP_04

 

 

Frame信息分析:

wireshark验证FCS_字段_05

 

Arrival Time:到达时间,值为Nov 15, 2018 11:25:22.376476000

EPoch Time:信息出现时间,值为1542252322.376476000秒

 [ Time delta from previous captured frame: 0.125461000 seconds] :与之前捕获的数据帧时间差:0.125461000秒;

 [Time delta from previous displayed frame: 0.1253610000 seconds]:与之前显示的帧时间差: 0.125461000秒;

 [Time since reference or first frame: 0.350057000 seconds]:距参考帧或第一帧的时间差:10.350057000秒;

 Frame Number: 5,帧编号为5;

Frame Length: 60 bytes (480 bits),帧长度为60字节;

     Capture Length: 60 bytes (480 bits),捕获到的长度为60字节;

[Frame is marked: False],帧标记:无;

     [Frame is ignored: False],帧被忽略:无;

[Protocols in frame: eth: ethertype : tcp : data],协议帧:eth(以太网)、ethertype、tcp、data

[Coloring Rule Name: TCP RST],色彩规则名称:TCP RST;

[Coloring Rule String: tcp flags .reset. eq 1],色彩规则字符串:tcp flags.reset. eq 1;

Ethernet II信息分析:

 

wireshark验证FCS_IP_06

 

Destination: RealtekS_36:42:ac (00:e0:4c:36:42:ac),目标Mac地址为00:e0:4c:36:42:ac。

Source: HuaweiTe_c9:6a:22 (04:f9:38:c9:6a:22),源Mac地址为04:f9:38:c9:6a:22。

Type: IP (0x0800),类型是IP数据包。

IPv4 协议信息分析

 

wireshark验证FCS_wireshark验证FCS_07

 

Version: 4,IP协议版本为IPv4;

Header length: 20 bytes,头部数据长度为20字节;

Differentiated Services Field: 0x00 (DSCP : CS0, ECN : Not-ECT (Not ECN-ECT Transport)),区分的服务领域:0x00 (默认的是DSCP:0x00 );

Flags: 0x4000,(Don't Fragment),不支持分组;

Time to live: 229,TTL,生存时间为229,TTL通常表示包在被丢弃前最多能经过的路由器个数,当数据包传输到一个路由器之后,TTL就自动减1,如果减到0了还没有传送到目标主机,那么就自动丢失。

Header checksum: 0x3ecd [Validation disabled],头部校验和

Source: 157.55.135.130,源IP地址为 : 157.55.135.130;

Destination: 172.31.116.114,目标IP地址为 : 172.31.116.114;

Trasmission Control Protocol信息分析:

 

wireshark验证FCS_IP_08

 

 

端口号,数据传输的16位源端口号和16位目标端口号(用于寻找发端和收端应用进程)

相对序列号,该数据包的相对序列号为1(此序列号用来确定传送数据的正确位置,且序列号用来侦测丢失的包);下一个数据包的序列号是1

Acknowledgment number32位确认序列号,值等于1表示数据包收到,确认有效;

手动的数据包的头字节长度是20字节;

Flags,含6种标志;ACK:确认序号有效;SYN:同步序号用来发起一个连接;FIN:发端完成发送任务;RST:重新连接;PSH:接收方应该尽快将这个报文段交给应用层;URG:紧急指针(urgentpointer)有效;

windowTCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16bit字段,因而窗口大小最大为65536字节,上面显示窗口大小为1字节;

Checksum16位校验和,检验和覆盖了整个的TCP报文段,由发端计算和存储,并由收端进行验证;

UDPUser Datagram Protocol)信息分析

 

wireshark验证FCS_TCP_09

 

Source Port:51572——源端口号

Destination Port:5355——目的端口号

Checksum:0x4916[unverified]——校验和 

[Checksum Status: unverified]


三:实验工具

Wireshark抓包软件

四:实验步骤

安装Wireshark,简单描述安装步骤。安装步骤:下载Wireshark,选择组件(Choose Components),选择附加任务(Select Additional Tasks)安装WinPcapInstall WinPcap

  • 打开wireshark,选择接口选项列表。或单击“Capture”,配置“option”选项。
  • 设置完成后,点击“start”开始抓包,显示结果。
  • 选择某一行抓包结果,双击查看此数据包具体结构

五:分析

要求:以小组为单位,确定连接的网址,不能重复。