篇三 wireshark抓包 & 以太网帧结构 & TCP基础

发布于:2025-07-13 ⋅ 阅读:(19) ⋅ 点赞:(0)

一 前言

如题,本章主要介绍wireshark抓包,以太网帧结构,tcp基础知识

二 wireshark抓包

Wireshark是一款功能强大,免费的网络协议分析工具,可以说调试过网络问题的都用过,使用起来也非常简单,两步即可:
在这里插入图片描述
Wireshark抓的数据含有很多类型,我们可以在输入框输入指令对数据进行过滤,只展示我们想要的包,这里总结下常用的过滤指令,基本能够满足我们的需要:

过滤类型 过滤命令
IP过滤 ip.src_host == 192.168.1.41
ip.dst_host == 192.168.1.41
协议过滤 输入框直接输入:tcp/udp/http/arp
端口过滤 tcp.port == 8080 //来自端口8080 双向的包
tcp.srcport == 8080
tcp.dstport == 8080
多条件组合 与 &&/and
或 II/or
非 !/not

三 以太网帧结构

  1. 帧组成
组成部分 说明
payload 来自应用层下发数据
传输层header 标准头Tcp 20字节,udp 8字节
IP header 标准头20字节,若有选项字段则会更长
链路层header 14字节 dst mac 6字节 + src mac 6字节 + type 2字节

这里再补充几个概念

segment分段 属于tcp层,数据太大,传输层按 MSS 进行分段
fragment分片 属于IP层,IP 包太大,超过 MTU 被 IP 层分片
MTU 最大传输单元,链路层一次能发送的最大帧大小,以太网默认1500
MSS 最大报文长度,TCP数据部分最大长度,TCP默认1460(基于mtu1500)

由于IP层被动分片不可控,丢一片整包重传,主动分段可控,所以分段要比分片好

  1. 以太网帧结构分析
    在这里插入图片描述
    如上图所示,分析从wireshark抓取的帧数据,对照帧结构,可能更方便我们理解

四 TCP

  1. tcp和udp比较
类型 特点
TCP 有连接,可靠,有ack确认,有重传,流控机制
UDP 无连接,不可靠,无ack确认,无重传流控机制
  1. tcp几种机制介绍
机制 描述
滑动窗口 window机制是一种在发送方和接收方之间共同维护的数据流控机制
接收窗口rwnd: 表示接收方当前可接收的数据大小,由接收方在ACK报文中通知发送方
拥塞窗口 cwnd: 发送方根据网络拥塞状况(丢包延迟)动态调整
发送窗口:实际发送数据的限制窗口(可以理解为最大的空中数据),取min(rwnd,cwnd)
Keepalive 保活机制,当通讯双方长时间没有数据交互时,通过定期发送探测报文,判断对方是否还在线,连接是否有效,不是必须功能(协议栈里面可能默认不开启)

下面是几点说明:

  • 流量控制
    (1)指的是发送方不能无限制地发送数据,而要根据接收方的接收能力来调整发送速率,依赖于window窗口机制,确保接收方不会数据溢出或丢失。
    (2)流量控制主要是考虑接收方的处理能力,而拥塞控制主要是考虑网络路径的传输能力,防止网络拥塞
  • window size 和calculated window size差别
    window size :tcp head窗口字段只有2个字节,最大表示65535,现代网络中远远不够,引入了窗口缩放因子window size scale factor
    calculated window size = window size * window size scale factor //实际窗口大小
  • keepalive 下要了解的几个概念
    默认空闲时间t1:即空闲t1时间,发送第一个探测包
    探测间隔t2:如果没有回应,则过t2时间再发送一个探测包
    重试次数c:若连续C次探测无回应,则认为连接断开,关闭连接
    探测包内容:带ACK标志位,无数据内容的TCP报文
    注:keepalive并不是tcp独有,其他协议也有,udp里面要应用层模拟实现
  1. tcp三次握手
步骤 方向 标志位 含义
第一次 客户端->服务器 SYN=1 客户端请求建立连接,发送SYN(seq=x)
第二次 服务器->客户端 SYN=1,ACK=1 服务端确认并回应,发送SYN(seq=y),ACK(x+1)
第三次 客户端->服务器 ACK=1 客户端确认服务器回应,发送ACK(y+1)

三次握手是通讯建立过程,同步连接双方的序列号和确认号,交换tcp窗口大小信息,连接建立完成后,双方进入established状态,可以开始传输数据

  1. tcp四次挥手
步骤 方向 标志位 含义
第一次 客户端->服务器 FIN=1 客户端请求断开连接
第二次 服务器->客户端 ,ACK=1 服务端确认收到
第三次 服务器->客户端 FIN=1 服务端也要断开
第四次 客户端->服务器 ACK=1 客户端确认断开,连接彻底关闭

这里思考几个问题:

  • 问题1 :为什么tcp建立连接过程需要三次握手而不是两次
    答:只有三次才能客户端角度,服务端角度,都确认双方的接收和发送能力正常

  • 问题2:tcp断开连接为什么需要四次
    答:tcp是全双工的,双方独立传输数据,断开连接时双方都要单独关闭自己方向

  • 问题3:客户端最后一个 ACK 之后,不是立即关闭,而是进入 TIME_WAIT(等待两倍最大报文寿命),为什么
    答:
    (1)确保客户端发送的最后一个ACK报文能正常到达服务端(防止ACK丢失情况)(2)防止旧连接数据影响新连接(经过TIME_WAIT后,旧连接所有报文都会从网络中消失)


网站公告

今日签到

点亮在社区的每一天
去签到