当前位置: 首页 > news >正文

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

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


1. 应用层(Application Layer)

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

  • 示例

    • HTTP 请求
      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)
      | 源端口 (16 bits) | 目的端口 (16 bits) |
      | 序列号 (32 bits)                 |
      | 确认号 (32 bits)                 |
      | 头部长度 | 保留 | 控制标志 (SYN/ACK/FIN等) | 窗口大小 (16 bits) |
      | 校验和 (16 bits) | 紧急指针 (16 bits)     |
      | 选项 (可选)                       |
      | 数据 (应用层数据)                 |
      
    • UDP 数据报(Datagram)
      | 源端口 (16 bits) | 目的端口 (16 bits) |
      | 长度 (16 bits)   | 校验和 (16 bits)    |
      | 数据 (应用层数据)                 |
      
  • 关键字段
    • 端口号:标识应用进程(如 80 用于 HTTP)。
    • TCP 特有:序列号、确认号、控制标志(可靠传输)。
    • UDP 更简单,无连接和可靠性保证。

3. 网络层(Internet Layer)

  • 协议:IP(IPv4 或 IPv6)。
  • 封装格式(IPv4 数据包)
    | 版本 (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:防止数据包无限循环。

4. 网络接口层(Link Layer)

  • 协议:以太网(Ethernet)、Wi-Fi(802.11)、PPP 等。
  • 封装格式(以太网帧)
    | 前导码 (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 数据包会被分片。

相关文章:

  • leetcode 15. 三数之和
  • 【25软考网工】第六章(3)数字签名和数字证书
  • 在C++中,符号位是否参与位运算
  • 使用vue3-seamless-scroll实现列表自动滚动播放
  • 【通讯录教程】如何将号码快速导入手机通讯录,支持苹果和安卓手机,一次性导入大量号码进入手机通讯录,基于WPF的解决方案
  • 实战项目5(08)
  • 1688 API 自动化采集实践:商品详情实时数据接口开发与优化
  • 每日c/c++题 备战蓝桥杯(洛谷P1115 最大子段和)
  • 滑动窗口——将x减到0的最小操作数
  • 自然语言处理NLP中的连续词袋(Continuous bag of words,CBOW)方法、优势、作用和程序举例
  • 嵌入式硬件篇---IIC
  • Linux:43线程封装与互斥lesson31
  • upload-labs靶场通关详解:第五关
  • RAII是什么?
  • 9.1.领域驱动设计
  • Spring Boot项目(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot前后端分离)
  • 《操作系统真象还原》第十四章(1)——文件系统概念、创建文件系统
  • 如何租用服务器并通过ssh连接远程服务器终端
  • AugmentCode 非常昂贵的新定价
  • stm32测频率占空比最好的方案
  • 广东早熟荔枝“抢滩”上海,向长三角消费者喊话:包甜,管够
  • 佩斯科夫:若普京认为必要,将公布土耳其谈判俄方代表人选
  • 福建厦门市副市长、市公安局局长陈育煌出任吉林省公安厅厅长
  • 美国拟向阿联酋和沙特AI公司出口数十万枚芯片
  • 时隔4年多,这一次普京和泽连斯基能见面吗?
  • 《AI×SCIENCE十大前沿观察》9:合成数据和数据基础设施