网络基础实验(一)wireshark 验证TCP 三次握手
一 TCP 三次握手简介
TCP 三次握手是传输控制协议(TCP)在建立连接时的标准过程,其根本目的是在不可靠的IP网络之上,建立一个可靠的、面向连接的字节流传输通道
1.1 三次握手流程详解
| 握手阶段 | 发送方 | 标志位设置 | 序列号(SEQ)变化 | 确认号(ACK)变化 | 状态变化 | 核心目的解读 |
|---|---|---|---|---|---|---|
| 第一次握手 | 客户端 | SYN=1 |
seq = x(客户端随机生成初始序列号 ISN) |
不适用 (因尚未收到服务器序列号) |
CLOSED → SYN-SENT |
客户端询问:"你好服务器,我的起始号是x,你能收到吗?我们建立连接吧。" |
| 第二次握手 | 服务器 | SYN=1, ACK=1 |
seq = y(服务器随机生成自己的初始序列号 ISN) |
ack = x + 1(确认客户端的序列号x,期望下次从x+1开始接收) |
LISTEN → SYN-RCVD |
服务器应答:"收到你的请求(x),我同意连接。我的起始号是y,请确认。" |
| 第三次握手 | 客户端 | ACK=1 |
seq = x + 1(因第一次握手消耗一个序号) |
ack = y + 1(确认服务器的序列号y,期望下次从y+1开始接收) |
SYN-SENT → ESTABLISHED |
客户端最终确认:"好的服务器,确认收到你的起始号y。连接已就绪,可以开始传输数据了。" |
| 服务器收包后 | - | - | - | - | SYN-RCVD → ESTABLISHED |
服务器收到第三次握手的ACK,确认双向信道畅通,连接正式建立。 |
二 wireshark 报文分析
Wireshark 抓取的是包含 TCP 头的完整数据包,它同时包含了以太网头、IP 头和 TCP 头。其中以太网头负责数据链路层传输、IP 头负责网络层路由、TCP 头承载握手逻辑;
[以太网帧头][IP报文头][TCP报文头][数据]
2.1 以太网帧头 (Ethernet Header) - 14 字节
2.1.1 作用
负责单跳传输,即从你的电脑到你的路由器(或同一局域网内的下一台设备)。它不关心最终的 IP 地址,只关心当前网络的 MAC 地址。
2.1.2 字段位置和含义
| 字节位置 | 字段名 | 长度 | 说明 | 示例值 |
|---|---|---|---|---|
| 0-5 | 目的MAC地址 | 6字节 | 下一跳设备的物理地址 | 00:50:56:f3:6a:7c |
| 6-11 | 源MAC地址 | 6字节 | 发送方设备的物理地址 | 00:0c:29:8d:6e:8a |
| 12-13 | 以太网类型 | 2字节 | 上层协议类型 | 0x0800(IPv4) |
2.1.2 wireshark 显示示例
Frame 1: 74 bytes on wire (592 bits), 74 bytes captured (592 bits)
Ethernet II, Src: 00:0c:29:8d:6e:8a, Dst: 00:50:56:f3:6a:7c
Destination: 00:50:56:f3:6a:7c
Source: 00:0c:29:8d:6e:8a
Type: IPv4 (0x0800)
2.2 IP 报文头 (IP Header) - 20 字节
2.2.1 作用
位于以太网帧内部,负责网络层路由。
2.2.2 字段位置和含义
| 字节位 | 字段名 | 长度 | 说明 | 示例值 |
|---|---|---|---|---|
| 0-1 (比特0-3) | 版本/首部长度 | 4b/4b | IP版本和头部长度 | 0x45(IPv4, 20字节) |
| 1 (比特4-7) | 服务类型 | 1字节 | 服务质量参数 | 0x00(常规服务) |
| 2-3 | 总长度 | 2字节 | 整个IP包长度 | 0x003c(60字节) |
| 4-5 | 标识 | 2字节 | 数据包标识 | 0x1a2b |
| 6-7 | 标志/片偏移 | 2字节 | 分片控制 | 0x4000(不分片) |
| 8 | 生存时间 | 1字节 | 最大路由跳数 | 0x40(64跳) |
| 9 | 协议 | 1字节 | 上层协议 | 0x06(TCP) |
| 10-11 | 首部校验和 | 2字节 | IP头校验 | 0x0000(可能被禁用) |
| 12-15 | 源IP地址 | 4字节 | 发送方IP | 192.168.1.100 |
| 16-19 | 目的IP地址 | 4字节 | 接收方IP | 93.184.216.34 |
2.2.3 wireshark 显示示例
Internet Protocol Version 4, Src: 192.168.1.100, Dst: 93.184.216.34
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 60
Identification: 0x1a2b (6699)
Flags: 0x4000, Don't fragment
Time to Live: 64
Protocol: TCP (6)
Header Checksum: 0x0000 [validation disabled]
Source Address: 192.168.1.100
Destination Address: 93.184.216.34
2.3 TCP 报文头 (TCP Header) - 至少 20 字节
2.3.1 作用
负责端到端的可靠连接管理。三次握手的所有关键动作都在这里发生
2.3.2 字段位置和含义
| 比特位置 | 字段名 | 长度 | 说明 | 第一次握手示例 | 第二次握手示例 | 第三次握手示例 |
|---|---|---|---|---|---|---|
| 0-15 | 源端口 | 16b | 发送方端口 | 0xc3a6(50086) | 0x0050(80) | 0xc3a6(50086) |
| 16-31 | 目的端口 | 16b | 接收方端口 | 0x0050(80) | 0xc3a6(50086) | 0x0050(80) |
| 32-63 | 序列号 | 32b | 数据字节序号 | 0x7a1b3c4d | 0x183d6e8f | 0x7a1b3c4e |
| 64-95 | 确认号 | 32b | 期望的下个序号 | 0x00000000 | 0x7a1b3c4e | 0x183d6e90 |
| 96-99 | 数据偏移 | 4b | TCP头长度(×4字节) | 0x8(32字节) | 0x8(32字节) | 0x8(32字节) |
| 100-107 | 保留 | 8b | 保留位 | 0x00 | 0x00 | 0x00 |
| 108-123 | 标志位 | 16b | 控制标志 | 0x002(SYN) | 0x012(SYN+ACK) | 0x010(ACK) |
| 124-139 | 窗口大小 | 16b | 接收窗口 | 0xfa00(64000) | 0xfaf0(64240) | 0xfa00(64000) |
| 140-155 | 校验和 | 16b | TCP校验和 | 0x8a3b | 0x7432 | 0x8a3c |
| 156-171 | 紧急指针 | 16b | 紧急数据位置 | 0x0000 | 0x0000 | 0x0000 |
标志位详细分解
| 比特位 | 标志名 | 含义 | 第一次握手 | 第二次握手 | 第三次握手 |
|---|---|---|---|---|---|
| 108 | CWR | 拥塞窗口减少 | 0 | 0 | 0 |
| 109 | ECE | ECN回显 | 0 | 0 | 0 |
| 110 | URG | 紧急指针有效 | 0 | 0 | 0 |
| 111 | ACK | 确认号有效 | 0 | 1 | 1 |
| 112 | PSH | 推送功能 | 0 | 0 | 0 |
| 113 | RST | 连接重置 | 0 | 0 | 0 |
| 114 | SYN | 同步序列号 | 1 | 1 | 0 |
| 115 | FIN | 结束连接 | 0 | 0 | 0 |
2.2.3 wireshark 显示示例
以下是第一次握手示例
Transmission Control Protocol, Src Port: 50086, Dst Port: 80, Seq: 0, Len: 0
Source Port: 50086
Destination Port: 80
[Stream index: 0]
[TCP Segment Len: 0]
Sequence Number: 0 (relative sequence number)
Sequence Number (raw): 2049004621
[Next Sequence Number: 1 (relative sequence number)]
Acknowledgment Number: 0
Acknowledgment Number (raw): 0
0101 .... = Header Length: 20 bytes (5)
Flags: 0x002 (SYN)
000. .... .... = Reserved: Not set
...0 .... .... = Nonce: Not set
.... 0... .... = Congestion Window Reduced (CWR): Not set
.... .0.. .... = ECN-Echo: Not set
.... ..0. .... = Urgent: Not set
.... ...0 .... = Acknowledgment: Not set
.... .... 0... = Push: Not set
.... .... .0.. = Reset: Not set
.... .... ..1. = Syn: Set
.... .... ...0 = Fin: Not set
Window: 64000
[Calculated window size: 64000]
Checksum: 0x8a3b [unverified]
Urgent Pointer: 0
Options: (12 bytes), Maximum segment size, SACK permitted, Window scale, No-Operation (NOP)
三 实验验证
3.1 实验环境
使用个人电脑通过ping 和curl 命令访问ustc.edu.cn 然后使用wireshark 抓包,分析三次握手。
wireshark 3.2.0
win10
3.2 实验工具
3.2.1 基础命令
获取公网ipv4 地址
ping -4 www.ustc.edu.cn

通过ipv4 访问网站
curl -4 http://www.ustc.edu.cn
查看本机mac,ip 地址
ipconfig/all
3.2.2 wireshark 条件过滤
wireshark 只抓取我们访问的ip
使用访问的公网ip 过滤
过滤条件
ip.host == 218.22.21.21

posted on 2025-11-17 11:38 weiwei2021 阅读(4) 评论(0) 收藏 举报
浙公网安备 33010602011771号