描述一个网络中各个协议层的常用方法是使用国际标准化组织(ISO)的计算机通信开放系统互连(open systems interconnection , OSI)模型。![]() (图片来自《UNIX网络编程卷一》)
OSI模型的低下两层是随系统提供的设备驱动程序和网络硬件,一般不必关心它们。TCP和UDP之间留有空隙,表明网络应用绕过传输层直接使用IPV4和IPV6是可能的,即原始套接字。 套接字(socket)编程接口是从顶上三层(网络协议的应用层)进入传输层的接口。除了提到的原始套接字,套接字编程可以彻底绕过IP层直接读写数据链路层的帧。 为什么套接字提供的是从OSI模型的顶上三层进入传输层的接口,有两个原因: 1)顶上三层处理具体网络应用(如FTP、HTTP)的所有细节,而对通信细节了解很少;低下四层对具体网络应用了解不多,却处理所有的通信细节(发送数据、等待确认、校验等)。 2)顶上三层通常构成所谓的用户进程,底下四层却通常作为操作系统内核的一个部分提供。现代操作系统都提供分隔用户进程与内核的机制。 所以,在第4层和第5层之间的接口是构建API的自然位置。 |
|