TCP-IP协议.pdf

上传人:qwe****56 文档编号:71060297 上传时间:2023-01-31 格式:PDF 页数:113 大小:665.69KB
返回 下载 相关 举报
TCP-IP协议.pdf_第1页
第1页 / 共113页
TCP-IP协议.pdf_第2页
第2页 / 共113页
点击查看更多>>
资源描述

《TCP-IP协议.pdf》由会员分享,可在线阅读,更多相关《TCP-IP协议.pdf(113页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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 我们也

26、遇到类似的难题。在这里我们把它们放在以太网设备驱动程序的上方,这是因为它们和 IP 数据报一样,都有各自的以太网数据帧类型。但在图 2.4 中,我们又把 ARP 作为以太网设备驱动程序的一部分,放在 IP 层的下面,其原因在逻辑上是合理的。当进一步描述 TCP 的细节时,我们将看到协议确实是通过目的端口号,源 IP 地址和源端口号进行解包的。1.8 客户服务器模型 大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。我们可以将这种服务分为两种类型:重复型或并发型。重复型服务器通过以下步骤进行交互:I1.等待一个客户请求的到来。I2.处理客户

27、请求。I3.发送响应给发送请求的客户。I4.返回 I1 步骤。重复型服务器主要的问题发生在 I2 状态。在这个时候,它不能为其他客户机提供服务。相应地,并发型服务器采用以下步骤:C1.等待一个客户请求的到来 C2.启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。C3.返回 C1 步骤。并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个

28、客户同时服务。我们对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常并不能够辨别自己是与一个重复型服务器或并发型服务器进行对话。一般来说,TCP 服务器是并发的,而 UDP 服务器是重复的,但也存在一些例外。我们将在 11.12 节对 UDP 对其服务器产生的影响进行详细讨论,并在 18.11 节对 TCP 对其服务器的影响进行讨论。1.9 端口号 我们前面已经指出过,TCP 和 UDP 采用 16 比特的端口号来识别应用程序。那么这些端口号是如何选择的呢?服务器一般都是通过人们所熟知的端口号来识别的。例如,对于每个 TCP/IP 实现来说,FTP 服务器的 TCP 端口号都是

29、 21,每个 Telnet 服务器的 TCP 端口号都是 23,每个 TFTP(简单文件传输协议)服务器的 UDP 端口号都是 69。任何 TCP/IP 实现所提供的服务都用众所周知的 11023 之间的端口号。这些人们所熟知的端口号由 Internet 端口号分配机构(Internet Assigned Numbers Authority,IANA)来管理。(下面是原书 p.13的译文)到 1992 年为止,人们所熟知的端口号介于 1255 之间。2561023 之间的端口号通常都是由 Unix 系统占用,以提供一些特定的 Unix 服务也就是说,提供一些只有 Unix 系统才有的,而其他操

30、作系统可能不提供的服务。现在 IANA 管理 11023 之间所有的端口号。Internet 扩展服务与 Unix 特定服务之间的一个差别就是 Telnet 和 Rlogin。它们二者都允许我们通过计算机网络登录到其他主机上。Telnet 是采用端口号为 23 的 TCP/IP 标准且几乎可以在所有操作系统上进行实现。相反,Rlogin 最开始时只是为 Unix 系统设计的(尽管许多非Unix 系统现在也提供该服务),因此在 80 年代初,它的有名端口号为 513。客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这

31、是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。大多数 TCP/IP 实现给临时端口分配 10245000 之间的端口号。大于 5000 的端口号是为其他服务器预留的(Internet 上并不常用的服务)。我们可以在后面看见许多这样的给临时端口分配端口号的例子。(下面是原书 p.13的译文)Solaris 2.2 是一个很有名的例外。通常 TCP 和 UDP 的缺省临时端口号从 32768 开始。在 E.4节中,我们将详细描述系统管理员如何对配置选项进行修改以改变这些缺省项。大多数 Unix 系统的 file/etc/services 都包含了人们熟知的端

32、口号。为了找到 Telnet 服务器和域名系统的端口号,我们可以运行以下语句:(见原书 p.13 的)保留端口号 Unix 系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。这些端口号介于 1 到 1023 之间,一些应用程序(如有名的 Rlogin,26.2 节)将它作为客户与服务器之间身份认证的一部分。1.10 标准化过程 究竟是谁控制着 TCP/IP 协议组件,又是谁在定义新的标准以及其他类似的事情?事实上,有四个小组在负责 Internet 技术。1.Internet 协会(ISOC:Internet Society)是一个推动、支持和促进 Inter

33、net 不断增长和发展的专业组织,它把 Internet 作为全球研究通信的基础设施。2.Internet 体系结构委员会(IAB:Internet Architecture Board)是一个技术监督和协调的机构。它由国际上来自不同专业的 15 个志愿者组成,其职能是负责 Internet 标准的最后编辑和技术审核。IAB 隶属于 ISOC。3.Internet 工程专门小组(IETF:Internet Engineering Task Force)是一个面向近期标准的组织,它分为 9 个领域(应用,寻径和寻址,安全等等)。IETF 开发成为 Internet 标准的规约。为帮助 IETF

34、主席,又成立了 Internet 工程指导小组(IESG:Internet Engineering Steering Group)。4.Internet 研究专门小组主要对长远的项目进行研究。IRTF 和 IETF 都隶属于 IAB。文献Crocker 1993提供了关于 Internet 内部标准化进程更为详细的信息,同时还介绍了它的早期历史。1.11 RFC 所有关于 Internet 的正式标准都以 RFC(Request for Comment)文档出版。另外,大量的 RFC 并不是正式的标准,出版的目的只是为了提供信息。RFC 的篇幅从 1 页到 200 页不等。每一项都用一个数字来

35、标识,如 RFC 1122,数字越大说是 RFC 的内容越新。所有的 RFC 都可以通过电子邮件或用 FTP 从 Internet 上免费获取。如果发送下面这份电子邮件,你就会收到一份获取 RFC 的方法清单:To:rfc-infoISI.EDU Subject:getting rfcs help:ways_to_get_rfcs 最新的RFC索引总是搜索信息的起点。这个索引列出了RFC被替换或局部更新的时间。下面是一些重要的 RFC 文档:1.赋值 RFC(Assigned Numbers RFC)列出了所有 Internet 协议中使用的数字和常数。至本书出版时为止,最新 RFC 的编号是

36、 1340 Reynolds and Postel 1992。所有著名的 Internet端口号都列在这里。当这个 RFC 被更新时(通常每年至少更新一次),索引清单会列出 RFC 1340 被替换的时间。2.Internet 正式协议标准,目前是 RFC 1600Postel 1994。这个 RFC 描述了各种 Internet协议的标准化现状。每种协议都处于下面几种标准化状态之一:标准,草案标准,提议标准,实验标准,信息标准,和历史标准。另外,对每种协议都有一个要求的层次:必需的,建议的,可选择的,限制使用的,或者不推荐的。与赋值 RFC 一样,这个 RFC 也定期更新。请一定随时查看最新

37、版本。3.主机需求 RFC,1122 和 1123Braden 1989a,1989b。RFC 1122 针对链路层,网络层和运输层,RFC 1123 针对应用层。这两个 RFC 对早期重要的 RFC 文档作了大量的纠正和解释。如果要查看有关协议更详细的细节内容,它们通常是一个入口点。它们列出了协议中关于“必须”,“应该”,“可以”,“不应该”或者“不能”等特性及其实现细节。文献Borman 1993b提供了有关这两个 RFC 的实用内容。RFC 1127Braden 1989c对工作小组开发主机需求 RFC 过程中的讨论内容和结论进行了非正式的总结。4路由器需求 RFC,目前正式版是 RFC

38、 1009Braden and Postel 1987,但一个新版已接近完成Aknqyust 1993。它与主机需求 RFC 类似,但是只单独描述了路由器的需求。1.12 标准的简单服务 有一些标准的简单服务几乎每种实现都要提供。在本书中我们将使用其中的一些服务程序,而客户程序通常选择 Telnet。图 1.9 描述了这些服务。从该图我们可以看出,当使用 TCP和 UDP 提供相同的服务时,一般选择相同的端口号.(下面是原书 p.15的译文)如果仔细检查这些标准的简单服务以及其他标准的 TCP/IP 服务(如 Telnet,FTP,SMTP等)的端口号时,我们发现它们都是奇数。这是有历史原因的

39、,因为这些端口号都是从 NCP端口号派生出来的。(NCP,即网络控制协议,是 ARPANET 的运输层协议,是 TCP 的前身。NCP 是单工的,不是全双工的,因此每个应用程序需要两个连接,需预留一对奇数和偶数端口号。当 TCP 和 UDP 成为标准的运输层协议时,每个应用程序只需要一个端口号,因此就使用了 NCP 中的奇数。(以下是原书 p.16 图 1.9 的译文)名字 TCP 端口号 UDP 端口号 RFC 描述 echo 7 7 862 服务器返回客户发送的所有内容。discard 9 9 863 服务器丢弃客户发送的所有内容。daytime 13 13 867 服务器以可读形式返回时

40、间和日期。chargen 19 19 864 当客户发送一个数据报时,TCP 服务器发送一串连续的字符流,直到客户中断连接。UDP服务器发送一个随机长度的数据报。time 37 37 868 服务器返回一个二进制形式的 32 bit 数,表示从 UTC 时间 1900 年 1 月 1 日午夜至今的秒数。图 1.9 大多数实现都提供的标准的简单服务 1.13 互连网 在图 1.3 中,我们列举了一个由两个网络组成的互连网一个以太网和一个令牌环网。在 1.4 节和 1.9 节中,我们讨论了世界范围内的互连网Internet,以及集中分配 IP 地址的需要(InterNIC),还讨论了著名的端口号(

41、IANA)。internet 这个词第一个字母是否大写决定了它具有不同的含义。internet 意思是用一个共同的协议族把多个网络连接在一起。而 Internet 指的是世界范围内通过 TCP/IP 互相通信的所有主机集合(超过 100 万台)。Internet 是一个 internet(互连网),但 internet 不等于 Internet。1.14 实现 既成事实标准的 TCP/IP 软件实现来自于位于伯克利的加利福尼亚大学的计算机系统研究小组。从历史上看,软件是随同 4.x BSD 系统(Berkeley Software Distribution)的网络版一起发布的。它的源代码是许多

42、其他实现的基础。图 1.10 列举了各种 BSD 版本发布的时间,并标注了重要的 TCP/IP 特性。列在左边的BSD 网络版,其所有的网络源代码可以公开得到:包括协议本身以及许多应用程序和工具(如 Telnet 和 FTP)。在本书中,我们将使用“伯克利派生系统”来指 SunOS 4.x,SVR4,以及 AIX 3.2 等那些基于伯克利源代码开发的系统。这些系统有很多共同之处,经常包含相同的错误。(以下是原书 p.17 图 1.10 的译文)4.2BSD(1983)第一个广泛可用的 TCP/IP 发布 4.3BSD(1986)TCP 性能得到改善 4.3BSD Tahoe(1988)启动慢,

43、拥塞避免措施 BSD 网络软件 1.0 版(1989):Net/1 4.3BSD Reno(1990)TCP 首部预测,SLIP 首部压缩 路由表修改 BSD 网络软件 2.0 版(1991):Net/2 4.4BSD(1993)多播,长胖管道修改 4.4BSD-Lite(1994)又称为 Net/3 图 1.10 不同的 BSD 版及其重要的 TCP/IP 特性 起初关于 Internet 的很多研究现在仍然在伯克利系统中应用新的拥塞控制算法(21.7节),多目传送(12.4 节),“又长又胖的管道”修改(24.3 节),以及其他类似的研究。1.15 应用编程接口 使用 TCP/IP 协议的

44、应用程序通常采用两种应用编程接口(API):socket 和 TLI(运输层接口:Transport Layer Interface)。前者有时称作“Berkeley socket”,表明它是从伯克利版发展而来的。后者起初是由 AT&T 开发的,有时称作 XTI(X/Open 传输接口),以承认 X/Open这个自己定义标准的国际计算机生产产商所做的工作。XTI 实际上是 TLI 的一个超集。本书不是一本编程方面的书,但是偶尔会引用一些内容来说明 TCP/IP 的特性,不管大多数的 API(socket)是否提供它们。所有关于 socket 和 TLI 的编程细节请参阅文献Stevens 19

45、90。1.16 测试网络 图 1.11 是本书中所有的例子运行的测试网络。为阅读时参考方便,该图还复制在本书的封面内侧。图 1.11 本书例子运行的测试网络,所有的 IP 地址均从 140.252 开始编址。在这个图中(作者的子网),大多数的例子都运行在下面四个系统中。图中所有的 IP 地址属于 B 类地址,网络号为 140.252。所有的主机名属于.tuc.noao.edu 这个域。(noao 代表National Optical Astronomy Observatories,tuc 代表 Tucson)。例如,右下方的系统有一个完整的名字:svr4.tuc.noao.edu,其 IP 地

46、址是:140.252.13.34。每个方框上方的名称是该主机运行的操作系统。这一组系统和网络上的主机及路由器运行于不同的 TCP/IP 实现。需要指出的是,noao.edu 这个域中的网络和主机要比图 1.11 中的多得多。这里列出来的只是本书中将要用到的系统。在 3.4 节中,我们将描述这个网络所用到的子网形式,在 4.6 中我们将更介绍 sun 与 netb之间的拔号 SLIP 的有关细节。2.4 节将详细讨论 SLIP。1.17 小结 本章快速地浏览了 TCP/IP 协议族,介绍了我们在后面的章节中将要详细讨论的许多术语和协议。TCP/IP 协议族分为四层:链路层,网络层,运输层和应用层

47、,每一层各有不同的责任。在 TCP/IP 中,网络层和运输层之间的区别是最为关键的:网络层(IP)提供点到点的服务,而运输层(TCP 和 UDP)提供端到端的服务。一个互连网是网络的网络。构造互连网的共同基石是路由器,它们在 IP 层把网络连在一起。第一个字母大写的 Internet 是指分布在世界各地的大型互连网,其中包括 1 万多个网络和超过 100 万台主机。在一个互连网上,每个接口都用 IP 地址来标识,尽管用户习惯使用主机名而不是 IP 地址。域名系统为主机名和 IP 地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服务器使用众所周知的端口号,而客户使用临时设定的端口号。习

48、题 1.1 请计算最多有多少个 A 类、B 类和 C 类网络号。1.2 用匿名 FTP(见 27.3 节)从主机 nic.merit.edu 上获取文件 nsfnet/statistics/count。该文件包含在 NSFNET 网络上登记的国内和国外的网络数。画一坐标系,横坐标代表年,纵坐标代表网络总数的对数值。纵坐标的最大值是习题 1.1 的结果。如果数据显示一个明显的趋势,请估计按照当前的编址体制推算,何时会用完所有的网络地址。(3.10 节讨论解决该难题的建议。)1.3 获取一份主机需求 RFC 拷贝Braden 1989a,阅读有关应用于 TCP/IP 协议族每一层的稳健性原则。这个

49、原则的参考对象是什么?1.4 获取一份最新的赋值 RFC 拷贝。“quote of the day协议的有名端口号是什么?哪个 RFC对该协议进行了定义?1.5 如果你有一个接入 TCP/IP 互连网的主机帐号,它的主 IP 地址是多少?这台主机是否接入了 Internet?它是多接口主机吗?1.6 获取一份 RFC 1000 的拷贝,了解 RFC 这个术语从何而来。1.7 与 Internet 协会联系,isocisoc.org 或者+1 703 648 9888,了解有关加入的情况。1.8 用匿名 FTP 从主机 处获取文件 about-internic/information-about

50、-the-internic。11 2 链路层 2.1 引言 从图 1.4 我们可以看出,在 TCP/IP 协议族中,链路层主要有三个目的:(1)为 IP 模块发送和接收 IP 数据报;(2)为 ARP 模块发送 ARP 请求和接收 ARP 应答;(3)为 RARP 发送 RARP 请求和接收 RARP 应答。TCP/IP 支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网,令牌环网,FDDI(光纤分布式数据接口),RS232 串行线路等。在本章中,我们将详细讨论以太网链路层协议,两个串行接口链路层协议(SLIP和PPP),以及大多数实现都包含的环回(loopback)驱动程序。以太网

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁