WireShark 抓包及常用协议分析

一.WireShark 简介和抓包原理及过程

1.Wireshark简介

Wireshark 是一个开源的网络数据包分析软件,它可以用于捕获和分析网络上的数据流量。Wireshark使用WinPCAP作为接口直接与网卡进行数据报文交换

2.Wireshark的应用

  1. 网络故障排除和诊断:Wireshark 可以捕获网络数据包并提供详细的协议分析,可以帮助网络管理员追踪和解决网络故障和问题。通过分析数据包,可以了解网络流量、延迟、丢包等问题的原因,并进行相应的修复。

  2. 监控网络性能:Wireshark 可以监视网络中的数据流量和带宽使用情况,帮助管理员了解网络的健康状况、优化带宽分配,并识别可能的性能瓶颈。

  3. 网络安全分析:Wireshark 可以检测和分析网络中的恶意活动和安全事件。可以通过分析数据包,发现潜在的攻击、嗅探、扫描等行为,并提供有关攻击者 IP 地址、攻击类型和目标的详细信息。

  4. 协议分析和开发:Wireshark 支持多种网络协议的解析和展示,可以帮助开发人员理解和调试网络应用程序的通信过程。开发人员可以利用 Wireshark 的协议分析能力,识别和解决通信问题,确保应用程序的正常运行。

  5. 教学和学习:Wireshark 是一个功能强大且易于使用的工具,可以用于教学和学习计算机网络知识。学生可以通过使用 Wireshark 来观察和分析网络数据包,深入理解各种网络协议的工作原理。

3.Wireshark快速分析数据包的技巧

1.确定Wireshark的物理位置,如果没有一个正确的位置,启动Wireshark后浪费很多时间捕获一些与自己无关的数据

2.选择捕获接口,一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其他数据对自己也没有任何帮助

3.使用捕获过滤器,通过设置捕获过滤器,可以避免产生过大的捕获数据,这样用户在分析数据时,也不会受其他数据干扰,还可以为用户节约大量时间

4.使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包在更细致,此时使用显示过滤器进行过滤。

5.使用着色规则,通常使用显示过滤器过滤后的数据,都是有用的数据包,如果想更加突出的显示某个会话,可以使用着色规则高亮显示。

6.构建图表,如果用想要更明显的看出一个网络中数据的变化情况,使用图表的形式可以很方便的展现数据的分布情况

7.重组数据。当传输较大的图片或文件时,需要将信息分布在多个数据包中,这个时候就需要使用重组数据的方式来抓取完整的数据。Wireshark的重组功能,可以重组一个会话中不同数据报的信息,或者是重组一个完整的图片或文件

二.WireShark的过滤器使用

1.在所有接口上使用混杂模式

2.过滤出TCP协议的数据包

3.过滤出端口为80的数据包

扩展:客户端向DNS 服务器查询域名,一般返回的内容都不超过512 字节,用UDP 传输就可以。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上来说,客户端也可以指定向 DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

4.原主机地址发送的数据包

(我的kali的IP地址是172.16.1.201)

5.过滤出源IP地址为172.16.1.201或目的IP地址为172.16.1.2的数据包

6.过滤出IP地址为172.16.1.201并且目的IP地址为172.16.1.2的数据包

7.无论源地址还是目的地址,只要一方为172.16.1.2都过滤出来

三.使用WireShark对常用协议抓包并分析原理

1.ARP协议-地址解析协议

地址解析协议-ARP(Address Resolution Protocol)是一种解决网络层地址与数据链路层地址之间映射关系的协议。它的作用是通过在局域网中将IP地址(网络层地址)与MAC地址(数据链路层地址)进行映射,从而实现数据的正常传输。

开始抓包--过滤出arp数据包-请求包

arp协议-应答包

2.ICMP协议

ICMP(Internet Control Message Protocol)是一种用于在IP网络中传递控制消息和错误报告的协议。它是TCP/IP协议族中的一个核心协议,常用于网络诊断和错误处理

ICMP-请求

ICMP-响应

3.TCP协议

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于流的传输层协议,在Internet应用广泛。TCP协议可以确保数据能够被完整、顺序地交付到目的地,并能够自动重传丢失的数据包,从而保证了网络中数据传输的可靠性。

TCP三次握手
  1. 第一次握手(SYN):
    客户端向服务器发送一个带有 SYN(同步)标志的TCP数据包,请求建立连接。这个数据包会包含一个随机生成的序列号(Seq)用于后续的数据传输。

  2. 第二次握手(SYN + ACK):
    服务器收到客户端发送的SYN数据包后,会向客户端发送一个带有 SYN(同步)和 ACK(确认)标志的TCP数据包作为响应。这个数据包中会包含服务器随机生成的序列号(Seq)和客户端序列号+1(Ack)。

  3. 第三次握手(ACK):
    客户端收到服务器发送的SYN + ACK数据包后,会向服务器发送一个带有 ACK(确认)标志的数据包。该数据包中的序列号被设置为客户端序列号+1(Ack)。这个数据包到达服务器后,服务器和客户端的连接就成功建立起来了。

流量图过滤出TCP很直观的看出三次握手

TCP四次挥手
  1. 第一次挥手(FIN):
    客户端向服务器发送一个带有FIN(结束)标志的TCP数据包,用于结束数据传输。这个FIN数据包通常包含一个客户端发给服务器的最后一个序列号(Seq)。一旦服务器收到这个数据包,它不会立即关闭连接,而是进入关闭等待状态。

  2. 第二次挥手(ACK):
    服务器收到客户端发送的FIN数据包后,向客户端发送一个带有ACK(确认)标志的TCP数据包作为响应,表示已经收到客户端的数据并将关闭连接。这个ACK数据包中的序列号(Seq)被设置为客户端序列号+1,也有可能携带服务器发给客户端的最后一个序列号(Ack)。

  3. 第三次挥手(FIN):
    如果一段时间后服务器没有需要发送给客户端的数据,它会向客户端发送一个带有FIN标志的TCP数据包,通知客户端可以关闭连接了。这个FIN数据包会包含服务器的序列号(Seq)以及一个Ack确认标志位,告诉客户端已经收到了某些数据包。

  4. 第四次挥手(ACK):
    客户端收到服务器发送的FIN数据包后,向服务器发送一个带有ACK(确认)标志的TCP数据包作为响应,标识着客户端也已经关闭TCP连接。这个ACK数据包中的序列号(Seq)被设置为客户端序列号+1,服务器收到这个ACK数据包后,就关闭了TCP连接。

4.HTTP协议

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议。它是现代互联网中最常用的协议之一,用于在客户端和服务器之间传送HTML、CSS、JavaScript、图像、视频和其他类型的多媒体文件。

用curl 发送一个HTTP请求

第一步:发送一个HTTP的HEAD请求

第二步:服务器收到我们的请求返回了一个 Seq/ACK 进行确认

 第三步:服务器将HTTP的头部信息返回给我们客户端

第四步:客户端收到服务器返回的头部信息向服务器发送Seq/ACK 进行确认

发送完成之后客户端就会发送FIN/ACK来进行关闭链接的请求

右键-tcp追踪流

实例:

解决kali可以ping通网关却不能上网的问题

拓展:

TTL:数据报文的生存周期

默认linux操作系统值:64,每经过一个路由节点,TTL值减1。TTL值为0时,说明目标地址不可达并返回:Time tolive exceedede

作用:防止数据包,无限制的在公网中转发

修改系统内核参数为默认值64,就可以上网了

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lin___ying

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值