HCIA 学习笔记 Day2:网络层协议与传输层原理
# 一、IP 报头
# 1、网络层的功能:寻址和路由
1)定义 IP 地址,连接不同的网络,选择最佳路径
# 2、IP 数据报报头字段
1)IP 报头有两部分组成:固定部分和可选项部分
2)IP 报头的固定部分 为 20 字节

| 字段 | 描述 |
|---|---|
| 版本 | 表示 IP 协议的版本是 IPv4 还是 IPv6 |
| 首部长度 | 表示 IP 报头大小,固定长度 20 字节,可选项最多 40 字节 |
| 优先级与服务类型 | 表示是否有需要优先发送的报文 |
| 总长度 | 表示 IP 报头 + 数据的总大小;由于 MTU(最大传输单元)的限制,长度超过 1500 字节的数据报都将被分片传输 |
| 标识符 | IP 数据报的编号,标识主机发送的每一个数据报,同一个数据报的所有分片都具有相同的标识值 |
| 标志 | 表示数据是否进行了分片 |
| 段偏移量 | 表示该 IP 包在该组分片包中的位置 |
| TTL | 生存时间;每个数据报发出去时,会添加一个生存时间;数据包每经过一台路由器,TTL 值会减 1,当 TTL 为 0 时,数据包被丢弃;TTL 可以防止数据包陷入路由死循环,预防路由环路,避免数据包在网络中无限循环浪费带宽资源 |
| 协议号 | 表示 IP 协议上层所使用的协议;常见协议号:1=ICMP, 6=TCP, 17=UDP |
| 首部校验和 | 用来做 IP 头部的正确性检测,但不包含数据部分 |
| 源 IP 地址 | 表示发送这个数据包的设备的 IP 地址 |
| 目标 IP 地址 | 表示接收这个数据包的设备的 IP 地址 |
# 3、数据包分析
使用 科来网络分析工具 抓取 TCP 报文并分析

# 4、TTL 字段验证实验
1)拓扑

基础配置: | |
<Huawei>undo terminal monitor // 关闭消息 | |
<Huawei>system-view // 进入系统视图 | |
[Huawei] sys R1 // 修改主机名 | |
[R1] int g0/0/0 // 进入接口 g0/0/0 | |
[R1-GigabitEthernet0/0/0] ip address 192.168.1.254 24 // 配置 IP 地址 | |
[R1-GigabitEthernet0/0/0] int g0/0/1 // 进入接口 g0/0/1 | |
[R1-GigabitEthernet0/0/1] ip address 192.168.2.254 24 // 配置 IP 地址 | |
实验 1:验证 IP 报头 TTL 值 | |
操作步骤: | |
1)配置(PC1/PC2/R1)的 IP 地址 | |
2)在 g0/0/0 上开启数据抓包 | |
3)使用 PC1 ping 192.168.2.1--PC2 的 IP 地址 | |
4)在抓包软件上查找:源 IP 为 192.168.1.1 目的 IP:192.168.2.1 的数据包 | |
验证结果: TTL 值: 128 | |
5)关闭 g0/0/0 口上的抓包软件,然后在 g0/0/1 接口上重新开启抓包软件 | |
6)重复执行:使用 PC1 ping 192.168.2.1--PC2 的 IP 地址 | |
7)重复执行:在抓包软件上查找:源 IP 为 192.168.1.1 目的 IP:192.168.2.1 的数据包 | |
验证结果: TTL 值: 127 | |
验证结果:数据每经过一台路由器,TTL 值就会减 1 | |
TTL 的作用:预防路由环路 |
# 5、IP 数据包封装过程
1)拓扑

| 在 g0/0/0 口上抓包 | 在 g0/0/1 口上抓包 | ||
|---|---|---|---|
| 目的 IP | 192.168.2.1 | 目的 IP | 192.168.2.1 |
| 源 MAC | 57D5 | 源 MAC | 3970 |
| 目的 MAC | 396F | 目的 MAC | 3C61 |
[Huawei] display interface g0/0/0 // 查看接口详细信息(能查看路由器接口的 MAC 地址) | |
Hardware address is 00e0-fc88-396F__ | |
硬件 地址 | |
实验 2:IP 数据包封装流程 | |
操作步骤: | |
1)配置(PC1/PC2/R1)的 IP 地址 | |
2)在 g0/0/0 上开启数据抓包 | |
3)使用 PC1 ping 192.168.2.1--PC2 的 IP 地址 | |
4)在抓包软件上查找:源 IP 为 192.168.1.1 目的 IP:192.168.2.1 的数据包 | |
查看源 MAC 地址和目的 MAC 地址 | |
5)关闭 g0/0/0 口上的抓包软件,然后在 g0/0/1 接口上重新开启抓包软件 | |
6)重复执行:使用 PC1 ping 192.168.2.1--PC2 的 IP 地址 | |
7)重复执行:在抓包软件上 | |
查找:源 IP 为 192.168.1.1 目的 IP:192.168.2.1 的数据包 | |
查看源 MAC 地址和目的 MAC 地址 | |
验证结果:在跨网段数据转发过程中,IP 地址一直不变, MAC 地址一直在变(每经过一个网关就变化) |
# 6、抓包字段分析

# 二、IPv4 地址和子网掩码
# 1、IPv4 地址概述
IP 地址:互联网协议地址
作用:在网络中唯一标识一台设备的一组数字
组成:网络位和主机位
长度:32 个二进制位(bit)=4 个字节
表示方法:点分十进制
# 2、IPv4 地址的分类
1)A 类范围:0~127
特点:第一个 bit 固定为 0
前面 8 个 bit 最小值:00000000 =0
前面 8 个 bit 最大值:01111111 =127
2)B 类范围:128~191
特点:前两个 bit 固定为 10
前面 8 个 bit 最小值:10000000 =128
前面 8 个 bit 最大值:10111111 =191
3)C 类范围:192~223
特点:前三个 bit 固定为 110
前面 8 个 bit 最小值: 11000000 =192
前面 8 个 bit 最大值:11011111 =223
4)D 类(组播)范围:224~239
5)E 类(科研或保留)范围:240~255

# 3、子网掩码
作用:用来指明一个 IP 地址中那些是网络位,哪些些是主机位
子网掩码不能单独存在,它必须结合 IP 地址一起使用。
长度:32 个二进制位组成
1)对应 IP 地址网络部分用 1 表示,对应 IP 地址主机部分用 0 表示
| IP 地址 | 192 | 168 | 1 | 1 |
|---|---|---|---|---|
| 子网掩码 | 255 | 255 | 255 | 0 |
| 子网掩码(二进制) | 11111111 | 11111111 | 11111111 | 00000000 |
2)默认的子网掩码
A 类地址(默认):255.0.0.0 (1 网络位 3 主机位)
B 类地址(默认):255.255.0.0 (2 网络位 2 主机位)
C 类地址(默认):255.255.255.0 (3 网络位 1 主机位)
# 4、私有 IPv4 地址
1)私有 IPv4 地址分类:
A 类私有范围:10.0.0.0~10.255.255.255
B 类私有范围:172.16.0.0~172.31.255.255
C 类私有范围:192.168.0.0~192.168.255.255
D 类范围: 239.0.0.0 ~ 239.255.255.255 (本地组地址 - 类似于组播地址中的 "私有地址")
# 5、特殊的 IP 地址
网络地址:主机位全为 0 的 IP 地址,如:192.168.1.0
广播地址:主机位全为 1 的 IP 地址,如:192.168.1.255
回环地址:127.0.0.0 ~ 127.255.255.255
被限制的广播地址:255.255.255.255(被限制在一个网段中)
0.0.0.0 : 未分配的 IP 地址,在很多协议中通常用来表示本机
默认路由:0.0.0.0 0.0.0.0 (代表所有的 ipv4 地址)
# 6、可用地址
CIDR :无类别域间路由(Classless Inter-Domain Routing)是一个用于给用户分配 IP 地址以及在互联网上有效地路由 IP 数据包的对 IP 地址进行归类的方法。
CIDR 使用 “斜线记法” 或者叫 "CIDR 记法",即在 IPV4 地址后面加上斜线 / ,在斜线后面写网络前缀所占的比特数。
举例: 192.168.1.0/24 ,掩码为 24 ,就代表网络位是 24 个 bit 位,所以主机位:32-24=8 位
一个掩码为 n(x.x.x.x/n)的网段下有( 232-n)个 IP 地址,(232-n-2)个可用 IP 地址。
第一个 IP 地址: 192.168.1.0 是网络 ID,代表一个网段不能分配给主机使用
最后一个 IP 地址,192.168.1.255 是广播地址,做广播用的,也不能分配给主机使用
# 三、子网划分
# 1、子网划分概述
1)子网划分是什么
- 子网划分是指将一个大的网段划分多个更小的网段
2)子网划分的作用
- 节约 IPv4 地址,减少 IPv4 地址浪费
3)如何进行子网划分
- 将主机位借给网络位(让主机位变短, 让网络位变长)
# 2、IP 地址知识回顾:
IPv4 地址的长度:32 个 bit 位
IPv4 的组成:网络位 + 主机位
子网掩码长度:32 个 bit 位
C 类的默认子网掩码:255.255.255.0
一个掩码默认为 24 的网段有多少个 IP 地址,有多少个可用 IP 地址如何计算:
举例:192.168.1.0/24
IP 网段: 192.168.1.0
子网掩码:255.255.255.0
以二进制显示:192.168.1.0/24
| 网络位 | 主机位 | |||
|---|---|---|---|---|
| IP 地址 | 192 | 168 | 1 | 1 |
| 子网掩码 | 255 | 255 | 255 | 0 |
| 子网掩码(二进制) | 11111111 | 11111111 | 11111111 | 00000000 |
这个网段有 28=256 个 IP 地址,其中可用 IP 地址 254 个
主机位越短,就代表,这个网段包含的 IP 地址数量越少,想要做子网划分,就从主机位借位,借给网络位,让网络位变长,让主机位变短
# 3、子网划分方法
举例:192.168.1.0/24 要做子网划分
| 项目 | 第一段 | 第二段 | 第三段 | 第四段 | 备注 |
|---|---|---|---|---|---|
| IP 网段 | 192 | 168 | 1 | 0 | 192.168.1.0/24 |
| 二进制 | 11000000 | 10101000 | 00000001 | 00000000 | 网络位. 主机位 |
| 子网掩码 | 255 | 255 | 255 | 0 | /24 |
| 二进制 | 11111111 | 11111111 | 11111111 | 00000000 | 网络位. 主机位 |
从 / 24 划分到 / 25,借用了 1 位主机位作为子网位,原来的 8 位主机位变为:1 位子网位 + 7 位主机位,可划分出 2 个子网:192.168.1.0/25 和 192.168.1.128/25,每个子网有 128 个 IP 地址,126 个可用 IP 地址
第一个网段:192.168.1.0/25
| 项目 | 第一段 | 第二段 | 第三段 | 第四段 | 备注 |
|---|---|---|---|---|---|
| 二进制表示 | 11000000 | 10101000 | 00000001 | __0__0000000 | 网络位. 子网位. 主机位 |
| 子网掩码 | 255 | 255 | 255 | 128 | /25 |
| 二进制掩码 | 11111111 | 11111111 | 11111111 | __1__0000000 | 网络位. 子网位. 主机位 |
第二个网段:192.168.1.128/25
| 项目 | 第一段 | 第二段 | 第三段 | 第四段 | 备注 |
|---|---|---|---|---|---|
| 二进制表示 | 11000000 | 10101000 | 00000001 | __1__0000000 | 网络位. 子网位. 主机位 |
| 子网掩码 | 255 | 255 | 255 | 128 | /25 |
| 二进制掩码 | 11111111 | 11111111 | 11111111 | __1__0000000 | 网络位. 子网位. 主机位 |
如果一个网段要划分 a 个等长的子网网段:网络位要从主机位借 n 位,对应关系是:n = ⌈ log2 a ⌉,(即 log2 a 向上取整)
# 4、等长子网划分实验
1)需求:
目前公司只有 1 个 C 类网段:192.168.100.0/24
某公司有销售部、生成部、财务部、客服部四个部门,每个部门的主机数量不超过 50 台
2)解决方案:执行等长的子网划分
- 划分 4 个相同大小的子网网段
- 每个子网网段中的 IP 地址数量相同
- 子网划分分析:
公司有 4 个部门,需要划分 4 个网段,每个网段不低于 50 个 IP 地址
解析:
一个 C 类网段,默认网络位 24 位,主机位为 8 位,如果想一个 C 类网段要划分 4 个子网网段:网络位需要从主机位借 2 位,做子网网络位,即掩码变为 / 26
一个 C 类网段,默认网络位 24 位,主机位为 8 位,如果借 2 位,网络位为 26 位,那么主机位为 6 位,主机数量 = 26-2=62,可以满足公司需求

# 四、ICMP 协议
# 1、ICMP 协议概述
ICMP:
Internet控制报文协议(Internet Control Message Protocol)作用:测试网络连通性
位于 TCP/IP 的第三层(网络层)
# 2、ICMP 报文类型
echo request 请求报文
echo reply 应答报文
# 3、ICMP 命令
ping命令tracert命令
# 4、ICMP 消息提示
1)from 目标地址...// 表示连接成功
2)Destination host unreachable // 表示目标主机不可达
此提示常见原因:
同网段中没有这个 IP 地址
跨网段通信时,本主机没有填写网关地址
3) Request timed out 请求时间超时
此提示常见原因:数据包可以出去,但是回不来
数据包从主机中发出去了,但是中间传输的网络设备无法找到目标主机
数据包从主机中发出去了,传输的网络设备将数据包发送给目标主机了,但是目标主机没有回复,或者目标主机回复的消息,中间的传输设备没能正常转发给源主机
对方主机没有填写网关地址
4) Unknown host ... 未知主机名
此提示常见原因:IP 地址是一个不合法的 IP 地址,或者是一个不存在的主机名
# 五、ARP 协议
# 1、ARP 协议概述
ARP:地址解析协议
(Address Resolution Protocol)作用:已知目标设备的 IP 地址,获取目标设备的
MAC地址解析方式:发送
arp广播,得到mac地址后,缓存到arp缓存表中工作在 OSI 模型的第二层 (数据链路层)
# 2、ARP 报文类型
ARP 请求报文:源设备以广播的方式发送 ARP 请求报文
ARP 回应报文:目的设备以单播的方式回应,直接返回给源设备
3、ARP 抓包
1)拓扑

2)抓包截图
1) 请求报文解析 (request): PC1 广播发的 ARP 请求报文
原始报文内容:谁是 192.168.1.2,把你的 MAC 地址告诉 192.168.1.1
| 字段名称 | 值 | 解析说明 |
|---|---|---|
| Hardware Type | ethernet | 表示硬件地址类型是以太网 |
| Protocol Type | IP | 表示协议地址类型是 IP |
| Hardware Size | 6 | 表示硬件地址是 6 个字节 |
| Protocol Size | 4 | 表示协议地址是 4 个字节 |
| Opcode | request | 表示这个报文是请求报文 |
| Sender MAC Address | 54:89:98:0b:63:0c | 表示源 MAC 地址是 54:89:98:0b:63:0c |
| Sender IP Address | 192.168.1.1 | 表示源 IP 地址是 192.168.1.1 |
| Target MAC Address | ff:ff:ff:ff:ff:ff | 表示目标 MAC 地址是广播 MAC 地址(因为不知道 192.168.1.2 的 MAC 地址,所以封装广播 MAC 去进行广播寻找 192.168.1.2 的 MAC 地址) |
| Target IP Address | 192.168.1.2 | 表示目标 IP 地址是 192.168.1.2 |

2) 应答报文解析:(reply)—PC2 回复给 PC1 的报文
原始报文内容:192.168.1.2 的 MAC 地址是 54:89:98:ef:68:d9
| 字段名称 | 值 | 解析说明 |
|---|---|---|
| Opcode | reply | 表示这个报文是应答报文 |
| Sender MAC Address | 54:89:98:ef:68:d9 | 表示源 MAC 地址是 54:89:98:ef:68:d9 |
| Sender IP Address | 192.168.1.2 | 表示源 IP 地址是 192.168.1.2 |
| Target MAC Address | 54:89:98:0b:63:0c | 表示目标 MAC 地址是 54:89:98:0b:63:0c |
| Target IP Address | 192.168.1.1 | 表示目标 IP 地址是 192.168.1.1 |

# 3、ARP 常用命令
PC>arp -a // 查看 arp 缓存表 | |
Internet Address Physical Address Type | |
192.168.1.2 54-89-98-EF-68-D9 dynamic (动态) | |
PC>arp -d // 清空 arp 缓存表 |
# 4、ARP 缓存表
ARP 缓存表中记录 IP 地址和 MAC 地址的对应关系
ARP 缓存表中有动态和静态两类条目
华为网络设备的 ARP 动态条目默认老化时间是
1200 秒windows 系统的 ARP 动态条目默认老化时间是
120 秒
# 5、ARP 在跨网段通信的作用

在拓扑中,如果 PC1 需要 ping PC2,大概会经历以下步骤:
第一步:路由判断与 ARP 解析
PC1 通过子网掩码计算,判定目标 IP 192.168.2.1 与本地网络 192.168.1.0/24 不属于同一网段,即跨网段通信
PC1 查询 ARP 缓存,若不存在网关 MAC 地址,则发送 ARP 请求广播帧:
二层头:源 MAC 54-89-98-F1-2D-29,目的 MAC FF-FF-FF-FF-FF-FF
第二步:PC1 发送 ICMP 请求
- PC1 构造 ICMP Echo Request 报文,报文通过交换机转发至路由器 R1 的 G0/0/0 接口
IP 头:源 IP 192.168.1.1,目的 IP 192.168.2.1
以太网头:源 MAC 54-89-98-F1-2D-29,目的 MAC 00-e0-fc-d4-74-92(网关 G0/0/0 接口)
第三步:路由器路由查询与 ARP 解析
R1 收到报文,解封装后查询路由表,确定 192.168.2.0/24 为直连路由,出口为 G0/0/1 接口
R1 查询 G0/0/1 接口的 ARP 缓存,若不存在 PC2 的 MAC 地址,则从 G0/0/1 接口发送 ARP 请求:
二层头:源 MAC 00-e0-fc-d4-74-93,目的 MAC FF-FF-FF-FF-FF-FF
第四步:路由器转发 ICMP 请求
- R1 对报文进行三层转发,重新封装二层帧头,报文从 G0/0/1 接口发出,送达 PC2
IP 头:保持不变(源 192.168.1.1,目的 192.168.2.1)
以太网头:源 MAC 00-e0-fc-d4-74-93(R1 G0/0/1),目的 MAC 54-89-98-B2-2F-14(PC2)
第五步:PC2 回复 ICMP 响应
- PC2 构造 ICMP Echo Reply 报文,判断目标 IP 192.168.1.1 为跨网段通信:
IP 头:源 IP 192.168.2.1,目的 IP 192.168.1.1
以太网头:源 MAC 54-89-98-B2-2F-14,目的 MAC 00-e0-fc-d4-74-93(网关 G0/0/1 接口)
第六步:路由器转发 ICMP 响应
R1 收到回复报文,路由查询确定 192.168.1.0/24 出口为 G0/0/0 接口
R1 重新封装二层帧头,报文从 G0/0/0 接口发出,最终送达 PC1
IP 头:保持不变(源 192.168.2.1,目的 192.168.1.1)
以太网头:源 MAC 00-e0-fc-d4-74-92(R1 G0/0/0),目的 MAC 54-89-98-F1-2D-29(PC1)
注意:在跨网段通信中,源 IP 和目的 IP 在整个过程中是不变的,而源 MAC 和目的 MAC 每一段链路都会改变。
# 六、传输层
# 1、传输层概述
传输层作用:提供端到端的连接【端口号】
传输层包含两个协议:TCP 和 UDP
1)TCP 协议
传输控制协议
优点:可靠的、面向连接的协议
不足:传输效率低
2)UDP 协议
用户数据包协议
不足:不可靠的、无连接的服务
优点:传输效率高
# 2、TCP 封装格式

# 3、TCP 报头字段分析
| 字段名称 | 长度 | 功能描述 | 示例 / 备注 | |
|---|---|---|---|---|
| 源端口 | Source Port | 16 位 | 标识发送方应用程序的端口号,用于报文的返回地址 | 2052 (随机端口)客户端随机选择 |
| 目的端口 | Destination Port | 16 位 | 标识接收方计算机上的目标应用程序接口 | 80 (HTTP 服务)服务器固定端口 |
| 序列号 | Sequence Number | 32 位 | 标识本报文段第一个数据字节的序号 <br> 每个字节分配一个序号,保证 TCP 传输的有序性,发起方发送数据时对此进行标记。 | 起始序号 = 1,数据大小 = 158 字节 <br> 下一报文段序号 = 159 |
| 确认号 | Acknowledgment Number | 32 位 | 期望收到对方下一个报文段的第一个数据字节序号 <br> 确认该序号之前的所有数据已收到 < br/> 这个序号和发起的序号有关,在接受到信号后,将 ACK 置为 1,才可以产生 ack,且当 ACK 为 1 时,ack 确认序号才有效,ack=seq+1。 | 确认号 = N,表示 N-1 及之前数据已确认 |
| 首部长度 | Header Length | 4 位 | TCP 首部长度,包括固定头部和选项字段 <br> 以 4 字节为单位 | 最小值 = 5 (20 字节) 最大值 = 15 (60 字节) 示例:24 字节 (含 4 字节选项) |
| 保留字段 | Reserved | 6 位 | 为将来定义新用途保留,目前必须置 0 | 通常设置为 000000 |
| 控制位 | Flags | 6 位 | 每个标志位表示一个控制功能 | |
| ├ 同步位 | SYN | 1 位 | 同步标志,请求建立连接 | SYN=1:发起连接请求 |
| ├ 确认位 | ACK | 1 位 | 确认标志,确认序号有效 | ACK=1:确认连接或数据 |
| ├ 终止位 | FIN | 1 位 | 终止标志,请求断开连接, 释放一个连接。 | FIN=1:释放连接请求 |
| ├ 紧急位 | URG | 1 位 | 紧急标志,紧急指针字段有效 | URG=1:数据优先传送 |
| ├ 推送位 | PSH | 1 位 | 推送标志,接收方应立即读取数据 | PSH=1:立即提交应用程序 |
| └ 复位位 | RST | 1 位 | 复位标志,连接出现严重错误需重建 | RST=1:异常终止连接 |
| 窗口大小 | Window Size | 16 位 | 滑动窗口机制,表示接收方能接收的数据量 <br> 设备间协商确定发送数据量 | 8192 字节 <br> 流量控制关键字段 |
| 校验和 | Checksum | 16 位 | 对整个 TCP 报文段 (首部 + 数据) 的差错校验 | 0xd28d保证数据完整性 |
| 紧急指针 | Urgent Pointer | 16 位 | 当 URG=1 时有效,指出紧急数据的末尾位置 | 仅在 URG 置位时使用 |
| 选项字段 | Options | 可变 | 可选字段,用于扩展 TCP 功能 | 示例:4 字节选项 <br> 最大 40 字节 |
注意:TCP 字段中有确认号(Acknowledgment Number)和确认位(Acknowledgment),确认位属于 FLAG,占 1bit,而确认号占 32bit,具体数值会由 TCP 通信中的 seq 变化而变化,下有详细介绍。

# 4、TCP 三次握手详解
握手过程关键字段
SYN (Synchronize):同步标志位,用于发起连接请求
ACK (Acknowledgment):确认标志位,用于确认连接请求
seq (Sequence Number):序列号,标识报文段第一个数据字节的序号
ack (Acknowledgment Number):确认号,期望收到的下一个字节序号
第一次握手:
客户端向服务器发送连接请求报文
- 客户端 SYN=1,表示请求与服务器建立连接
- 客户端 ACK=0,初始状态未进行确认
- 客户端 seq=x(客户端初始序列号 ISN,随机生成)
- 客户端 ack=0,初始状态确认号为 0
第二次握手:
服务器向客户端回复确认报文
- 服务器 SYN=1,表示同意建立连接并同时向客户端发起连接请求
- 服务器 ACK=1,表示确认客户端的连接请求
- 服务器 seq=y(y 为服务器初始序列号 ISN,随机生成)
- 服务器 ack=x+1,表示已收到客户端的序列号 x,期望下次从 x+1 开始
第三次握手:
客户端向服务器发送最终确认报文
- 客户端 SYN=0,连接已建立,无需再置 SYN 标志
- 客户端 ACK=1,表示确认服务器的连接请求
- 客户端 seq=x+1,按约定从 x+1 开始
- 客户端 ack=y+1,表示已收到服务器的序列号 y,期望下次从 y+1 开始
# 5、三次握手抓包实验
1)拓扑

2)数据包

第一次握手:

第二次握手:

第三次握手:

# 6、TCP 的四次挥手详解
挥手过程关键字段
- FIN (Finish):终止标志位,用于请求断开连接
- ACK (Acknowledgment):确认标志位,用于确认断开请求
- seq (Sequence Number):序列号,标识报文段序号
- ack (Acknowledgment Number):确认号,期望收到的下一个字节序号
第一次挥手:
主动关闭方发送连接终止请求
- 主动关闭方 FIN=1,表示请求断开连接
- 主动关闭方 ACK=1,正常确认位
- 主动关闭方 seq=u(u 为当前序列号)
- 主动关闭方 ack=v(v 为期望收到的确认号)
第二次挥手:
被动关闭方发送确认报文
- 被动关闭方 FIN=0,此时还未准备断开
- 被动关闭方 ACK=1,确认收到断开请求
- 被动关闭方 seq=v(按之前通信的序列号继续)
- 被动关闭方 ack=u+1,确认主动方的 FIN,期望下次从 u+1 开始
第三次挥手:
被动关闭方发送连接终止请求
- 被动关闭方 FIN=1,表示被动方也准备断开连接
- 被动关闭方 ACK=1,确认位保持置位
- 被动关闭方 seq=w(可能在此期间发送了数据,序列号更新为 w)
- 被动关闭方 ack=u+1,继续确认主动方的 FIN
第四次挥手:
主动关闭方发送最终确认报文
- 主动关闭方 FIN=0,无需再发送 FIN
- 主动关闭方 ACK=1,确认被动方的断开请求
- 主动关闭方 seq=u+1,按约定序列号
- 主动关闭方 ack=w+1,确认被动方的 FIN,期望下次从 w+1 开始
为什么需要四次挥手:TCP 连接是全双工的,每个方向需要单独关闭
# 7、四次挥手抓包实验
1)拓扑

2)数据包

第一次挥手

第二次挥手

第三次挥手

第四次挥手

# 8、UDP 封装格式
1)源端口:源端口和 IP 地址的作用是标识报文的返回地址
2)目的端口:目标端口指明接收方计算机上的应用程序接口
3)UDP 长度:代表整个 UDP 的数据报是多大
4)UDP 校验和:是一个检查机制,在发送数据包之前检查一下数据包的完整性
