简述OSI模型与套接字
关于OSI模型
OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
OSI模型是一个七层模型,下图同时给出了它与网际协议族的近似映射
-
OSI模型的底下两层是随系统提供的设备驱动程序和网络硬件,除需知道数据链路的某些特征外(如1500字节以太网的MTU大小),不必关心这两层的具体情况。
-
网络层由IPv4和IPv6这两个协议处理,可以选择的传输层有TCP或UDP,TCP与UDP之间留有间隙,表明网络应用绕过传输层直接使用IPv4或IPv6是可能的。这就是所谓的原始套接字(raw socket)。
-
OSI模型的顶上三层被合并成一层,称为应用层。这是Web客户端(浏览器)、Telnet客户、Web服务器、FTP服务器和其他在使用的网络应用所在的层。对于网际协议,OSI模型的顶上三层协议几乎没有区别。
可见TCP/UDP位于OSI模型的传输层,IP位于OSI模型的网络层。
关于套接字
套接字编程接口是从顶上三层(网际协议的应用层)进入传输层的接口,如上图所示
- 顶上三层处理具体网络应用(如FTP、Telnet或HTTP)的所有细节,却对通信细节了解很少,底下四层对网络应用了解不多,却处理所有的通信细节:发送数据,等待确认,给无序到达的数据排序,计算并验证校验和等等。
- 顶上三层通常构成所谓的用户进程(user process),底下四层却通常作为操作系统内核的一部分提供。
由此可见,第4层和第5层之间的接口是构建API的自然位置。
参考资料:
《UNIX网络编程卷1:套接字联网API(第3版)》