网络协议课程笔记上
一、 TCP 协议核心概念
- 端口: 0-65535 范围,用于区分不同应用和服务。
- 0-1023: 系统/特权端口 (root 用户)。
- 1024-49151: 应用/注册端口 (常用服务)。
- 49152-65535: 动态/私有端口 (客户端临时分配)。
- 三次握手 (Three-way Handshake): 建立可靠 TCP 连接的关键步骤。
- SYN: 客户端发送同步报文,请求连接。
- SYN-ACK: 服务器回复同步-确认报文,确认请求并同步序号。
- ACK: 客户端发送确认报文,连接建立。
- 目的: 确保连接双方都准备好通信,并同步序列号,为可靠传输奠定基础。
- 四次挥手 (Four-way Handshake): 安全断开 TCP 连接的步骤。
- FIN: 客户端发送完成报文,请求关闭连接 (不再发送数据)。
- ACK: 服务器回复确认报文,确认收到关闭请求 (可能继续发送数据)。
- FIN: 服务器发送完成报文,表示服务器也准备好关闭连接 (数据发送完毕)。
- ACK: 客户端回复确认报文,连接完全关闭。
- 目的: 确保双方都完成数据传输并同意断开,避免数据丢失。
- TCP 状态机: 描述 TCP 连接生命周期中不同状态的转换。
- 关键状态:
CLOSED
,LISTEN
,SYN_SENT
,SYN_RECEIVED
,ESTABLISHED
,FIN_WAIT_1
,FIN_WAIT_2
,CLOSE_WAIT
,LAST_ACK
,TIME_WAIT
. - 核心流程: 从
CLOSED
到LISTEN
(服务器监听),经过三次握手进入ESTABLISHED
(连接建立),再通过四次挥手回到CLOSED
(连接关闭)。TIME_WAIT
状态等待 2MSL 时间,确保网络中残余数据包消失。
- 关键状态:
- MSL (最大报文段生存时间): TCP 连接超时时间,默认 60 秒。
- 作用: 处理延迟或重传报文,避免资源立即释放,影响连接稳定性。
- 半连接队列 & 全连接队列: 服务器端用于管理连接请求的队列。
- 半连接队列 (SYN Queue): 存放 SYN 请求,等待完成三次握手。默认大小有限,超出可能导致 SYN Flood 攻击。
- 全连接队列 (Accept Queue): 存放已完成三次握手,等待应用层
accept()
的连接。默认大小有限,过载可能导致连接拒绝。 - 优化: 调整队列大小可提升并发连接处理能力。
- Socket (套接字): 应用程序与 TCP/IP 协议栈交互的接口。
- 客户端创建 Socket 发起连接,服务器端 Socket 监听端口、接受连接。
- Socket 提供了
bind
,listen
,accept
,read
,write
等系统调用,实现网络通信。
- 超时重传: TCP 保证可靠性的机制,数据包丢失后会重传,默认重传次数有限,超过则放弃连接。
- 拥塞控制: 防止网络过载的机制,通过算法 (如 Reno, CUBIC, BBR) 动态调整发送速率,避免网络拥堵。
二、 UDP 协议核心概念
- 用户数据报协议 (User Datagram Protocol): 传输层协议,提供不可靠、无连接的数据传输服务。
- 特点:
- 不可靠: 不保证数据包到达、顺序和完整性。
- 无连接: 无需握手,直接发送数据。
- 轻量级: 头部仅 8 字节,开销小,速度快。
- 实时性: 适用于实时应用 (语音、视频)。
- 支持广播/多播: 可以进行广播和多播通信。
- 头部结构 (8 字节): 源端口, 目标端口, 长度, 校验和。
- 应用场景: 对实时性要求高,但可容忍少量丢包的应用,如在线视频、语音通话、DNS 查询等。
三、 网络层协议核心概念
- ICMP (Internet Control Message Protocol): 互联网控制报文协议,辅助 IP 协议,用于网络控制和错误报告。
- Ping: 基于 ICMP Echo 请求/应答,测试网络连通性。
- Traceroute: 基于 ICMP Time Exceeded 消息,追踪路由路径。
- 防火墙: 可配置 ICMP 规则,控制 ICMP 流量,影响 ping 和 traceroute 功能。
- ARP (Address Resolution Protocol): 地址解析协议,通过 IP 地址查找 MAC 地址。
- ARP 请求广播: 询问目标 IP 的 MAC 地址。
- ARP 响应单播: 目标主机回复包含 MAC 地址的响应。
- ARP 缓存: 存储 IP-MAC 地址映射关系,提高效率。
- ARP 欺骗/投毒: 网络攻击手段,伪造 ARP 响应,篡改 IP-MAC 映射,导致流量劫持或中断。
- 静态 ARP 绑定: 防御 ARP 欺骗的方法,手动配置 IP-MAC 映射。
- IP 协议 (Internet Protocol): 网络层核心协议,负责数据包路由和转发。
- 无连接: 每个数据包独立路由。
- 尽力而为: 不保证可靠 delivery。
- 主要功能: IP 编址, 路由选择, 数据包分片与重组。
- IP 数据包头部 (IPv4): 包含版本, 头部长度, 服务类型, 总长度, 标识, 标志, 片偏移, 生存时间 (TTL), 协议类型, 头部校验和, 源/目标 IP 地址等字段。
- TTL (生存时间): 限制数据包在网络中的跳数,防止环路,
ping
命令可观察 TTL 值。
- IP 地址: 网络设备的逻辑地址,IPv4 为 32 位,点分十进制表示。
- 网络 ID & 主机 ID: IP 地址分为网络标识和主机标识,用于网络分层和寻址。
- 特殊 IP 地址:
- 网络地址: 标识网段,不可分配给主机。
- 广播地址: 广播消息到网段内所有主机,不可分配给主机。
- 127.0.0.1: 本地环回地址,测试本机网络协议栈。
- 0.0.0.0: 所有网络,所有接口。
- IP 地址分类 (ABC 类): 根据网络 ID 长度划分,影响网络规模和主机容量。
- A 类: 网络 ID 8 位,主机 ID 24 位,网络号范围 1-126。 (私有地址:
10.0.0.0/8
) - B 类: 网络 ID 16 位,主机 ID 16 位,网络号范围 128-191。 (私有地址:
172.16.0.0/12
) - C 类: 网络 ID 24 位,主机 ID 8 位,网络号范围 192-223。 (私有地址:
192.168.0.0/16
或192.168.0.0/24
) - D 类: 组播地址 (224-239)。
- E 类: 保留地址 (240-255)。
- A 类: 网络 ID 8 位,主机 ID 24 位,网络号范围 1-126。 (私有地址:
- 私有 IP 地址: 用于局域网,公网 IP 地址用于互联网。