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 数据包会被分片。
相关推荐
聪明蛋子哟3 小时前
大模型应用“最后一公里”:从Prompt工程到MCP协议,如何实现跨系统的高可用集成?
网络·prompt
科创致远4 小时前
ESOP 电子作业指导书 WiFi 网络应用实测报告
运维·服务器·网络
承渊政道4 小时前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat
最强小杰4 小时前
minimax-m3 突然报 HTTP 529 怎么办?连续重试为何更难恢复,退避时间该怎么算?
网络·网络协议·http·ai
程序员清风4 小时前
AI 编程助手的权限边界:文件、命令、密钥与人工确认
运维·服务器·网络
别讲概念5 小时前
JavaEE(5)网络原理初识
网络·java-ee·智能路由器
爱吃香菜的初学者5 小时前
十九.Linux——TCP协议(1)
linux·网络·tcp/ip
好啊好啊郝!6 小时前
计算机网络最基础知识点
服务器·网络·计算机网络
辰辰观影6 小时前
外挂字幕怎么导入播放器?2026实用教程
网络
海量计划6 小时前
OSPF路由详细讲解
网络