先说个人的一点见解:真实地去分析一个协议的数据帧,还是对照着“TCP/IP详解卷1:协议”上的四层模型更加合适(四层模型见这儿:点击打开链接),按照 OSI 7层模型的话有些东西对应起来会比较困惑。
- 先从整体上来看:
- 应用层(上图中的1),没什么好说的,就是应用进程准备的要发送的原始数据
- 运输层:这个数据帧的运输层协议是 UDP 了, UDP 协议帧格式如下:
- 我们来对着具体的数据帧看(蓝色选中部分):
- 蓝色选中部分正好 8 个字节,分别对应上对 UDP 首部的解释,很清晰
- 网络层,对应一个 IP 数据报的 IP 首部了,IP 首部格式如下:
- 我们来对着具体的数据帧看(蓝色选中用部分):
- 蓝色选中部分正好 20 个字节,分别对应上对 IP 首部的解释,很清晰
- 链路层,这一步主要就是封包了,主要格式就是:以太网封装格式 和 802.x 封装格式了,具体可以参见:TCP/IP协议详解卷1:协议。显然这儿是一个 以太网 包:以太网封包格式 和 802.x 封包格式如下:
- 对应着具体的数据帧来分析(蓝色选中部分):
- 蓝色选中部分正好 14 字节,对应着 以太网 封包格式的 “目的地址、源地址、类型”字段,很清晰
- 这样就得到一个可以在网络上传输的数据帧(比特流)啦
- 我们来对着具体的数据帧看(蓝色选中部分):
PS:
- 每写一篇博客都诚惶诚恐,但是很清楚自己才疏学浅,错误肯定是在所难免的,但是我尽量做到不拿没有经过思考、验证的东西搬上博客来
- 故:如有错误望大家不吝指正
- 本博客所有博文我会不断refine,保证质量