wireshark的安装使用及相关UDP、TCP、 ARP

发布于:2024-05-09 ⋅ 阅读:(37) ⋅ 点赞:(0)

初步了解:

进入wireshark后如图:

屏幕截图 2024-04-28 171149

从图中可以看到很多网络连接在操作的时候我们需要监测哪些 我们可以直接在本地的运行框中输入ipconfig来查看

如图:

屏幕截图 2024-04-28 172641

从以上图片中我们可以清楚地看到哪些网络连接已经连接的我们只需要按需监测他们即可

但是我们的发现在最上面的图片中的序号3所指向的Adapter for loopback traffic capture这个是用来捕获环回流量的

环回流量

  1. 本地主机之间的通信:

    当你在本地主机上运行一个服务器应用程序(如 Web 服务器、数据库服务器等)时,客户端与服务器之间的通信可能会使用环回接口。例如,你在本地主机上运行一个 Web 服务器,并通过浏览器访问该服务器,此时浏览器向服务器发送的 HTTP 请求就会经过环回接口。

  2. 本地主机上的网络服务:

    当你在本地主机上运行一个网络服务(如 DNS 服务器、代理服务器等)时,该服务可能需要与自身进行通信。例如,当你的计算机上运行一个 DNS 服务器,并且其他程序需要解析域名时,这些程序向本地 DNS 服务器发送的 DNS 查询请求就会经过环回接口。

    在wireshark中存在两种模式

屏幕截图 2024-04-28 175854

具体开启方式如图标注:

屏幕截图 2024-04-28 180558

屏幕截图 2024-04-28 180609

Tcp

TCP全称传输控制协议,必须对数据的传输进行控制

tcp连接三次握手:

(第一次握手syn=1,第二次syn=1 ack=1,第三次ack=1)

屏幕截图 2024-05-04 182226

tcp.flags.syn==1 and tcp.flags.ack==0表示筛选出由本机发送的请求并且通信协议是tcp其中的flags表示数据包头部中的特定位或字段

在 TCP 协议中,常见的标志位包括:

  1. SYN(同步):用于发起连接,表示请求建立连接。

  2. ACK(确认):用于确认数据包的接收,表示已收到数据包。

  3. FIN(结束):用于关闭连接,表示不再发送数据。

  4. RST(复位):用于重置连接,表示连接异常或被拒绝。

  5. PSH(推送):用于立即传送数据,表示应用层数据应立即传输而不缓存。

  6. URG(紧急):表示数据包中有紧急数据,需要优先处理。

具体如图:

第一次握手:

屏幕截图 2024-05-04 185641

第二次握手:

屏幕截图 2024-05-04 191106

第三次握手:

屏幕截图 2024-05-04 191125

我们可以在流量图中很形象的看到三次握手 具体操作如图:

屏幕截图 2024-05-04 192704

流量图如图:

屏幕截图 2024-05-04 193501

找到正确的流量指向方法:(可以依据目标ip、端口和源ip、端口即可)

tcp连接断开四次挥手

原理如图:

屏幕截图 2024-05-04 194913

屏幕截图 2024-05-04 195203

相关数据:

屏幕截图 2024-05-04 211423

第一次挥手:

屏幕截图 2024-05-04 211449

第二次:

屏幕截图 2024-05-04 211530

第三次:

屏幕截图 2024-05-04 211616

第四次:

屏幕截图 2024-05-04 211625

关于在wireshark中的相关过滤的操作:

tcp.flags.syn==1 and tcp.flags.ack==0可以找到三次握手(根据三次握手的信息不同即可做出区分)

ip.src_host==127.0.0.1(可以找到指定ip所发送的请求)

ip.dst_host==202.108.22.5(可以找到数据所发送到的地方)

二者可以通过or或者and来连用

如图:

屏幕截图 2024-04-28 214116

ip.addr==127.0.0.1(此命令可以把ip为127.0.0.1的全部显示出来)

ARP协议

地址解析协议ARP(Address Resolution Protocol)

分类:普通ARP、反向ARP(RARP)、免费ARP和代理ARP

网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的

根据IP地址获取物理地址一个TCP/IP协议

这句话的意思是(根据IP地址获取物理地址一个TCP/IP协议"的意思是指通过使用 TCP/IP 协议来查询某个设备的 IP 地址,然后利用这个 IP 地址去获取相应设备的物理地址(即 MAC 地址)。这个过程通常通过 ARP(地址解析协议)来实现,ARP 会将 IP 地址映射到对应的 MAC 地址)

根据 IP 地址获取物理地址的过程涉及到 TCP/IP 模型中的多个层面:

  1. 物理层:物理层定义了数据传输的物理媒介和信号传输的规范。尽管获取物理地址的过程通常不直接涉及物理层,但是在实际数据传输中,通过物理层的传输媒介,如网线、无线信号等,才能确保数据帧从源设备传输到目标设备。

  2. 数据链路层:数据链路层负责将数据帧从一个网络设备传输到相邻的网络设备。在这个层面上,每个网络设备都有一个唯一的物理地址,即 MAC 地址。ARP 协议在数据链路层上实现,用于将 IP 地址映射到对应的 MAC 地址,以便进行数据帧的传输。

  3. 网络层:网络层使用 IP 地址来唯一标识网络中的设备,并负责数据包的路由和转发。获取物理地址的过程中,首先需要查询目标设备的 IP 地址,然后通过 ARP 协议将该 IP 地址映射到相应的 MAC 地址,以确定数据帧的接收者。

  4. 应用层:尽管获取物理地址的过程通常不涉及应用层,但某些应用程序可能会利用网络信息(如 IP 地址)来实现特定功能,例如网络发现或远程管理。

根据 IP 地址获取物理地址的过程涉及到 TCP/IP 模型中的多个层面,包括物理层、数据链路层、网络层和在某些情况下可能涉及的应用层

根据 IP 地址获取物理地址的过程不涉及传输层因为输层主要负责从发送端到接收端的数据传输和通信

一个数据包的传输流程如下:

  1. 应用层:数据包从应用程序生成,该层负责应用程序与网络的通信。例如,HTTP、FTP、SMTP 等协议运行在应用层。

  2. 传输层:传输层负责提供端到端的通信服务。例如,TCP 和 UDP 协议运行在传输层,它们将数据分割成数据段,并添加相应的头部信息。

  3. 网络层:网络层负责将数据包从源主机传输到目标主机。在这个过程中,数据包被封装成 IP 数据包,并添加相应的 IP 头部信息。“路由器”等网络设备在网络层进行路由和转发。

  4. 数据链路层:数据链路层负责将数据包从一个网络设备传输到相邻的网络设备。在这个过程中,数据包被封装成帧,并添加相应的数据链路层头部信息。“交换机、网桥”等网络设备在数据链路层进行数据帧的转发。

  5. 物理层:物理层负责定义物理连接和传输介质的特性,例如电压、频率等。在这个层面上,数据被转换成比特流,并通过物理介质传输。

所以,在一个数据包的传输过程中,并不是所有的层都被逐一经过。例如,当两台主机在同一局域网中进行通信时,数据包可能只经过数据链路层和物理层,而不经过网络层和传输层。而在跨越多个网络进行通信时,数据包则会经过更多的层次。

在wireshark上操作

查看arp协议 建议可以先去随便ping一下这样比较方便的去看出网关和本机的交互过程

再看之前需要先去分清本地ip和网关ip

如图:(因为我在这里抓的是WLAN的包所以选择去查看WLAN分发的ip)

屏幕截图 2024-05-04 133337

然后如图:

屏幕截图 2024-05-04 132240

第一行:

  • Frame 13663: 这是数据包的编号,表示网络捕获工具捕获的第13663个数据包。

  • 60 bytes on wire (480 bits): 数据包在网络上传输时的大小,以字节和位表示。

  • 60 bytes captured (480 bits): 实际捕获到的数据包大小,以字节和位表示。

  • on interface \Device\NPF_{7921C416-3C04-48A7-8126-1736AC2C8BE7}: 数据包捕获时所使用的网络接口,这里是一个设备标识符。

  • id 0: 数据包的标识符,通常用于唯一标识捕获到的每个数据包

上图中的ARP部分如下:

屏幕截图 2024-05-04 134844

  • Hardware type(硬件类型): 指定硬件类型,这里是以太网(Ethernet)。

  • Protocol type(协议类型): 指定网络层协议类型,这里是IPv4。

  • Hardware size(硬件地址长度): 指定硬件地址的长度,这里是6个字节也就是48位(以太网地址的长度)。

  • Protocol size(协议地址长度): 指定协议地址的长度,这里是4个字节(IPv4地址的长度)。

  • Opcode(操作码): 指定ARP消息类型,这里是请求(request)。

  • Sender MAC address(发送者MAC地址): 指定发送ARP请求的设备的MAC地址,这里是 FiberhomeTel_2e:2d:40(68🇩🇪ce:2e:2d:40)。

  • Sender IP address(发送者IP地址): 指定发送ARP请求的设备的IPv4地址,这里是192.168.1.1。

  • Target MAC address(目标MAC地址): 指定要解析MAC地址的设备的MAC地址,这里是未知,表示正在请求目标设备的MAC地址。

  • Target IP address(目标IP地址): 指定要解析MAC地址的设备的IPv4地址,这里是192.168.0.159,表示正在请求该IP地址对应的设备的MAC地址。

这个过程表示的是网关在向本机请求mac地址的过程 其中192.168.0.159是本机ip

192.168.1.1是网关ip

以上是网关的请求(request)包 下面是本机的响应(reply)包

屏幕截图 2024-05-04 140453

从arp中可得出本机返回到网关中的数据包中含有本机的mac地址

wireshark之ICMP协议

ICMP(Internet Control Message Protocol,互联网控制消息协议)是用于在IP网络中发送错误报告和操作消息的协议

它可以帮助网络设备进行错误报告、连通性测试和路由器通知,从而确保网络的正常运行。它是TCP/IP协议族的一部分,通常用于网络设备之间的通信。以下是 ICMP 协议的一些重要特点:

  1. 错误报告:ICMP用于发送各种类型的错误报告,例如目标不可达、超时等。当路由器或主机在传输数据时遇到问题时,会向源发送ICMP错误报告。

  2. Ping测试:ICMP还用于执行ping测试,即向目标主机发送一个ICMP回显请求(Echo Request),然后接收目标主机发送的回显回复(Echo Reply)。这种测试通常用于确定网络连接的连通性和延迟。

  3. 路由器通知:ICMP也可以用于向网络中的设备发送路由器通知。例如,当一个路由器重新启动或一个网络出现故障时,它可以发送ICMP通知,通知其他设备发生了什么情况。

  4. 消息类型:ICMP消息分为多种类型,包括错误消息和查询消息。错误消息用于指示发生了某种错误,而查询消息用于向其他设备发出请求或回复。

  5. 轻量级:ICMP是一个轻量级的协议,通常不需要建立连接就可以发送消息,因此它对网络开销很小。

如果想去瞅瞅icmp数据包长啥样我们可以去尝试直接ping个东西即可比如ping一下网关 不知道网关ip的话可以去在终端直接去ipconfig一下

如图:

屏幕截图 2024-05-04 145027

屏幕截图 2024-05-04 145233

  • Internet Control Message Protocol: 表示传输层使用的是ICMP协议。

  • Type: 8 (Echo (ping) request): ICMP消息类型,表示这是一个回显请求(ping请求)。

  • Code: 0: ICMP消息的代码字段,用于进一步指定消息类型。0表示发送成功

  • Checksum: 校验和字段,用于检测数据包在传输过程中是否发生了错误。

  • Identifier: 用于标识回显请求的唯一标识符。

  • Sequence Number: 用于标识回显请求的序列号。

  • Data: 数据字段,这里包含32字节的数据。

这个数据包是一个ICMP回显请求,即ping请求,发送者的IP地址是192.168.0.159,接收者的IP地址是192.168.0.1。

wireshark抓HTTP协议

可以在终端输入curl -I baidu.com

(这条命令是使用 curl 命令对百度网站发送一个 HEAD 请求,并输出响应的头部信息)

如图:

屏幕截图 2024-05-04 213246

流量图:

UDP 协议

UDP全称为用户数据报协议。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法

协议特点
1.无连接:只知道对端的IP和端口号就可以发送,不需要实现建立连接。(就像寄信)。
2.不可靠:没有确认机制, 没有重传机制。如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息。
3.面向数据报: 应用层交给UDP多长的报文, UDP原样发送既不会拆分,也不会合并。所以UDP不能够灵活的控制读写数据的次数和数量。
4.UDP存在接收缓冲区,但不存在发送缓冲区。UDP没有发送缓冲区,在调用send to时会直接将数据交给内核,由内核将数据传给网络层协议进行后续的传输动作。UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报文的顺序和发送UDP报的顺序一致,如果缓冲区满了再到达的UDP数据报就会被丢弃。

为什么UDP不需要发送缓冲区?

因为UDP不保证可靠性,它没有重传机制,当报文丢失时,UDP不需要重新发送,而TCP不同,他必须具备发送缓冲区,当报文丢失时,TCP必须保证重新发送,用户不会管,所以必须要具备发送缓冲区