探究网络传输中不同层级的数据大小和数据格式
网络中不同层次的数据统称为PDU (协议数据单元 - protocol data unit)
每一层中可能有一种或多种协议,挑选最常见的协议进行说明
数据链路层 - 帧 (标准以太网)
- 帧结构
前导码 | 帧开始符 MAC | 目标地址 | MAC 源地址 | 802.1Q标签 (可选) | 以太类型 | 负载 | 冗余校验 | 帧间距 |
---|---|---|---|---|---|---|---|---|
7个octet | 10101010 | 6 octets | 6 octets | (4 octets) | 2 octets | 46–1500 octets | 4 octets | 12 octets |
- 特别说明,前导码是为了让源主机和目的主机进行时钟同步
- 不考虑前导码,帧开始符号,帧间距,大小为 64–1522 字节
- 全部长度为 84–1542 字节
- 以太网的长度是变化的
网络层 - IP 数据报 (IPv4)
- 数据报结构,单位为 位
版本号 | 首部长度 | 区分服务 | 数据报长度 | 标识 | 标志 | 片偏移量 |
---|---|---|---|---|---|---|
4位 | 4位 | 8位 | 16位 | 16位 | 3位 | 13位 |
生存时间 | 上层协议 | 首部校验和 | 源地址 | 目的地址 | 选项字段 | 数据字段 |
8位 | 8位 | 16位 | 32位 | 32位 | 1-40位 | 2 16 2 ^ {16} 216 - 首部字段 |
- 总长可达 65535,但以太网的数据大小默认是 1500 ,所以ip数据包一般长度也在1500 以内
- 上层协议的作用是区分UDP和TCP,还有一个功能是进行多路复用和多路分解
- 区分服务字段 目前已不常使用
传输层 - UDP 数据报
- UDP 数据报结构
源端口号 | 目的端口号 | 长度 | 校验和 | 源IP地址 | 目的IP地址 | 全0 | 协议号 | UDP长度 | 数据 |
---|---|---|---|---|---|---|---|---|---|
16位 | 16位 | 16位 | 16位 | 32位 | 32位 | 8位 | 8位 | 16位 | 65535 - 首部 |
传输层 - TCP 报文
- TCP 报文结构
源端口 | 目的端口 | 序号 | 确认序号 | 首部长度 | 保留 | 标识位 | 接收窗口 | 全0 | 紧急指针 |
---|---|---|---|---|---|---|---|---|---|
16位 | 16位 | 32位 | 32位 | 4位 | 6位 | 6位 | 16位 | 16位 | 16位 |
选项(长度可变) | 填充 | 数据 | |||||||
0 - 40字节 | 保证首部长度为4的倍数 0 ~3字节 | 65535 - 首部 |
- 数据长度最大为 65515 - 65475
- 除通用的一些字段外,其他都与TCP 的连接有关
分析不同层级中的数据结构的共同性
- 从哪里来,到哪里去
- 上层协议是什么
- 长度
- 校验字段
- 变长不需要填充,定长需要填充
- 功能特性的字段