在图 1.3 中,我们可以划分出端系统(end system)(两边的两台主机)和中间系统
(intermediate system)(中间的路由器)。应用层和运输层使用端到端( end-to-end)协
议。在我们的图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳(hop-by-
hop)协议,两个端系统和每个中间系统都要使用它。
图 1.3 通过路由器连接的两个网络
在 TCP/IP 协议组件中,网络层 IP 提供的是一种不可靠的服务。也就是说,它只是尽可
能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面,TCP
在不可靠的 IP 层上提供了一个可靠的运输层。为了提供这种可靠的服务,TCP 采用了超时
重传,发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的
功能。
从定义上看,一个路由器具有两个或多个网络接口层(因为它连接了两个或多个网络)。
任何具有多个接口的系统英文都称作是多接口的 multihomed。一个主机也可以有多个接口,
但一般不称作路由器, 除非它的功能只是单纯地把分组从一个接口传送到另一个接口。同样,
路由器并不一定指那种在互连网中用来转发分组的特殊硬件盒。大多数的 TCP/IP 实现也允
许一个多接口主机来担当路由器的功能,但是主机为此必须进行特殊的配置。在这种情况
下,我们既可以称该系统为主机(当它运行某一应用程序时,如 FTP 或 Telnet),也可以
称之为路由器(当它把分组从一个网络转发到另一个网络时)。我们在不同的场合下使用
不同的术语。
互连网的目标之一是在应用程序中隐藏所有的物理细节。虽然这一点在图 1.3 由两个网
络组成的互连网中并不很明显,但是应用层不能关心(也不关心)一台主机是在以太网上,
而另一台主机是在令牌环网上,它们通过路由器进行互连。随着增加不同类型的物理网络,
可能会有 20 个路由器,但应用层仍然是一样的。物理细节的隐藏使得互连网功能非常强大,
也非常有用。
连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是
在网络层上对网络进行互连。网桥使得多个局域网(LAN)组合在一起,这样对上层来说
就好像是一个局域网。
TCP /IP 倾向于使用路由器而不是网桥来连接网络,因此我们将着重介绍路由器。文献
[Perlman 1992]的第 12 章对路由器和网桥进行了比较。
1.3 TCP/IP 的分层
在 TCP/IP 协议组件中,有很多种协议。图 1.4 给出了本书将要讨论的其他协议。
图 1.4 TCP/IP 协议组件中不同层次的协议
TCP 和 UDP 是两种最为著名的运输层协议,二者都使用 IP 作为网络层协议。
虽然 TCP 使用不可靠的 IP 服务,但它却提供一种可靠的运输层服务。本书第 17 章到第
22 章将详细讨论 TCP 的内部操作细节。然后,我们将介绍一些 TCP 的应用,如第 26 章中
的 Telnet 和 Rlogin,第 27 章中的 FTP,以及第 28 章中的 SMTP 等。这些应用通常都是用户
进程。
UDP 为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息
单元(例如,发送方指定的一定字节数的信息)。但是与 TCP 不同的是,UDP 是不可靠的,
它不能保证数据报能安全无误地到达最终目的。本书第 11 章将讨论 UDP,然后在第 14 章