🎼个人主页:金灰
😎作者简介:一名简单的大一学生;易编橙·终身成长社群的嘉宾.✨
感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️
🍊易编橙·终身成长社群🍊 : http://t.csdnimg.cn/iSLaP 期待您的加入~
免责声明:本文仅做分享...
目录
官方文档
WireShark简介
WireShark的应用
WireShark快速分析数据包技巧
混杂/普通模式介绍:
切换模式
过滤器使用:
筛选源地址或目的地址
TCP协议 包
3 次握手
握手1
握手2
握手3
4次挥手
udp协议 包
ARP 协议 包
广播请求的包 (request)
应答的包 (reply)
小结
ICMP 协议 包
请求包
应答包
HTTP 协议 包
官方文档
https://www.wireshark.org/docs/
WireShark简介
Wireshark是一个网络封包分析软件。
网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用 WinPCAP 作为接口,直接与网卡进行数据报文交换。
WireShark的应用
网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协议除错,普通使用者使用Wireshark来学习网络协议的相关知识。
当然,有的人也会“居心回测”的用它来寻找一些敏感信息....
WireShark快速分析数据包技巧
(1)确定Wireshark的物理位置。如果没有一个正确的位置,启动Wireshark后会花费很长的时间捕获一一些与自己无关的数据。
(2)选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
(3)使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
(4)使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。
(5)使用着色规则。通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用着色规则高亮显示。
(6)构建图表。如果用户想要更明显的看出一个网络中数据的变化情况,使用图表的形式可以很方便的展现数据分布情况。
(7)重组数据。当传输较大的图片或文件时,需要将信息分布在多个数据包中。这时候就需要使用重组数据的方法来抓取完整的数据。Wireshark的重组功能,可以重组一个会话中不同数据包的信息,或者是重组一个完整的图片或文件
混杂/普通模式介绍:
混杂模式:混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证
MAC 地址。(一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用.)普通模式下网卡 只接收发给本机的包 (包括广播包)传递给上层程序,其它的包一律丢弃。
切换模式
停止抓包-->捕获--->选项--->在所有接口上使用混杂模式-->开始
过滤器使用:
开始监听后,就有非常多的包包--->那么通过过滤器---根据自己的条件筛选自己想要的数据包。
筛选源地址或目的地址
ip.addr == xxx.xxx.xxx.xxx
ip.src_host == 192.168.1.53 or ip.dst_host == 192.168.1.1 ip.src_host == 192.168.1.53 表示源 IP 地址
ip.dst_host == 192.168.1.1 表示目的地址
我们中间用 or 进行了拼接,表示或 当然我们也可以使用 and 表示与,or 表示满足左右其中一个条
件就会显示符合条件的数据包,and 表示左右 2 个条件都满足才会显示。
TCP协议 包
tcp
tcp.flags.ack == 1
3 次握手 4 次断开.
3 次握手
握手1
一个 SYN 数据包,SYN=1 表示发送一个链接请求。这时 Seq 和 ACK 都是 0
握手2
服务端收到 SYN 连接请求返回的数据包 SYN=1,ACK=1 表示回应第一个 SYN 数据
包。
握手3
前面 3 个就是 TCP 建立链接的过程,后面的就是相互通信的过程了这个时候 seq 就会根据数据包的大小改变。
4次挥手
第一次挥手:服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入
FIN_WAIT_1 状态.第二次挥手:客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号
为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。 第三次挥手:客户端发送 [FIN+ACK] 给对方,表示自己没有数据要发送了,客户端进入
LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。 第四次挥手:服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消
息。
服务端在 TIMED_WAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的
ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的
ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。
udp协议 包
我们使用过滤器输入“udp”以筛选出 udp 报文。但是为什么输入 udp 之后出现那么多种协议呢?
-->原因就是 oicq 以及 dns 都是基于 udp 的传输层之上的协议 扩展:
客户端向 DNS 服务器查询域名,一般返回的内容都不超过 512 字节,用 UDP 传输即可。
不用经过三次握手,这样 DNS 服务器负载更低,响应更快。
理论上说,客户端也可以指定向 DNS 服务器
查询时用 TCP,但事实上,很多 DNS 服务器进行配置的时候,仅支持 UDP 查询包。
ARP 协议 包
地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址
来找寻数据链路层地址的网络传输协议,它在 IPv4 中极其重要。
ARP 是通过网络地址来定位 MAC 地址。
广播请求的包 (request)
参考
应答的包 (reply)
参考
小结
总结:我们可以看到到应答包补全了自己的 MAC 地址,目的地址和源地址做了替换.
两个数据包的请求和过程: (一问一答)
192.168.1.2 广播:谁有 192.168.1.1 的 MAC 地址?
192.168.1.1 应答:192.168.1.1 的 MAC 地址是 xxxxxxxxxxx
ICMP 协议 包
ping
过程:
本机发送一个 ICMP Echo Request 的包
接受方返回一个 ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令
请求包
参考
应答包
HTTP 协议 包
我们还是筛选 TCP 协议因为 HTTP 是 TCP 的上层协议,所以我们过滤 TCP 的数据会包含 HTTP 协
议的数据包.curl -I baidu.com
curl 是一个在命令行下工作的文件传输工具,我们这里用来发送 http 请求
-I 大写的 i 表示仅返回头部信息。
我们可以看到我们抓到了 TCP 的 3 次握手 4 次断开 第一步:我们我们发送了一个 HTTP 的 HEAD 请求
第二步:服务器收到我们的请求返回了一个 Seq/ACK 进行确认
第三步:服务器将 HTTP 的头部信息返回给我们客户端 状态码为 200 表示页面正常
第四步:客户端收到服务器返回的头部信息向服务器发送 Seq/ACK 进行确认
发送完成之后客户端就会发送 FIN/ACK 来进行关闭链接的请求。 右键--追踪流.
......