3.4 互联网协议
本节将介绍TCP/IP协议组的主要特点,并讨论在分布式系统中使用它们的好处及局限性。
互联网的研究始于20世纪70年代早期的ARPANET——第一个大规模计算机网络的开发[Leiner et al.1997],随着近20年的研究和开发,互联网渐渐成形。这项研究的一个重要部分是开发TCP/IP协议组,TCP指传输控制协议,IP是指网际协议。TCP/IP和互联网应用协议在美国研究网络中的广泛采用以及最近在许多国家的商业网络中的广泛使用,使得全国的网络可以集成为一个互连网络,这一网络已经迅速发展到目前数量超过6000万主机的规模。现在许多应用服务和应用层的协议(列在下面的各个括号内)都是基于TCP/IP的,包括Web(HTTP)、电子邮件(SMTP、POP)、网络新闻(NNTP)、文件传输(FTP)和远程登录(telnet)。TCP是一个传输协议,它可以直接支持应用程序,也可以将附加的协议加在它上面,以提供额外的特点。例如,通常HTTP传输时直接使用TCP,但当需要端-端的安全性时,传输层安全(TLS)协议(在11.6.3节讨论)就会放在TCP的上层,以建立安全信道,HTTP消息通过这一安全信道传输。
最初,开发互联网协议是用来支持一些简单的广域应用,如文件传输和电子邮件,这涉及在地理上相隔很远的、有较长延迟的通信。但这些协议已被证明足以有效支持很多分布式应用的需求,不论这些应用是在广域网上还是在局域网上,它们现在广泛应用于分布式系统中。通信协议的标准化带来了巨大的好处。
图3-6所示的互连网络协议层的一般性说明被翻译成图3-12所示的互联网的特例,其中有两个传输协议——TCP(传输控制协议)和UDP(用户数据报协议)。TCP是一个面向连接的可靠协议,而UDP是一个不能保证可靠传输的数据报协议。网际协议(IP)是互联网虚拟网络的底层“网络”协议,也就是说,IP数据报为互联网和其他TCP/IP网络提供了基本的传输机制。我们在前面的句子中给“网络”一词加上引号,因为它并不是唯一的互联网通信实现所涉及的网络层。这是因为网际协议通常是在另一个网络技术之上,如以太网,它已经提供了一个网络层,该层使得连接到同一网络的计算机可以交换数据报。图3-13说明了通过TCP在底层以太网上传输消息的时候数据包的封装过程。头部的标签给出了上层协议的类型,以便接收协议栈正确地解开这个数据包。在TCP层,接收方的端口号有类似的作用,使得接收主机的TCP软件组件可以将消息送到特定的应用层进程中去。
TCP/IP规约[Postel 1981a;1981b]没有详细描述互联网数据报层以下的层,互联网层的IP数据包会转换成可以在几乎任何底层网络或数据链路上传输的包。
举例来说,IP起初运行在APPANET上,这个网络包括主机和一些由长距离数据链路连接的早期版本的路由器(称为PSE)。如今,IP实际上已经用于各种网络技术了,包括ATM、局域网(如以太网)和令牌环网。在串行线路和电话电路上通过PPP协议[Parker 1992]实现IP,使得IP可用于与调制解调器连接和其他串行链路的通信。
TCP/IP的成功源于它独立于底层传输技术,这使得互连网络可以由许多异构的网络或数据链路建立起来。用户和应用程序感知到的是一个支持TCP和UDP的虚拟网络,TCP和UDP的实现者看到一个虚拟IP网络,它隐藏了底层传输介质的多样性。图3-14说明了这个观点。
下面两节将详细描述IP寻址方案和IP协议。用于将互联网用户很熟悉的www.amazon.com、hpl.hp.com、stanford.edu、qmw.ac.uk这些域名转化成IP地址的域名系统将在3.4.7节中介绍,第9章将给出更全面的叙述。
现在,互联网上使用的主要IP协议的版本是IPv4(从1984年1月开始),这也是我们将在下面两小节里讨论的版本。但由于互联网使用的飞速发展,人们也不得不发布新的IP版本IPv6,以克服IPv4中地址数量的限制并为之增添功能以满足新的需求。我们将在3.4.4节描述IPv6。由于大量的软件将受此影响,所以逐渐过渡到IPv6的计划将在10年或更长的时间里来完成。