外观
TCP/IP
介绍
TCP/IP (Transmission Control Protocol/Internet Protocol) 是互联网的基础协议套件,定义了设备如何在网络中通信。它采用分层架构,将复杂的通信过程分解为相对独立的层次,每层负责特定功能。TCP/IP 不仅包括 TCP 和 IP 两个核心协议,还包含多个支持协议,共同构成了现代互联网的通信基础。
历史
TCP/IP 起源于 20 世纪 70 年代的美国国防部高级研究计划局 (DARPA) 项目,旨在创建可靠的、可互操作的计算机网络。1974 年,文顿·瑟夫和鲍勃·卡恩发表了 TCP/IP 设计论文。1983 年,ARPANET 正式采用 TCP/IP,取代了之前的 NCP 协议。随着 BSD Unix 集成 TCP/IP 栈,它逐渐成为事实标准。1990 年代互联网商业化浪潮中,TCP/IP 成为全球互联网的唯一协议标准。
协议栈
TCP/IP 采用四层模型,与 OSI 七层模型对应关系如下:
应用层 (Application) - 对应OSI应用层、表示层、会话层
传输层 (Transport) - 对应OSI传输层
网络层 (Internet) - 对应OSI网络层
网络接口层 (Network Interface) - 对应OSI数据链路层、物理层各层功能:
- 应用层:提供用户服务 (HTTP、FTP、DNS 等)
- 传输层:端到端通信 (TCP、UDP)
- 网络层:寻址和路由 (IP、ICMP)
- 网络接口层:物理传输 (以太网、Wi-Fi)
核心特点
分层架构
TCP/IP 采用严格的分层设计,每层只与相邻层交互,各层独立发展。
应用数据 -> [传输层封装] -> [网络层封装] -> [网络接口层封装] -> 物理传输
接收方反向解封装 -> [网络接口层] -> [网络层] -> [传输层] -> 应用数据优势:模块化设计、易于实现和维护、技术演进互不影响。
端到端原则
智能置于网络边缘,核心网络保持简单。端系统负责可靠性、流量控制等复杂功能,网络只负责数据包转发。
主机A [智能] -- 简单网络 -- 主机B [智能]优点:网络架构简单、扩展性强、创新集中在终端。
包交换技术
数据被分割为独立的数据包,每个包包含目的地址,通过网络独立路由。
数据 -> 分割为包1,包2,包3 -> 分别路由 -> 目的地重组与电路交换对比:
电路交换: 建立专用路径 -> 持续通信 -> 释放路径
包交换: 数据包独立寻路,共享网络资源优势:网络资源利用率高、容错性强。
全局寻址系统
IP 地址唯一标识网络中的设备,支持网络层路由。IPv4 使用 32 位地址,IPv6 使用 128 位地址。
IPv4: 192.168.1.1 (点分十进制)
IPv6: 2001:0db8:85a3::8a2e:0370:7334 (十六进制)配合 DNS 系统将域名解析为 IP 地址:
www.example.com --DNS查询--> 192.0.2.1可靠性机制
TCP 提供可靠的字节流服务,确保数据完整、有序交付。
发送方: 数据分段 -> 编号 -> 发送 -> 等待确认 -> 超时重传
接收方: 接收数据 -> 按序重组 -> 发送确认 -> 交付应用通过序列号、确认机制、重传计时器实现可靠性。
流量控制
TCP 使用滑动窗口机制进行流量控制,防止发送方淹没接收方。
发送窗口: [已确认][可发送][等待发送]
接收窗口大小通告 -> 发送方调整发送速率图示:
发送方: |已确认|可发送|受限|
接收方: |已处理|可用缓冲|拥塞控制
TCP 动态调整发送速率避免网络拥塞,包含慢启动、拥塞避免、快速重传、快速恢复等算法。
慢启动: 指数增长窗口 -> 到达阈值 -> 拥塞避免: 线性增长
检测丢包 -> 调整阈值 -> 重新慢启动或快速恢复工作原理
数据封装过程
数据在发送时从上到下封装,接收时从下到上解封装。
应用数据
↓ 添加TCP头
TCP段 (Segment)
↓ 添加IP头
IP数据包 (Packet)
↓ 添加帧头帧尾
帧 (Frame)
↓ 转换为信号
物理传输三次握手
TCP 建立连接需要三次握手,确保双方就绪:
客户端 -> SYN=1, seq=x -> 服务器
客户端 <- SYN=1, ACK=1, seq=y, ack=x+1 <- 服务器
客户端 -> ACK=1, seq=x+1, ack=y+1 -> 服务器
连接建立四次挥手
TCP 终止连接需要四次挥手,确保数据完整传输:
客户端 -> FIN=1 -> 服务器
客户端 <- ACK=1 <- 服务器
(服务器可能继续发送数据)
客户端 <- FIN=1 <- 服务器
客户端 -> ACK=1 -> 服务器
连接关闭核心协议
IP 协议
网络层核心协议,提供无连接、不可靠的数据包传输服务。
- IPv4:32 位地址,头部 20-60 字节
- IPv6:128 位地址,简化头部设计 IP 数据包结构:
[版本|头长|服务类型|总长度]
[标识|标志|片偏移]
[生存时间|协议|头部校验和]
[源IP地址]
[目的IP地址]
[选项|填充]
[数据]TCP 协议
面向连接的可靠传输协议,提供字节流服务。 TCP 段结构:
[源端口|目的端口]
[序列号]
[确认号]
[头长|保留|标志位|窗口大小]
[校验和|紧急指针]
[选项|填充]
[数据]标志位:URG、ACK、PSH、RST、SYN、FIN
UDP 协议
无连接的简单传输协议,提供数据报服务。 UDP 数据报结构:
[源端口|目的端口]
[长度|校验和]
[数据]特点:开销小、延迟低、无可靠性保证
支持协议
- ICMP:网络控制消息,用于 ping、traceroute
- ARP:地址解析协议,IP 地址到 MAC 地址映射
- DNS:域名解析系统
- DHCP:动态主机配置协议
路由机制
IP 路由基于路由表,每个路由器独立决策下一跳。
路由表:
目标网络 | 子网掩码 | 下一跳 | 接口
192.168.1.0 | 255.255.255.0 | 直接 | eth0
0.0.0.0 | 0.0.0.0 | 192.168.1.1 | eth0路由过程:
收到数据包 -> 提取目的IP -> 查找路由表 -> 匹配最长前缀 -> 转发到下一跳安全考虑
固有漏洞
- IP 欺骗:伪造源 IP 地址
- 嗅探攻击:网络流量监听
- 会话劫持:接管 TCP 连接
- 拒绝服务:耗尽资源
防护机制
- IPsec:网络层加密和认证
- TLS/SSL:传输层安全
- 防火墙:包过滤和状态检测
- VPN:建立安全隧道