当前位置: 首页 > article >正文

Wireshark(1)

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章

 感谢泷羽sec 团队的教学
视频地址:wireshark(1)基本介绍和数据传输逻辑_哔哩哔哩_bilibili

本文将对Wireshark进行一个基本介绍以及数据传输的底层逻辑。

一. 什么是 Wireshark?

Wireshark 是开源的网络协议分析器,前身为 Ethereal,由 Gerald Combs 于 1998 年首次发布。它能够捕获网络中的数据包,并以详细的方式展示这些数据,便于用户分析网络通信的细节。


二. Wireshark 的主要功能

1.实时数据包捕获

  • 支持捕获网络接口上的实时流量。
  • 能捕获局域网内的各种协议数据。

2.协议解析

  • 支持上千种网络协议(如 TCP/IP、HTTP、FTP、DNS、TLS 等)。
  • 自动解析协议结构并提供详细解读。

3.数据包过滤

  • 提供强大的捕获过滤器(Capture Filter)和显示过滤器(Display Filter)。
  • 可按 IP 地址、端口号、协议类型、数据内容等条件过滤。

4.数据包分析

  • 通过统计功能分析流量分布、协议使用情况和网络延迟。
  • 支持 TCP 重组、SSL/TLS 解密等高级功能。

5.数据存储与导出

  • 捕获的数据可保存为 .pcap 或 .pcapng 格式,便于后续分析。
  • 支持导出特定数据包或字段。

6.支持多平台

  • 可运行在 Windows、Linux、macOS 等操作系统上。

三. Wireshark 的应用场景

1.网络故障诊断

  • 分析网络延迟、丢包和带宽问题。
  • 排查网络连接失败的原因。

2.安全审计与渗透测试

  • 检测潜在的网络攻击,如 ARP 欺骗、DNS 劫持等。
  • 捕获和分析恶意流量。

四. 如何安装 Wireshark

1.Windows 安装

  1. 前往 Wireshark 官网 下载对应版本。
  2. 运行安装程序,根据提示完成安装。
  3. 可选安装 npcap(用于数据包捕获)和 Wireshark 的 CLI 工具。

ba0a45f6bc7047f49679dde5fdb60578.png

2.Linux 安装

  • 使用包管理器安装:
    yum install wireshark
  • 安装完成后,确保用户有权限运行 Wireshark:
    sudo usermod -aG wireshark <username>

6ba2ff22e18d48b8bb0a20af5d08bfce.png

抓取eth0接口流量

sudo tshark -i eth0

5fd3b0ea64fc4eb881739328a0c7ed4b.png

macOS 安装

  • 使用 Homebrew 安装:
    brew install --cask wireshark

五. Wireshark 的基本操作

1.启动 Wireshark

  • 打开 Wireshark 后,选择要监控的网络接口。
  • 双击需要监听的接口开始捕获数据包。

06640242acaa45038d46023921950de0.png

2.使用过滤器

  • 捕获过滤器:在开始捕获前设置,例如只捕获 HTTP 流量:
    port 80

0436dbe0e653409a9ac47e173b80eeb3.png

  • 显示过滤器:在捕获后对数据包进行筛选,例如只显示 TCP 流量:
    tcp

b3fe0b32128c43d9bb604c84ef5ab331.png

分析数据包

  • 双击数据包查看详细信息。
  • 使用右键菜单跟踪 TCP 流(Follow TCP Stream)查看会话完整性。

013bd9f7899f44ac8c42b8499ef17e08.png

保存与导出

  • 捕获完成后,点击 File > Save As 保存数据包文件。

ef53b0904a5f4cb58b51bde2d6326376.png

  • 使用 Export Specified Packets 导出特定流量。

5216c55ecaed418ca7b5f137c0ab8d9c.png

六.数据传输的底层逻辑

1. 分层模型详解

数据传输依赖 OSI 模型 或 TCP/IP 模型。通过分层设计,每一层都关注特定功能,且互相独立。

OSI 七层模型:

物理层

  • 负责实际信号传输。
  • 包括电缆、光纤、无线信号等。
  • 传输比特流(0 和 1),定义电压、电流、光信号的强弱等物理特性。
  • 示例:USB、以太网(PHY 部分)、蓝牙。

数据链路层

  • 负责点到点的帧传输,提供错误检测。
  • 将数据封装为帧,包含源和目的 MAC 地址。
  • 子层:
    • 逻辑链路控制(LLC):负责流量控制、帧同步。
    • 媒体访问控制(MAC):控制物理设备访问传输介质。
  • 示例:以太网(MAC 部分)、Wi-Fi。

网络层

  • 负责路由与逻辑地址(IP 地址)。
  • 数据以数据包(Packet)形式传输。
  • 提供跨网络的通信路径选择。
  • 示例:IP(IPv4、IPv6)、ICMP(Ping 命令)。

传输层

  • 提供端到端通信。
  • TCP(Transmission Control Protocol):
    • 可靠传输,支持确认(ACK)、重传、流量控制。
  • UDP(User Datagram Protocol):
    • 无连接协议,速度快但不保证可靠性。
  • 数据以段(Segment)形式传输。
  • 示例:HTTP 用 TCP;DNS、视频流用 UDP。

会话层

  • 管理应用程序之间的会话。
  • 负责会话建立、管理和终止。
  • 示例:SQL 数据库的会话管理。

表示层

  • 处理数据格式化、加密、解密和压缩。
  • 示例:JPEG、GIF(数据格式);TLS(加密)。

应用层

  • 面向用户,提供网络服务。
  • 示例:HTTP、FTP、SMTP。

TCP/IP 模型:

  • 应用层:对应 OSI 的应用、表示、会话层。
  • 传输层:对应 OSI 的传输层。
  • 网络层:对应 OSI 的网络层。
  • 网络接口层:对应 OSI 的数据链路层和物理层。

2. 数据封装与解封装

发送端的封装过程:

应用层

  • 应用生成数据(如网页请求)。
  • 示例:GET /index.html HTTP/1.1

传输层

  • 数据分段,加 TCP/UDP 头部:
    • TCP:源端口、目标端口、序列号、校验和。
  • 传输段示例:
    |TCP Header| 应用数据 |

网络层

  • 为每段数据添加 IP 头:
    • 源 IP 地址、目标 IP 地址、TTL 等。
  • 数据包示例:
    |IP Header| TCP Header| 应用数据 |

数据链路层

  • 加入帧头和帧尾:
    • 帧头包含源 MAC 地址、目的 MAC 地址。
  • 数据帧示例:
    |帧头| IP Header| TCP Header| 应用数据 | 帧尾 |

物理层

  • 转换为电信号或光信号进行传输。

接收端的解封装过程:

数据逐层解封,剥离各层头部信息,最终交给应用。


3. 可靠传输机制

TCP 的可靠性:

三次握手

  • 确保双方建立连接。
  • SYN、SYN-ACK、ACK 确认机制。

错误检测与校验

  • 使用校验和确保数据完整性。
  • CRC 检测物理层和数据链路层错误。

重传机制

  • 超时重传:发送端等待确认超时后重发数据。
  • 快速重传:接收端发现数据丢失时发送重复 ACK。

流量控制

  • 滑动窗口协议动态调整传输速率。
  • 防止接收端因处理能力不足而丢包。

拥塞控制

  • 避免网络过载,使用慢启动和拥塞避免算法。

4.路由与寻址

逻辑地址与物理地址:

  • IP 地址:用于网络层,确定网络中设备的位置。
  • MAC 地址:用于数据链路层,局域网内标识设备。

路由过程:

  • 路由器根据 IP 地址转发数据包。
  • 动态路由协议(如 OSPF、BGP)更新路由表。

地址解析协议(ARP):

  • 将 IP 地址映射为 MAC 地址。
  • 示例:发送 ARP 请求广播,接收设备返回其 MAC 地址。

数据多路复用与分用

多路复用

  • 多个应用通过一个网络连接传输数据。
  • 使用端口号区分不同应用。

分用

  • 接收端根据端口号将数据交给对应的应用。

6. 网络安全保障

加密

  • 使用 TLS、IPSec 等协议加密数据。

身份认证

  • 公钥/私钥机制验证身份(如 SSH)。

防篡改

  • HMAC 等校验完整性。

7. 底层硬件支持

传输介质

  • 有线:双绞线、光纤。
  • 无线:Wi-Fi、5G。

网络设备

  • 交换机:基于 MAC 地址转发数据。
  • 路由器:基于 IP 地址转发数据。

网卡

  • 实现设备与网络的连接。

 


http://www.kler.cn/a/448905.html

相关文章:

  • 【YashanDB知识库】jdbc查询st_geometry类型的数据时抛出YAS-00101错误
  • Golang学习历程【第三篇 基本数据类型类型转换】
  • GitCode 光引计划投稿|JavaVision:引领全能视觉智能识别新纪元
  • oracle: create new database
  • UE5 猎户座漂浮小岛 12 技能 瞬移 重力控制
  • 鸿蒙app封装 axios post请求失败问题
  • 【Python使用】嘿马头条项目从到完整开发教程第9篇:缓存,1 缓存穿透【附代码文档】
  • 初试Docker
  • 【openwrt】openwrt NAT64 NAT46实现简介
  • 【计算机视觉】opencv-停车位检测原理及代码演示
  • 摆脱 `div`!7 种更语义化的 HTML 标签替代方案
  • voxelize_cuda安装 笔记
  • 【新教程】Ubuntu server 24.04配置无线网WiFi
  • 【BaseFunctions】- KRTS C++示例精讲(1)
  • Cline 3.0发布:从AI编程助手到通用智能体平台的进化
  • Docker搭建YesPlayMusic云音乐播放器并实现异地远程连接播放歌曲
  • LeetCode2108 找出数组中的第一个回文字符串
  • docker 部署win系统
  • 天融信网络架构安全实践
  • 从零开始k8s-部署篇
  • 负载均衡式在线OJ
  • Python中的元类
  • 新版Android Studio 2024.1.2版本,如何通过无线wifi连接手机实现交互
  • 代码随想录 day50 第十一章 图论part01
  • 富唯智能 3D 视觉定位:为汽车零部件制造注入高效精准 “源动力”
  • GA-BP回归-遗传算法(Genetic Algorithm)和反向传播神经网络(Backpropagation Neural Network)