网络的封包与拆包
一、网络的封包和拆包
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时)
- 动态参数,受网络线路质量等因素影响
- MTU(Maximum Transmission Unit):
- 协议开销:
- 头部信息属于传输开销
- 实际有效数据仅占部分比例
- 优化传输应考虑减少协议开销
二、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 |
网络分层模型 | 工业标准分为四层(应用层、传输层、网络层、物理层),各层协议与作用 | 区分内核空间(传输层及以下)与用户空间(应用层) |
封包与拆包流程 | 数据从应用层→传输层(加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) |