网络帧的传输
本文主要简单回顾一下网络数据包的封装、分片、传输以及重新组装的过程,帮助我们理解实际的网络传输。
注意,下文中的IP协议如果未作特殊说明指的实IPv4版本。
1. 网络的分层
刚开始学网络协议的时候,我们会学习OSI七层参考模型。 《Effective TCP/IP Programming》 这本书里面提到一个技巧:Don’t Take the OSI Seven-Layer Reference Mode Too Seriously,翻译过来就是不要把OSI七层参考模型太当回事。事实上,OSI七层参考模型只是理论上的标准,TCP/IP模型 才是事实上的标准,因此下面的例子不会对OSI七层参考模型做过多的介绍,主要以TCP/IP四层模型为依据的。
请看OSI七层参考模型与TCP/IP四层模型的对比图,下图对相应的层做了相关的映射。
说明:
- TCP/IP模型和OSI七层参考模型中的六层相对应;
- TCP/IP模型不包含OSI七层参考模型中的物理层,也就是不包含硬件;
- TCP/IP模型中的传输层、网际层和网络接口层分别相当于OSI七层参考模型中传输层、网络层和数据链路层;
- TCP/IP模型中的应用层相当于OSI七层参考模型中的应用层、表示层和会话层。
2.网络帧的封装
刚开始学习网络协议的时候,一脸懵逼:
网络协议的分层有什么意义?
为什么还要分那么多层?
可能大学时代翘课太多,导致这种疑惑一直持续到大学毕业以后,直到后来看了几本有关网络协议的书,有些疑惑才慢慢解开。下面还是以图为例描述网络数据包的封装。
请看下图,以HTTP为例,比较形象的说明了数据是怎么经过层层封装传到网络中,最后接收者又是怎样经过层层解析获取网络数据包。