第1 8 章IP 数据报和数据报转发 18.1 概述 前面我们介绍了互联网的体系结构,因特网寻址以及用来将IP 地址翻译成硬件地址的地址解析软件。本章我们将讨论互联网中基本的通讯服务,包括互联网中包的格式以及路由器如何处理和转发这些包。第1 9 章接着讨论路由器如何利用底层硬件来传送包。 18.2 无连接服务 网络互联的目的是为了提供这样一种包通讯系统:一台计算机上运行的程序能够向另一台计算机上运行的程序发送数据。在一个设计良好的互联网中,底层物理网络对应用程序来说是透明的——这些应用程序能够收发数据而又无须了解很多细节,比如本机所连的局域网、目的机所连的远程网络以及两者之间的互联等等。 协议的设计者必须决定互联网协议要提供哪些通讯服务,以及如何高效地实现这些服务。另外,设计者还须决定是否为程序提供面向连接(connection-oriented)的服务,或是无连接(connectionless)的服务,或是两者都提供。TCP/IP 的设计者既提供了无连接服务,也提供了面向连接的服务:他们选择了无连接的基本传送服务(delivery service),并在这些无连接的底层服务之上增加了可靠的面向连接的服务。这一设计非常成功,以至于经常被其他的协议所模仿。 18.3 虚拟包 无连接的互联网服务其实是包交换的一种扩展——这种服务允许发送方通过互联网传输单独的包。每一个包独立地在网上传送,它本身包含了用以标识接收方的信息。 一个包是如何在互联网上传输的呢?答案就在于路由器将包从一个网转发到另一个网。源主机创建了一个包,将目的地址放入包的头部,然后将包送往相邻的路由器。当一个路由器收到一个包,就会使用包的目的地址来选择下一个路由器并向之转发。最终,包会到达这样一个路由器,此路由器能够直接将包传给它的最终目的地。 一个互联网上的包的格式是怎样的呢?不幸的是,传统的硬件帧格式不适合作为互联网上的包格式。这是因为路由器能够连接异构网络,而不同类型网络的帧格式不同,因此路由器不能直接将包从一个网络传送到另一个网络。另外,路由器也不能简单地重新格式化帧的头部,因为两个网络可能使用不兼容的地址格式(例如,一个输入帧中的地址可能对另一个网络而言是毫无意义的)。 为了克服异构性,互联网协议软件定义了一种独立于底层硬件的互联网包格式。结果就产生了一种能无损地在底层硬件中传输的通用的(universal)、虚拟的(virtual)包(第19章将详细说明一个互联网包怎样在物理网中传...