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

网络的封包与拆包

一、网络的封包和拆包
1. TCP/IP协议的体系结构



  • 分层结构:
    • 应用层(Telnet、FTP、HTTP、DNS、SMTP等)
    • 传输层(TCP/UDP)
    • 网络层(IP、ICMP、IGMP)
    • 网络接口和物理层(以太网、令牌环网、FDDI等)
  • 工业标准:TCP/IP协议是Internet事实上的工业标准,共分为四层结构
  • 空间划分:
    • 应用层运行在用户空间
    • 传输层及以下运行在内核空间
2. 数据的封装与传输过程
  • 封装过程:
    • 应用层:原始用户数据(data)
    • 传输层:添加TCP头(20字节)
    • 网络层:添加IP头(20字节)
    • 物理层:添加以太网头(14字节)和CRC校验(4字节)
  • 传输特点:
    • 每层将上层数据视为透明传输
    • 通过系统调用(socket编程)实现用户空间到内核空间的转换
  • 拆包过程:
    • 硬件接收后存入网卡RAM
    • 驱动逐层拆解:物理层→网络层→传输层→应用层
    • 最终还原原始用户数据(data)
3. TCP/IP协议下的数据包
  • 包结构组成:
    • 以太网头(14字节)
    • IP头(20字节)
    • TCP头(20字节)
    • 应用数据(46-1500字节)
    • CRC校验(4字节)
  • 传输范围:
    • 完整包大小:64-1518字节
    • 有效载荷范围:46-1500字节(从IP头开始计算)
4. 封包和拆包知识点总结
  • 关键概念:
    • MTU(Maximum Transmission Unit):
      • 最大传输单元,由网络类型决定
      • 以太网MTU=1500字节(从IP头到用户数据)
      • 静态参数,仅与网络类型相关
    • MSS(Maximum Segment Size):
      • 最大分段大小,指纯用户数据部分
      • 以太网中MSS=1460字节(当MTU=1500时)
      • 动态参数,受网络线路质量等因素影响
  • 协议开销:
    • 头部信息属于传输开销
    • 实际有效数据仅占部分比例
    • 优化传输应考虑减少协议开销
二、知识小结

知识点

核心内容

考试重点/易混淆点

网络分层模型

工业标准分为四层(应用层、传输层、网络层、物理层),各层协议与作用

区分内核空间(传输层及以下)与用户空间(应用层)

封包与拆包流程

数据从应用层→传输层(加TCP头)→网络层(加IP头)→物理层(加以太网头/CRC校验)的封装过程;接收端逆向拆包

MTU(1500字节)与MSS(1460字节)的区别:前者含协议头,后者仅用户数据

TCP协议特性

FTP基于TCP实现可靠传输,通过头部信息(如TCP头20字节)保障稳定性

TCP头部长度固定,但应用层协议(如FTP)可能附加额外头部

硬件层处理

网卡驱动添加CRC校验(4字节),物理层头部(如以太网头14字节)可能被路由器替换

硬件CRC校验由网卡自动完成,与软件无关

协议头结构

以太网包组成:14字节头+20字节IP头+20字节TCP头+用户数据+4字节CRC

包长范围:64~1518字节(含头部与CRC)

http://www.dtcms.com/a/265446.html

相关文章:

  • 基于Java的企业项目管理与协作系统设计与实现
  • Dataset Distillation by Matching Training Trajectories(2203.11932)
  • Eclipse主题拓展
  • mysql索引的底层原理是什么?如何回答?
  • Go语言的sync.Once和sync.Cond
  • Redis 源码 tar 包安装 Redis 哨兵模式(Sentinel)
  • Go调度器的抢占机制:从协作式到异步抢占的演进之路|Go语言进阶(7)
  • 价值实证:数字化转型标杆案例深度解析
  • 网络地址与子网划分:一次性搞清 CIDR、VLSM 和子网掩码
  • 分类树查询性能优化:从 2 秒到 0.1 秒的技术蜕变之路
  • 如何在 IDEA 中设置类路径
  • 探索具身智能新高度——机器人在数据收集与学习策略中的优势和机会
  • Objective-C UI事件处理全解析
  • c++中的绑定器
  • 如何使用AI改进论文写作 ---- 引言篇(2)
  • 设计模式系列(10):结构型模式 - 桥接模式(Bridge)
  • AutoMedPrompt的技术,自动优化提示词
  • 【小技巧】Python + PyCharm 小智AI配置MCP接入点使用说明(内测)( PyInstaller打包成 .exe 可执行文件)
  • Spring Boot + 本地部署大模型实现:基于 Ollama 的集成实践
  • Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类
  • 【Note】《深入理解Linux内核》Chapter 9 :深入理解 Linux 内核中的进程地址空间管理机制
  • MySQL数据库----DML语句
  • 深度学习新星:Mamba网络模型与核心模块深度解析
  • Python入门Day2
  • 【第三章:神经网络原理详解与Pytorch入门】01.神经网络算法理论详解与实践-(3)神经网络中的前向传播、反向传播的原理与实现
  • Python中`import` 语句的执行涉及多个步骤
  • 【Python】批量提取超声波检查图片的某一行数据
  • Docker 容器如何实现资源限制(如 CPU 和内存)
  • MacOS Safari 如何打开F12 开发者工具 Developer Tools
  • 【C++】状态模式