《UNIX网络编程 卷1:套接字联网API(第3版)》——1.7 OSI模型

本节书摘来自异步社区《UNIX网络编程 卷1:套接字联网API(第3版)》一书中的第1章,第1.7节,作者:【美】W. Richard Stevens , Bill Fenner , Andrew M. Rudoff著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.7 OSI模型

描述一个网络中各个协议层的常用方法是使用国际标准化组织(International Organization for Standardization,ISO)的计算机通信开放系统互连(open systems interconnection,OSI)模型。这是一个七层模型,如图1-14所示。图中同时给出了它与网际协议族的近似映射。
《UNIX网络编程 卷1:套接字联网API(第3版)》——1.7 OSI模型

我们认为OSI模型的底下两层是随系统提供的设备驱动程序和网络硬件。通常情况下,除需知道数据链路的某些特性外(如将在2.11节论述的1500字节以太网的MTU大小),我们不必关心这两层的具体情况。

网络层由IPv4和IPv6这两个协议处理,我们将在附录A中讲述它们。可以选择的传输层有TCP或UDP,我们将在第2章中讲述它们。图1-14中TCP与UDP之间留有间隙,表明网络应用绕过传输层直接使用IPv4或IPv6是可能的。这就是所谓的原始套接字(raw socket),我们将在第28章中讨论。

OSI模型的顶上三层被合并成一层,称为应用层。这就是Web客户(浏览器)、Telnet客户、Web服务器、FTP服务器和其他我们在使用的网络应用所在的层。对于网际协议,OSI模型的顶上三层协议几乎没有区别。

本书讲述的套接字编程接口是从顶上三层(网际协议的应用层)进入传输层的接口。本书的焦点是:如何使用套接字编写使用TCP或UDP的网络应用程序。我们已提到原始套接字,在第29章中我们将看到,甚至可以彻底绕过IP层直接读写数据链路层的帧。

为什么套接字提供的是从OSI模型的顶上三层进入传输层的接口?这样设计有两个理由,如图1-14右侧所注。理由之一是顶上三层处理具体网络应用(如FTP、Telnet或HTTP)的所有细节,却对通信细节了解很少;底下四层对具体网络应用了解不多,却处理所有的通信细节:发送数据,等待确认,给无序到达的数据排序,计算并验证校验和,等等。理由之二是顶上三层通常构成所谓的用户进程(user process),底下四层却通常作为操作系统内核的一部分提供。Unix与其他现代操作系统都提供分隔用户进程与内核的机制。由此可见,第4层和第5层之间的接口是构建API的自然位置。

上一篇:【Java 网络编程】网络环境简介 ( 网络 | 网络编程 | OSI 七层网络模型 | TCP/IP 网络模型 )


下一篇:网络基础一 交换机 路由器 OSI7层模型