网络模型的结构
OSI(Open System Interconnection)是由国际标准化组织(ISO)制定的网络模型,该模型定义了不同计算机如何互相连接,是设计和描述计算机网络通信的基本框架。OSI模型将网络通信分为7层:
OSI仅是一个理论上的模型,实际使用的是TCP/IP网络模型,TCP/IP模型将OSI模型的应用层,表示层和会话层合并为应用层:
由于TCP/IP是实际使用的模型,后续我们就以TCP/IP模型为例进行介绍,OSI也是基本相似的过程。
将网络协议分层的原因是,网络是一个非常复杂的过程,将这个过程抽象成几层,可以使每层互不干扰,每层可以不关心其他层的逻辑,大大简化了网络模块的开发和维护,网络分层的过程本质上就是解耦的过程,这也是软件设计中需要考虑的重要部分。
数据包在内核中的加工
网络中的每一层在传输时都会为数据包加上包头,这个过程是由操作系统内核完成,用户是无感知的,比如我们使用TCP/IP模型发送”hello,world!”,这个数据包在内核中经历了一系列的加工: