Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)

1.Wireshark抓包分析TCP

(1)TCP包具体内容

TCP报文结构

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第1张图片

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第2张图片

(2)Wireshark抓包分析TCP三次握手
TCP三次握手建立过程

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第3张图片

step1:客户端将TCP报文标志位SYN=1,确认标志位ACK=0,随机产生一个序号值seq=x,保存在TCP首部的序列号字段里,指明客户端打算连接的服务器的端口,并将该数据包发送给服务器端,发送完毕后,客户端进入SYN_SENT状态,等待服务器端确认,这是第一次握手;

step2:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将TCP报文标志位SYN=1和确认标志位ACK=1,头部确认号ack=x+1,随机产生一个序号值seq=y,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。并让客户端发送一个确认数据包,这是第二次握手;

step3:客户端收到确认后,检查ack是否为x+1ACK是否为1,如果正确则将标志位ACK置为1ack=y+1,并将该数据包发送给服务器端,服务器端检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。这是第三次握手。

Wireshark抓取TCP数据包分析三次握手

1.首先,启动Wireshark抓包,在浏览器输入网址www.huawei.com

2.执行ping www.huawei.com获取ip地址

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第4张图片

3.在显示过滤器中输入过滤条件筛选出待分析数据包列表

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第5张图片

由上图看到TCP建立三次握手的三个数据包

第一次握手数据包

客户端发送一个数据包,SYN=1,ACK=0,序列号从0开始,表示客户端请求建立连接

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第6张图片

第二次握手数据包

服务器端发会数据包,SYN=1,ACK=1,seq=0,ack=seq+1表示已接收的数据包数量

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第7张图片

第三次握手数据包

客户端重新传回确认包,SYN=0,服务器端检查ACK=1,ack=seq+1=1表示当前段成功接收数据位数

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第8张图片

TCP层FLAGS字段重要标识

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第9张图片

2.Wireshark抓包分析UDP

UDP简介:UDP是User Datagram Protocol用户数据报协议的简称。是OSI七层模型中一种无连接的传输层协议,提供面向事务的简单的不可靠信息传送服务。该协议用来支撑那些需要在计算机之间传输数据的网络应用,包括网络视频会议系统在内的众多的客户端-服务器模式的网络应用。

UDP协议的主要作用就是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单元,每一个数据包的前8字节用来包含包头信息,剩余字节则用来包含具体的传输数据。

UDP协议特点

  • UDP是一种无连接协议,无连接也就代表着传输不可靠

  • 不需要建立连接,一台服务器可以向多个客户机传输相同的消息

  • UDP信息包的标题很短,只有8个字节的大小,相比于TCP的20字节信息包,额外开销非常的小

  • 吞吐量不受拥塞控制算法的调节,只受软件生成数据速率、传输宽带、源端和目标端主机性能的限制

  • UDP使用尽最大努力交付

  • UDP是面向报文的

(1)UDP报文结构

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第10张图片

(2)Wireshark抓包分析UDP

由图可见,DHCP,DNS等协议都是基于UDP实现的

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第11张图片

3.Wireshark抓包分析ARP

(1)ARP协议介绍

ARP协议简介:ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

ARP原理及流程:在任何时候,一台主机有IP数据报文发送给另一台主机,它都要知道接收方的逻辑(IP)地址。但是IP地址必须封装成帧才能通过物理网络。这就意味着发送方必须有接收方的物理(MAC)地址,因此需要完成逻辑地址到物理地址的映射。而ARP协议可以接收来自IP协议的逻辑地址,将其映射为相应的物理地址,然后把物理地址递交给数据链路层。

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第12张图片

  1. Host1发送数据前会先检查自己的ARP缓存表,若有对应IP地址的MAC信息则直接封装到帧里进行发送,若没有则会通过ARP进行获取

  2. Host1会发送ARP Request报文来请求获取Host2的MAC地址(因为帧内没有目的MAC地址是不可以进行传输的,所以ARP报文内的目的MAC地址为全F)

  3. 因为ARP Request目的MAC地址为 FF-FF-FF-FF-FF-FF(广播数据帧),所以交换机收到后会直接对该帧进行泛洪(广播)操作,并且学习该IP的MAC地址以及端口号到交换机自己的MAC缓存表

  4. 所有主机都接受到该ARP Request报文后,都会检查该帧的目的IP地址与自身的IP地址是否匹配,不匹配就直接丢弃,Host发现与自己IP地址匹配,就会先把发送端的IP与MAC地址信息记录到自己的ARP缓存表之中,然后Host2就会发送ARP Reply报文(因为刚才进行了学习所以知道Host1的MAC地址,所以ARP Reply是单播数据帧)来进行响应

  5. 交换机收到单播数据帧以后,会对该帧进行转发操作,并且学习Host2的MAC地址和端口号到自己的MAC缓存表

  6. Host1收到Host2的ARP Reply报文后会检查目的IP与自己IP地址字段是否相同,如果匹配就将回应报文的源IP地址与MAC地址学习到自己的ARP缓存表之中,然后就可以传输信息进行通信

(2)Wireshark抓包分析ARP

第一个数据包信息

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第13张图片

第一个数据包发送(或广播)一条请求信息,询问目标端:谁有192.168.1.4的MAC地址,告诉192.168.1.1

第二个数据包信息

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第14张图片

第二个数据包表示:192.168.1.4的MAC地址是60:14:b3:7d:54:1d并单播数据帧回复给询问端

4.Wireshark抓包分析DNS

(1)DNS协议介绍

什么是DNS协议?

  • DNS是一套分布式的域名服务系统,每个DNS服务器上都存放着大量的机器名和IP地址的映射,并且是动态更新的

  • DNS协议将域名和IP地址相互映射

  • DNS协议是基于TCP和UDP协议的,端口号为53,用户到服务器采用UDP,DNS服务器通信采用TCP

  • DNS的一个基本特性是使用超高速缓存。即当一个名字服务器收到有关映射的信息(主机名字到IP地址)时,它会将该信息存放在高速缓存中。这样若以后遇到相同的映射请求,就能直接使用缓存中的结果而无需通过其他服务器查询。

一次完整的查询请求经过的流程:Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第15张图片

(2)DNS包结构

<1> DNS查询响应一般格式

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第16张图片

该报文由12个字节的首部和4个可变的字段组成

标识字段:由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。

标志字段:16 bit的标志字段被划分为若干子字段

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第17张图片

随后的 4个16 bit 字段说明最后 4个变长字段中包含的条目数。对于查询报文,问题( question )数通常是 1,而其他3项则均为0。类似地,对于应答报文,回答数至少是 1,剩下的两项可以是0或非0。

<2> DNS查询报文中的问题部分

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第18张图片

查询名:即要请求的域名,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为 0结束,长度为0的标识符是根标识符。

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第19张图片

<3> DNS响应报文中的资源记录部分

DNS报文中最后的三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录RR( Resource Record)的相同格式。

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第20张图片

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第21张图片

<4> DNS不同类型的资源记录

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第22张图片

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第23张图片

5.Wireshark抓包分析DHCP

(1)DHCP协议介绍

DHCP(Dynamic Host Configuration Protocol),动态主机配置协议:计算机用来获得配置信息的协议。DHCP容许给某一计算机赋以IP地址而不需要管理者在服务器数据中配置有关该计算机信息,而当 Client传送封包给Server时,采用的是UDP 67 Port,从 Server传送给 Client则是使用UDP 68 Port。

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第24张图片

(2)Wireshark抓包DHCP

主要是四个过程: 1.客户端发送广播报文,DHCP Discover; 2.服务器发送广播报文,DHCP Offer; 3.客户端回复广播报文,DHCP Request; 4.服务器分配IP的报文,DHCP ACK;

1.DHCP Discover

首先客户端发送255.255.255.255的广播报文,使用UDP传输层协议,源端口为68,目的端口为67

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第25张图片

2.DHCP Offer

此时客户端还没有分配IP地址,因此服务器仍然使用广播255.255.255.255地址进行发送;使用的源端口为67,目的端口为68;DHCP应用层协议,可以看见服务器已经发送地址的分配,客户端地址为192.168.1.4;

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第26张图片

3.DHCP Request

此时有可能会收到多个DHCP的offer请求,因此通过DHCP Request再次向服务器请求IP,此时的IP地址仍然为0.0.0.0

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第27张图片

4.DHCP ACK

最终服务器收到Request后,会发送Ack的消息,此后客户端的IP便确定下来

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第28张图片

6.Wireshark抓包分析HTTP

(1)HTTP协议介绍

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。

HTTP报文由三部分组成,开始行(请求报文中为请求行)、首部行和实体主体

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第29张图片

(2)Wireshark抓包HTTP

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第30张图片

Wireshark抓包(TCP/UDP/ARP/DNS/DHCP/HTTP)_第31张图片

你可能感兴趣的:(网络,tcp/ip,http,网络安全,网络协议,wireshark,python)