1.2 分层
1.3 TCP/IP的分层
在TCP/IP协议族中,有很多种协议。图 1 - 4给出了本书将要讨论的其他协议。
图1-4 TCP/IP协议族中不同层次的协议
T C P和U D P是两种最为著名的运输层协议,二者都使用 I P作为网络层协议。
1.4 互联网的地址
需要再次指出的是,多接口主机具有多个 I P地址,其中每个接口都对应一个IP地址。
1.5 域名系统
在 TCP/IP领域中,域名系统(DNS)是一个分布的数据库,由它来提供 I P地址和
主机名之间的映射信息。
1.6 封装
当应用程序用 T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作
一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部
信息),该过程如图 1 - 7所示。T C P传给I P的数据单元称作 T C P报文段或简称为 T C P段(T C P
s e g m e n t)。I P传给网络接口层的数据单元称作 I P数据报(IP datagram)。通过以太网传输的比特
流称作帧(Fr a m e )。
图1 - 7中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度。在后面的章节中
我们将详细讨论这些帧头的具体含义。
以太网数据帧的物理特性是其长度必须在 4 6~1 5 0 0字节之间。我们将在 4 . 5节遇到最小长
度的数据帧,在2 . 8节中遇到最大长度的数据帧。
1.7 分用
为协议ICMP和IGMP定位一直是一件很棘手的事情。在图1 - 4中,把它们与IP放在同一层上,那是因为事实上它们是IP的附属协议。但是在这里,我们又把它们放在IP层的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。
对于ARP和RARP,我们也遇到类似的难题。在这里把它们放在以太网设备驱动程序的上方,这是因为它们和IP数据报一样,都有各自的以太网数据帧类型。但在图2 - 4中,我们又把ARP作为以太网设备驱动程序的一部分,放在IP层的下面,其原因在逻辑上是合理的。
这些分层协议盒并不都是完美的。
当进一步描述TCP的细节时,我们将看到协议确实是通过目的端口号、源IP地址和源端口号进行解包的。
1.8 客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服
务器为客户提供一些特定的服务。
可以将这种服务分为两种类型:重复型或并发型。重复型服务器通过以下步骤进行交互:
I1. 等待一个客户请求的到来。
I2. 处理客户请求。
I3. 发送响应给发送请求的客户。
I4. 返回I 1步。
重复型服务器主要的问题发生在 I 2状态。在这个时候,它不能为其他客户机提供服务。
相应地,并发型服务器采用以下步骤:
C1. 等待一个客户请求的到来。
C2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务
或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器
对客户的全部请求进行处理。处理结束后,终止这个新服务器。
C3. 返回C 1步。
1.10 标准化过程
1.11 RFC
1.12 标准的简单服务
1.13 互联网
在图1 - 3中,我们列举了一个由两个网络组成的互联网—一个以太网和一个令牌环网。
1.14 实现
1.15 应用编程接口
使用T C P / I P协议的应用程序通常采用两种应用编程接口( A P I):s o c k e t和T L I(运输层接
口:Transport Layer Interface)。前者有时称作“Berkeley socket”,表明它是从伯克利版发展
而来的。后者起初是由 AT & T开发的,有时称作 X T I(X / O p e n运输层接口),以承认X / O p e n这
个自己定义标准的国际计算机生产商所做的工作。 X T I实际上是T L I的一个超集。
1.16 测试网络
1.17 小结
本章快速地浏览了TCP/IP协议族,介绍了在后面的章节中将要详细讨论的许多术语和协议。
T C P / I P协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。
在T C P / I P中,网络层和运输层之间的区别是最为关键的:网络层( I P)提供点到点的服务,
而运输层(T C P和U D P)提供端到端的服务。
一个互联网是网络的网络。构造互联网的共同基石是路由器,它们在 I P层把网络连在一
起。第一个字母大写的I n t e r n e t是指分布在世界各地的大型互联网,其中包括 1万多个网络和超
过1 0 0万台主机。
在一个互联网上,每个接口都用 I P地址来标识,尽管用户习惯使用主机名而不是 I P地址。
域名系统为主机名和 I P地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服
务器使用知名端口号,而客户使用临时设定的端口号。