《TCP/IP详解 卷2:实现》 —1.7 网络实现概述

举报
华章计算机 发表于 2019/11/20 15:43:47 2019/11/20
【摘要】 本节书摘来自华章计算机《TCP/IP详解 卷2:实现》一书中第1章,第1.7节,作者是[美]加里R.赖特(Gary R.Wright),W. 理查德史蒂文斯(W.Richard Stevens),陆雪莹 蒋慧 等译 谢希仁 校。

1.7   网络实现概述

Net/3通过同时支持多种通信协议来提供通用的底层基础服务。的确,4.4BSD支持4种不同的通信协议族:

1) TCP/IP(互联网协议族),本书的主题。

2) XNS(Xerox网络系统),一个与TCP/IP相似的协议族,在20世纪80年代中期它被广泛应用于连接Xerox设备(如打印机和文件服务器),通常使用的是以太网。虽然Net/3仍然发布它的代码,但今天已很少使用这个协议了,并且很多使用伯克利TCP/IP代码的厂商把XNS代码删去了(这样就不需要支持它了)。

3) OSI协议[Rose 1990;Piscitello and Chapin 1993]。这些协议在20世纪80年代是作为开放系统技术的最终目标而设计的,用来代替所有其他通信协议。在20世纪90年代初它没有什么吸引力,以至于在真正的网络中很少使用它,其历史地位有待进一步确定。

4) Unix域协议。从通信协议是用来在不同的系统之间交换信息的意义上来说,它还不算是一套真正的协议,但它提供了一种进程间通信(IPC)的形式。

相对于其他IPC,例如System V消息队列,在同一主机上两个进程间的IPC使用Unix域协议的好处是Unix域协议用与其他三种协议同样的API(插口)访问。另一方面,消息队列和大多数其他形式IPC的API与插口和TLI完全不同。在同一主机上的两进程间的IPC使用网络API,更容易将一个客户/服务器应用程序从一台主机移植到多台主机上。在Unix域中提供两个不同的协议—一个是与TCP相似的可靠的、面向连接的字节流协议;一个是与UDP相似的不可靠的、无连接的数据报协议。

虽然Unix域协议可以作为一种同一主机上两进程间的IPC,但也可以用TCP/IP来完成它们之间的通信。进程间通信并不要求使用在不同的主机上的互联网协议。

内核中的联网代码组织成三层,如图1-3所示。在图的右侧我们注明了OSI参考模型[Piscitello和Chapin 1994]的七层分别对应到BSD组织的哪里。

1) 插口层是一个到下面协议相关层的协议无关接口。所有系统调用从协议无关的插口层开始。例如:在插口层中的bind系统调用的协议无关代码包含几十行代码,它们验证的第一个参数是一个有效的插口描述符,并且第二个参数是一个进程中的有效指针。然后调用下层的协议相关代码,协议相关代码可能包含几百行代码。

image.png

2) 协议层包括我们前面提到的四种协议族(TCP/IP、XNS、OSI和Unix域)的实现。每个协议族可能包含自己的内部结构,在图1-3中我们没有显示出来。例如,在Internet协议族中,IP(网络层)是最低层,TCP和UDP两种运输层在IP的上面。

3) 接口层包括同网络设备通信的设备驱动程序。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。