跳转至

网络协议

概述

网络协议

为进行网络中的数据交换而建立的规则、标准或约定。网络协议由语法、语义和时序三个要素组成。

TCP协议

TCP(传输控制协议)

面向连接的、可靠的传输层协议,提供全双工的字节流传输服务。

TCP特点

  • 面向连接: 通信前需建立连接
  • 可靠传输: 保证数据无差错、不丢失、不重复、按序到达
  • 面向字节流: 以字节为单位传输
  • 全双工通信: 双向同时传输
  • 流量控制: 防止发送方淹没接收方
  • 拥塞控制: 防止网络拥塞

TCP连接建立 - 三次握手

sequenceDiagram
    participant Client as 客户端
    participant Server as 服务器

    Note over Client: CLOSED状态
    Note over Server: LISTEN状态

    Client->>Server: SYN=1, seq=x<br/>(第一次握手)
    Note over Client: SYN_SENT状态
    Note over Server: 收到SYN

    Server->>Client: SYN=1, ACK=1, seq=y, ack=x+1<br/>(第二次握手)
    Note over Server: SYN_RCVD状态
    Note over Client: 收到SYN+ACK

    Client->>Server: ACK=1, seq=x+1, ack=y+1<br/>(第三次握手)
    Note over Client: ESTABLISHED状态
    Note over Server: ESTABLISHED状态

三次握手作用

  • 确认双方的接收和发送能力
  • 协商初始序列号
  • 防止失效的连接请求

TCP连接释放 - 四次挥手

sequenceDiagram
    participant Client as 客户端
    participant Server as 服务器

    Note over Client,Server: ESTABLISHED状态

    Client->>Server: FIN=1, seq=u<br/>(第一次挥手)
    Note over Client: FIN_WAIT_1状态

    Server->>Client: ACK=1, seq=v, ack=u+1<br/>(第二次挥手)
    Note over Client: FIN_WAIT_2状态
    Note over Server: CLOSE_WAIT状态

    Server->>Client: FIN=1, seq=w<br/>(第三次挥手)
    Note over Server: LAST_ACK状态

    Client->>Server: ACK=1, seq=u+1, ack=w+1<br/>(第四次挥手)
    Note over Client: TIME_WAIT状态
    Note over Server: CLOSED状态
    Note over Client: 等待2MSL后CLOSED

TCP可靠传输机制

可靠传输机制

1. 序号与确认

  • 每个字节都有序号
  • 确认号表示期望收到的下一个字节序号
  • 累积确认

2. 重传机制

  • 超时重传: RTO(Retransmission Timeout)
  • 快速重传: 收到3个重复ACK

3. 流量控制

  • 滑动窗口机制
  • 接收窗口(rwnd)
  • 发送窗口 = min(rwnd, cwnd)

4. 拥塞控制

拥塞控制算法

防止过多数据注入网络。

  • 慢开始: 指数增长
  • 拥塞避免: 线性增长
  • 快速重传: 收到3个重复ACK
  • 快速恢复: 拥塞窗口减半

UDP协议

UDP(用户数据报协议)

无连接的、不可靠的传输层协议,提供高效的数据传输服务。

UDP特点

  • 无连接: 不需要建立连接
  • 不可靠: 不保证数据到达
  • 面向报文: 保留报文边界
  • 无拥塞控制: 网络拥塞时不会降低发送速率
  • 支持一对多: 支持广播、多播

UDP应用场景

  • 实时音视频传输
  • DNS查询
  • 在线游戏
  • SNMP网络管理

HTTP协议

HTTP(超文本传输协议)

应用层协议,用于Web浏览器和Web服务器之间的通信。

HTTP版本

版本 特点 连接方式
HTTP/1.0 短连接,每次请求新建连接 非持久连接
HTTP/1.1 持久连接,管道化请求 持久连接
HTTP/2 多路复用,头部压缩,服务器推送 多路复用
HTTP/3 基于QUIC协议,使用UDP UDP连接

HTTP请求方法

HTTP请求方法
  • GET: 获取资源
  • POST: 提交数据
  • PUT: 更新资源
  • DELETE: 删除资源
  • HEAD: 获取响应头
  • OPTIONS: 查询支持的方法

HTTP状态码

HTTP状态码分类

表示HTTP请求的处理结果。

  • 1xx: 信息性状态码
  • 2xx: 成功状态码
    • 200 OK: 请求成功
    • 201 Created: 资源创建成功
  • 3xx: 重定向状态码
    • 301 Moved Permanently: 永久重定向
    • 302 Found: 临时重定向
  • 4xx: 客户端错误
    • 400 Bad Request: 请求错误
    • 404 Not Found: 资源不存在
  • 5xx: 服务器错误
    • 500 Internal Server Error: 服务器内部错误
    • 503 Service Unavailable: 服务不可用

其他重要协议

IP协议

IP(网际协议)

网络层核心协议,负责主机间的数据传输。

功能:

  • 寻址和路由
  • 分片和重组
  • 生存时间控制

ICMP协议

ICMP(Internet控制消息协议)

用于网络诊断和错误报告。

应用:

  • Ping: 测试连通性
  • Traceroute: 跟踪路由

DNS协议

DNS(域名系统)

将域名解析为IP地址。

解析过程:

graph TB
    A[客户端] --> B[本地DNS服务器]
    B --> C[根DNS服务器]
    C --> D[顶级域DNS服务器]
    D --> E[权威DNS服务器]
    E --> B
    B --> A

参考资料