TCP/IP 模型每层的封装格式

TCP/IP 模型是一个四层网络架构,每一层在数据传输时都会对数据进行封装,添加相应的头部(和尾部)信息。以下是各层的封装格式及关键字段说明:


1. 应用层(Application Layer)

  • 封装格式:取决于具体应用协议(如 HTTP、FTP、DNS、SMTP 等)。

  • 示例

    • HTTP 请求

      plaintext 复制代码
      GET /index.html HTTP/1.1
      Host: www.example.com
      User-Agent: Mozilla/5.0
    • DNS 查询
      包含查询域名、记录类型(A、AAAA、MX 等)和事务 ID。

  • 作用:定义数据内容和应用交互规则。


2. 传输层(Transport Layer)

  • 协议:TCP 或 UDP。

  • 封装格式

    • TCP 段(Segment)

      plaintext 复制代码
      | 源端口 (16 bits) | 目的端口 (16 bits) |
      | 序列号 (32 bits)                 |
      | 确认号 (32 bits)                 |
      | 头部长度 | 保留 | 控制标志 (SYN/ACK/FIN等) | 窗口大小 (16 bits) |
      | 校验和 (16 bits) | 紧急指针 (16 bits)     |
      | 选项 (可选)                       |
      | 数据 (应用层数据)                 |
    • UDP 数据报(Datagram)

      plaintext 复制代码
      | 源端口 (16 bits) | 目的端口 (16 bits) |
      | 长度 (16 bits)   | 校验和 (16 bits)    |
      | 数据 (应用层数据)                 |
  • 关键字段

    • 端口号:标识应用进程(如 80 用于 HTTP)。
    • TCP 特有:序列号、确认号、控制标志(可靠传输)。
    • UDP 更简单,无连接和可靠性保证。

3. 网络层(Internet Layer)

  • 协议:IP(IPv4 或 IPv6)。

  • 封装格式(IPv4 数据包)

    plaintext 复制代码
    | 版本 (4 bits) | 头部长度 (4 bits) | 服务类型 (8 bits) | 总长度 (16 bits)      |
    | 标识 (16 bits)                | 标志 (3 bits) | 片偏移 (13 bits)    |
    | 生存时间 TTL (8 bits) | 协议 (8 bits, e.g., TCP=6, UDP=17) | 头部校验和 (16 bits) |
    | 源 IP 地址 (32 bits)                                           |
    | 目的 IP 地址 (32 bits)                                         |
    | 选项 (可选)                                                    |
    | 数据 (传输层段)                                                |
  • 关键字段

    • 源/目的 IP 地址:标识主机。
    • 协议字段:指示上层协议(TCP/UDP)。
    • TTL:防止数据包无限循环。

  • 协议:以太网(Ethernet)、Wi-Fi(802.11)、PPP 等。

  • 封装格式(以太网帧)

    plaintext 复制代码
    | 前导码 (7 bytes) | 帧开始符 (1 byte) |
    | 目的 MAC 地址 (6 bytes) | 源 MAC 地址 (6 bytes) |
    | 类型 (2 bytes, e.g., IPv4=0x0800, ARP=0x0806)                  |
    | 数据 (IP 数据包)                                               |
    | 帧校验序列 FCS (4 bytes, CRC校验)                              |
  • 关键字段

    • MAC 地址:标识本地网络中的设备。
    • 类型字段:指示上层协议(如 IPv4 或 ARP)。
    • FCS:错误检测。

完整封装流程示例(HTTP over TCP/IP)

  1. 应用层:HTTP 请求 → 添加 HTTP 头部。
  2. 传输层:将 HTTP 数据封装为 TCP 段 → 添加源/目的端口、序列号等。
  3. 网络层:将 TCP 段封装为 IP 数据包 → 添加源/目的 IP 地址。
  4. 链路层:将 IP 数据包封装为以太网帧 → 添加源/目的 MAC 地址和 FCS。

最终数据通过物理介质(如网线)传输,接收方逐层解封装。


关键点总结

  • 分层封装:每层添加自己的头部,形成"洋葱式"结构。
  • 协议标识
    • 链路层通过类型字段标识网络层协议(如 IPv4)。
    • 网络层通过协议字段标识传输层协议(如 TCP)。
    • 传输层通过端口号标识应用层协议(如 HTTP 的 80 端口)。
  • MTU 限制:链路层帧大小有限(如以太网默认 1500 字节),超长的 IP 数据包会被分片。
相关推荐
驱动小百科2 小时前
WiFi出现感叹号上不了网怎么办 轻松恢复网络
网络·智能路由器·wifi出现感叹号怎么解决·wifi无法上网·电脑wifi
好多知识都想学2 小时前
协议路由与路由协议
网络·智能路由器
SZ1701102312 小时前
中继器的作用
服务器·网络·智能路由器
Huazzi.4 小时前
Ubuntu 22虚拟机【网络故障】快速解决指南
linux·网络·学习·ubuntu·bash·编程
熙曦Sakura4 小时前
【Linux网络】HTTP
linux·网络·http
毒果4 小时前
网络安全:账号密码与诈骗防范
网络·安全·web安全
八股文领域大手子4 小时前
SSL/TLS 证书与数字签名:构建互联网信任的详解
网络·网络协议·ssl
XiaoCCCcCCccCcccC5 小时前
Linux网络基础 -- 局域网,广域网,网络协议,网络传输的基本流程,端口号,网络字节序
linux·c语言·网络·c++·网络协议