进入正题之前,咱们来简单的复习下网络协议、开放式系统互联通信参考模型(OSI模型)以及网络数据帧的基础知识。
一、网络协议
网络协议咱们可以类比为咱们人类平时口头或书面语言的使用规则。在网络环境中不同平台的系统之间通信,需要用到自己的通信语言即网络协议。如同语言有规则一样,网络协议也有着它自己的规则。它帮助我们定义如何路由数据包,如何发起一个连接,以及如何确认收到的数据。网络协议可以很简单,也可以很复杂,这取决于它的功能。常见的网络协议如传输控制协议(TCP)、互联网协议(IP)、地址解析协议(ARP)和动态主机配置协议等。我们将一组协同工作的网络协议的逻辑组合称之为协议栈。
尽管各种协议有着很大的差异,但它们通常用来解决如下的问题:
发起连接:是由客户端发起还是服务端发起?在真正通信之前需要交换哪些信息。
协商连接参数:通信需要进行协议加密吗?加密密钥如何在通信双方之间进行传输。
数据格式:通信数据在数据包中如何排列?数据在到达接收设备之前是以什么样的顺序进行处理的?
错误检测与校正:当数据包花了很长时间才到达目的地时如何进行处理?当客户端和服务器无法建立通信时,该如何恢复连接。
连接终止:应该传递怎样的终止信息告知对方通信结束。
二、七层OSI参考模型
网络协议是基于它们在行业标准OSI参考模型中的职能来进行分层的。OSI参考模型将网络通信过层分为七个不同的层次。如下图所示。