TCP-IP协议.pdf
《TCP-IP协议.pdf》由会员分享,可在线阅读,更多相关《TCP-IP协议.pdf(113页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、TCP/IP 详解 1 概述 1.1 引言 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 TCP/IP 协议组件允许它们互相进行通信。这一点很让人感到吃惊,因为它的作用已远远超出了起初的设想。TCP/IP 起源于 60 年代末美国政府资助的一个分组交换网络研究项目,到现在 90 年代已发展成为计算机之间最常应用的组网形式。它是一个真正的开放系统,因为协议组件的定义及其多种实现可以不用花钱或花很少的钱就可以公开地得到。它成为被称作“全球互联网”或“因特网”(Internet)的基础,该广域网(WAN)已包含超过 100 万台遍布世界各地的计算机。本章主要对 TCP/IP 协
2、议组件进行概述,其目的是为本书其余章节提供充分的背景知识。如果读者要从历史的角度了解有关 TCP/IP 的早期发展情况,请参考文献Lynch 1993。1.2 分层 网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议组件,比如 TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP 通常被认为是一个四层协议系统,如图 1.1 所示。图 1.1 TCP/IP 协议组件的四个层次 每一层负责不同的功能:1.链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。2.网络层
3、,有时也称作互连网层,处理分组在网络中的活动,例如分组的路由选择。在 TCP/IP 协议组件中,网络层协议包括 IP 协议(网际协议),ICMP 协议(Internet 互连网控制报文协议),以及 IGMP 协议(Internet 组管理协议)。3.运输层主要为两台主机上的应用程序提供端到端的通信。在 TCP/IP 协议组件中,有两个互不相同的传输协议:TCP(传输控制协议)和 UDP(用户数据报协议)。TCP 为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端
4、到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP 则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途,这一点我们将在后面看到。4.应用层负责处理特定的应用程序细节。几乎各种不同的 TCP/IP 实现都会提供下面这些通用的应用程序:Telnet 远程登录 FTP 文件传输协议 SMTP 用于电子邮件的简单邮件传输协议 SNMP 简单网络管理协议 另外还有许多其他应用,我们在后面章节中将介绍其中的一部分。假设我们在一个局域网(LAN
5、)如以太网中有两台主机,二者都运行 FTP 协议,图 1.2列出了该过程所涉及到的所有协议。图 1.2 局域网上运行 FTP 的两台主机 这里,我们列举了一个 FTP 客户程序和另一个 FTP 服务器程序。大多数的网络应用程序都被设计成客户服务器模式。服务器为客户提供某种服务,在本例中就是访问服务器所在主机上的文件。在远程登录应用程序 Telnet 中,为客户提供的服务是登录到服务器主机上。在同一层上,双方都有对应的一个或多个协议进行通信。例如,某个协议允许 TCP 层进行通信,而另一个协议则允许两个 IP 层进行通信。在图 1.2 的右边,我们注意到应用程序通常是一个用户进程,而下三层则一般
6、在(操作系统)内核中执行。尽管这不是必需的,但通常都是这样处理的,例如 UNIX 操作系统。在图 1.2 中,顶层与下三层之间还有另一个关键的不同之处。应用层关心的是应用程序的细节,而不是数据在网络中的传输活动。下三层对应用程序一无所知,但它们要处理所有的通信细节。我们在图 1.2 中例举了四种不同层次上的协议。FTP 是一种应用层协议,TCP 是一种运输层协议,IP 是一种网络层协议,而以太网协议则应用于链路层上。TCP/IP 协议组件是一组不同的协议组合在一起构成的协议族。尽管通常称该协议组件为 TCP/IP,但 TCP 和 IP只是其中的两种协议而已。(该协议组件的另一个名字是 Inte
7、rnet 协议族(Internet Protocol Suite)。网络接口层和应用层的目的是很显然的前者处理有关通信媒介的细节(以太网,令牌环网等),而后者处理某个特定的用户应用程序(FTP,Telnet 等)。但是,从表面上看,网络层和运输层之间的区别不那么明显。为什么要把它们划分成两个不同的层次呢?为了理解这一点,我们必须把视野从单个网络扩展到一组网络。在 80 年代,网络不断增长的原因之一是大家都意识到只有一台孤立的计算机构成的“孤岛”没有太大意义,于是就把这些孤立的系统组在一起形成网络。随着这样的发展,到了90 年代,我们又逐渐认识到这种由单个网络构成的新的更大的“岛屿”同样没有太大
8、的意义。于是,人们又把多个网络连在一起形成一个网络的网络,或称作互连网(internet)。一个互连网就是一组通过相同协议族互连在一起的网络。构造互连网最简单的方法是把两个或多个网络通过路由器进行连接。它是一种特殊的用于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太网,令牌环网,点对点的链接,FDDI(光纤分布式数据接口)等等。(下面是原书 p.4的译文)这些盒子也称作 IP 路由器(IP Routers),但我们这里使用路由器(Router)这个术语。从历史上说,这些盒子称作网关(gateways),在很多 TCP/IP 文献中都使用这个术语。现在网关这个术语只用来表示应
9、用层网关:一个连接两种不同协议组件的进程(例如,TCP/IP和 IBM 的 SNA),它为某个特定的应用程序服务(常常是电子邮件或文件传输)。图 1.3 是一个包含两个网络的互连网:一个以太网和一个令牌环网,通过一个路由器互相连接。尽管这里是两台主机通过路由器进行通信,实际上以太网中的任何主机都可以与令牌环网中的任何主机进行通信。在图 1.3 中,我们可以划分出端系统(end system)(两边的两台主机)和中间系统(intermediate system)(中间的路由器)。应用层和运输层使用端到端(end-to-end)协议。在我们的图中,只有端系统需要这两层协议。但是,网络层提供的却是逐
10、跳(hop-by-hop)协议,两个端系统和每个中间系统都要使用它。图 1.3 通过路由器连接的两个网络 在 TCP/IP 协议组件中,网络层 IP 提供的是一种不可靠的服务。也就是说,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面,TCP在不可靠的 IP 层上提供了一个可靠的运输层。为了提供这种可靠的服务,TCP 采用了超时重传,发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。从定义上看,一个路由器具有两个或多个网络接口层(因为它连接了两个或多个网络)。任何具有多个接口的系统英文都称作是多接口的 multihomed。一个主机
11、也可以有多个接口,但一般不称作路由器,除非它的功能只是单纯地把分组从一个接口传送到另一个接口。同样,路由器并不一定指那种在互连网中用来转发分组的特殊硬件盒。大多数的 TCP/IP 实现也允许一个多接口主机来担当路由器的功能,但是主机为此必须进行特殊的配置。在这种情况下,我们既可以称该系统为主机(当它运行某一应用程序时,如 FTP 或 Telnet),也可以称之为路由器(当它把分组从一个网络转发到另一个网络时)。我们在不同的场合下使用不同的术语。互连网的目标之一是在应用程序中隐藏所有的物理细节。虽然这一点在图 1.3 由两个网络组成的互连网中并不很明显,但是应用层不能关心(也不关心)一台主机是在
12、以太网上,而另一台主机是在令牌环网上,它们通过路由器进行互连。随着增加不同类型的物理网络,可能会有 20 个路由器,但应用层仍然是一样的。物理细节的隐藏使得互连网功能非常强大,也非常有用。连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网(LAN)组合在一起,这样对上层来说就好像是一个局域网。TCP/IP 倾向于使用路由器而不是网桥来连接网络,因此我们将着重介绍路由器。文献Perlman 1992的第 12 章对路由器和网桥进行了比较。1.3 TCP/IP 的分层 在 TCP/IP 协议组件中,有很多种协议。图 1.4 给出
13、了本书将要讨论的其他协议。图 1.4 TCP/IP 协议组件中不同层次的协议 TCP 和 UDP 是两种最为著名的运输层协议,二者都使用 IP 作为网络层协议。虽然 TCP 使用不可靠的 IP 服务,但它却提供一种可靠的运输层服务。本书第 17 章到第 22 章将详细讨论 TCP 的内部操作细节。然后,我们将介绍一些 TCP 的应用,如第 26 章中的 Telnet 和 Rlogin,第 27 章中的 FTP,以及第 28 章中的 SMTP 等。这些应用通常都是用户进程。UDP 为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。
14、但是与 TCP 不同的是,UDP 是不可靠的,它不能保证数据报能安全无误地到达最终目的。本书第 11 章将讨论 UDP,然后在第 14章(域名系统:Domain Name System),第 15 章(简单文件传输协议 Trivial File Transfer Protocol),以及第 16 章(引导程序协议 Bootstrap Protocol)介绍使用 UDP 的应用程序。SNMP(简单网络管理协议)也使用了 UDP 协议,但是由于它还要处理许多其他的协议,因此本书把它留到第 25 章再进行讨论。IP 是网络层上的主要协议,同时被 TCP 和 UDP 使用。TCP 和 UDP 的每组数
15、据都通过端系统和每个中间路由器中的 IP 层在互连网中进行传输。在图 1.4 中,我们给出了一个直接访问 IP 的应用程序。这是很少见的,但也是可能的。(一些较老的路由选择协议就是以这种方式来实现的。当然新的运输层协议也有可能试用这种方式。)第 3 章主要讨论 IP 协议,但是为了使内容更加有针对性,一些细节将留在后面的章节中进行讨论。第 9 章和第 10 章讨论 IP 如何进行路由选择。ICMP 是 IP 协议的附属协议。IP 层用它来与其他主机或路由器交换错误报文和其他重要信息。第 6 章对 ICMP 的有关细节进行讨论。尽管 ICMP 主要被 IP 使用,但应用程序也有可能访问它。我们将
16、分析两个流行的诊断工具,Ping 和 Traceroute(第 7 章和第 8 章),它们都使用了 ICMP。IGMP 是 Internet 组管理协议。它用来把一个 UDP 数据报多播到多个主机。我们在第12 章中描述广播(把一个 UDP 数据报发送到某个指定网络上的所有主机)和多点传送的一般特性,然后在第 13 章中对 IGMP 协议本身进行描述。ARP(地址解析协议)和 RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换 IP 层和网络接口层使用的地址。我们分别在第 4 章和第5 章对这两种协议进行分析和介绍。1.4 互连网的地址 互连网上的每个接口必
17、须有一个唯一的 Internet 地址(也称作 IP 地址)。IP 地址长 32 bit。Internet 地址并不采用平面形式的地址空间,如 1,2,3 等。IP 地址具有一定的结构,五类不同的互连网地址格式如图 1.5 所示。这些 32 位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作“点分十进制表示法”(dotted decimal notation)。例如,作者的系统就是一个 B 类地址,它表示为:140.252.13.33。区分各类地址的最简单方法是看它的第一个十进制整数。图 1.6 列出了各类地址的起止范围,其中第一个十进制整数用加黑字体表示。图 1.5
18、五类互连网地址 图 1.6 各类 IP 地址的范围 需要再次指出的是,多接口主机具有多个 IP 地址,其中每个接口都对应一个 IP 地址。由于互连网上的每个接口必须有一个唯一的 IP 地址,因此必须要有一个管理机构为接入互连网的网络分配 IP 地址。这个管理机构就是互连网络信息中心(Internet Network Information Centre)称作 InterNIC。InterNIC 只分配网络号。主机号的分配由系统管理员来负责。(下面是原书 p.8的译文)Internet 注册服务(IP 地址和 DNS 域名)过去由 NIC 来负责,其网络地址是 nic.ddn.mil。1993
19、年 4 月 1 日,InterNIC 成立。现在,NIC 只负责处理国防数据网的注册请求,所有其他的 Internet 用户注册请求均由 InterNIC 负责处理,其网址是:。事实上InterNIC有三部分组成:注册服务(),目录和数据库服务(),以及信息服务()。有关 InterNIC 的其他信息参见习题 1.8。有三类 IP 地址:单目传送地址(目标为单个主机),广播传送地址(目的端为给定网络上的所有主机),以及多目传送地址(目的端为同一组内的所有主机)。第 12 章和第 13 章将分别讨论广播传送和多目传送的更多细节。在 3.4 节中,我们在介绍 IP 路由选择以后将进一步介绍子网的概
20、念。图 3.9 给出了几个特殊的 IP 地址:主机号和网络号为全 0 或全 1。1.5 域名系统 尽管通过 IP 地址可以识别主机上的网络接口,进而访问主机,但是人们最喜欢使用的还是主机名。在 TCP/IP 领域中,域名系统(DNS)是一个分布的数据库,由它来提供 IP 地址和主机名之间的映射信息。我们在第 14 章将详细讨论 DNS。现在,我们必须理解,任何应用程序都可以调用一个标准的库函数来查看给定名字的主机的 IP 地址。类似地,系统还提供一个逆函数给定主机的 IP 地址,查看它所对应的主机名。大多数使用主机名作为参数的应用程序也可以把 IP 地址作为参数。例如,在第 4 章中当我们用
21、Telnet 进行远程登录时,我们既可以指定一个主机名,也可以指定一个 IP 地址。1.6 封装 当应用程序用 TCP 传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图 1.7 所示。TCP 传给 IP 的数据单元称作 TCP 报文段或简称为 TCP 段(TCP segment)。IP 传给网络接口层的数据单元称作 IP 数据报(IP datagram)。通过以太网传输的比特流称作帧(frame)。图 1.7 中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度。在后面的章节中我们
22、将详细讨论这些帧头的具体含义。以太网数据帧的物理特性是其长度必须在 461500 字节之间。我们将在 4.5 节遇到最小长度的数据帧,在 2.8 节中遇到最大长度的数据帧。(下面是原书 p.9的译文)所有的 Internet 标准和大多数有关 TCP/IP 的书都使用 octet 这个术语来表示字节。使用这个过分雕琢的术语是有历史原因的,因为 TCP/IP 的很多工作都是在 DEC-10 系统上进行的,但是它并不使用 8 bit 的字节。由于现在几乎所有的计算机系统都采用 8 bit 的字节,因此我们在本书中使用字节(byte)这个术语。更准确地说,图 1.7 中 IP 和网络接口层之间传送的
23、数据单元应该是分组(packet)。分组既可以是一个 IP 数据报,也可以是 IP 数据报的一个片(fragment)。我们将在 11.5 节讨论 IP 数据报分片的详细情况。UDP 数据与 TCP 数据基本一致。唯一的不同是 UDP 传给 IP 的信息单元称作 UDP 数据报(UDP datagram),而且 UDP 的首部长为 8 字节。图 1.7 数据进入协议栈时的封装过程 回想第 6 页中的图 1.4,由于 TCP,UDP,ICMP 和 IGMP 都要向 IP 传送数据,因此 IP必须在生成的 IP 首部中加入某种标识,以表明数据属于哪一层。为此,IP 在首部中存入一个长度为 8 比特
24、的数值,称作协议域。1 表示为 ICMP 协议,2 表示为 IGMP 协议,6 表示为 TCP 协议,17 表示为 UDP 协议。类似地,许多应用程序都可以使用 TCP 或 UDP 来传送数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。TCP 和 UDP 都用一个 16 bit 的端口号来表示不同的应用程序。TCP 和 UDP 把源端口号和目的端口号分别存入报文首部中。网络接口分别要发送和接收 IP,ARP 和 RARP 数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个 16 bit的帧类型域。1.7 分用(Demult
25、iplexing)当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用,图 1.8 显示了该过程是如何发生的。图 1.8 以太网数据帧的分用过程 (下面是原书 p.11的译文)为协议 ICMP 和 IGMP 定位一直是一件很棘手的事情。在图 1.4 中,我们把它们与 IP放在同一层上,那是因为事实上它们是 IP 的附属协议。但是在这里,我们又把它们放在 IP层的上面,这是因为 ICMP 和 IGMP 报文都被封装在 IP 数据报中。对于 ARP 和 RARP 我们也
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCP IP 协议
限制150内