Wireshark是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,并以用户友好的方式呈现这些数据包的内容。Wireshark 被广泛应用于网络故障排查、安全审计、教育及软件开发等领域。关于该工具的安装请参考之前的文章:地址 ,接下来开始正式讲解其实用技巧。
目录
ARP协议分析
ARP(Address Resolution Protocol),也叫地址解析协议,是一种用于将网络层地址(如IP地址)转换为数据链路层地址(如MAC地址)的协议。根据IP地址获取物理地址的一个TCP/IP协议。
接下来我们使用wireshark来抓取一下arp的包,这里我们使用cmd去ping一下百度的包进行尝试:
然后我们通过显示过滤器来检索一下arp的包处理进行查看:
我们点击数据包查看具体的信息,其展示的具体数据含义如下:
Ethernet II, Src: 源mac地址 Dst: 目标mac地址
Address Resolution Protocol (request):发送request请求包
Hardware type: Ethernet (1):硬件类型
Protocol type: IPv4 (0x0800):网络层协议类型
Hardware size: 6:mac地址长度
Protocol size: 4:协议长度
Opcode: request (1):请求
Sender MAC address: XiaomiMobile_df:5e:6a (88:c3:97:df:5e:6a):路由物理地址
Sender IP address: 192.168.31.1:网关发送者IP
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00):目标mac地址
Target IP address: 192.168.31.8:目标ip
Address Resolution Protocol (reply):接收reply响应请求包
Opcode: reply(2):响应
Sender MAC address: Intel_3f:4a:d5 (d4:e9:8a:3f:4a:d5):发送者的MAC地址
Sender IP address: 192.168.31.8:发送者的IP地址
总的来说,ARP协议是用于将网络层地址转换为数据链路层地址的重要协议,它使得主机和路由器能够正确地通信,并且对于构建局域网等小型网络非常重要。
ICMP协议分析
ICMP(Internet Control Message Protocol),也称互联网控制消息协议,是用于在IP网络上发送控制消息的协议。它通常被用于诊断网络问题、报告错误和提供状态信息。
icmp协议一般是我们在发送ping的请求会产生,所有这里我们使用cmd去ping一下本地电脑的网关进行尝试:
接下来我们选择其中一条数据,对该数据包中的数据进行一个简单的解读:
Frame 33:物理层相关基础信息
Ethernet II:链路层相关基础信息
Internet Protocol Version:基于ip协议的相关基础信息
Internet Control Message Protocol:ICMP相关数据描述
Type: 8 (Echo (ping) request):发的请求包
Code:0:代表响应,发送成功
Checksum: 0x4cb3 [correct]:检查发送网关的数据是否被篡改过,校验完整性
[Checksum Status: Good] Identifier (BE): 1 (0x0001):校验结果未Good,表示没有问题
Identifier (LE): 256 (0x0100):表示标识符的值, 用于区分不同的数据包或会话。
Sequence Number (BE): 168 (0x00a8):表示序列号的值,用于按顺序排列和跟踪数据包的传输顺序。
Sequence Number (LE): 43008 (0xa800):表示序列号的值,序列号用于按顺序排列和跟踪数据包的传输顺序。
[Response frame: 34]:表示一个响应帧是对先前发送的请求帧的回应。
Data:具体发给网关的数据包,是一个加密的数据
总的来说,ICMP 是一种网络协议,用于在 IP 网络上传输控制消息,以确保网络的正常运行并提供诊断和错误报告功能。
TCP协议分析
TCP(Transmission Control Protocol),也称传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层协议。它在计算机网络中扮演着至关重要的角色,用于确保数据的可靠传输。
握手和挥手过程是 TCP 协议中重要的步骤,用于建立和断开连接。通过三次握手,客户端和服务器建立起可靠的连接;通过四次挥手,双方安全地关闭连接,确保数据的可靠传输和连接资源的释放。以下对tcp的三次握手四次挥手做一个简要的概述:
三次握手:是建立 TCP 连接时使用的一种协议,用于确保通信双方能够正常交换数据。下面是 TCP 三次握手的流程:
第一步:客户端向服务端发送连接请求(SYN)
客户端(Client)首先向服务端(Server)发送一个带有 SYN(同步序列编号)标志的数据包,表示客户端想要建立连接,并选择一个初始的序列号(Sequence Number)。
第二步:服务端收到连接请求并回复(SYN + ACK)
服务端收到客户端发送的 SYN 数据包后,会回复一个带有 SYN 和 ACK 标志的数据包,表示服务端已经接受了客户端的连接请求,并选择自己的初始序列号,同时确认客户端的序列号。
第三步:客户端收到服务端的回复并发送确认(ACK)
最后,客户端再次向服务端发送一个带有 ACK 标志的数据包,表示客户端也确认了服务端的序列号。
完成了以上三个步骤,TCP 连接就建立起来了,通信双方可以开始正常地进行数据传输。
总的来说,TCP 三次握手协议确保了通信双方都能够正确地同步序列号,并确认彼此的能力和意愿进行数据传输,从而建立起可靠的连接。以下是具体流程图的实现:
如下是tcp建议三次握手的流程,其他具体参数的含义大家自行去了解,这里不再赘述:
四次挥手:在TCP连接中,当一端决定关闭连接时,需要经过四个步骤来完成连接的断开。下面是 TCP 四次挥手的流程:
第一步:当客户端决定关闭连接时,会发送一个 FIN(结束)报文段给服务器,表示不再发送数据。客户端进入 FIN_WAIT_1 状态。
第二步:服务器收到客户端的 FIN 报文段后,会发送一个 ACK 报文段作为确认,表示已经收到了客户端的关闭请求。服务器进入 CLOSE_WAIT 状态。
第三步:如果服务器也希望关闭连接,它会发送一个 FIN 报文段给客户端,表示自己也准备关闭连接。服务器进入 LAST_ACK 状态。
第四步:客户端收到服务器的 FIN 报文段后,会发送一个 ACK 报文段作为确认,并进入 TIME_WAIT 状态。在经过一段时间后,客户端关闭连接,服务器也关闭连接,双方完成挥手,进入 CLOSED 状态。
四次挥手确保了双方在关闭连接时的可靠性和顺利性,同时允许双方在关闭前完成未完成的数据传输。这一过程是TCP连接的正常断开流程,以确保数据的完整性和连接资源的释放。以下是具体流程图的实现:
这里我们可以通过流量图的方式查看,点击统计流量图
选择tcp
查看tcp四次挥手的流程如下:
HTTP协议分析
HTTP(HyperText Transfer Protocol),是一种用于传输超文本的应用层协议。它是一种无状态的协议,通常基于客户端-服务器模型,在Web浏览器和Web服务器之间传输数据。其底层也是用到了tcp协议,所有来说相对简单一点。
接下来我们通过cmd终端命令请求一下百度,并抓取一下网络的包,如下:
接下来我们开始分析一下数据包:
然后我们建议对请求成功的数据进行数据流追踪: