组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:ouyang@china-pub.com 译者:( ) 译文发布时间:2001-12-28 版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留 本文档的翻译及版权信息。
Network Working Group T. Socolofsky Request for Comments: 1180 C. Kale Spider Systems Limited January 1991
TCP/IP指南 (RFC1180――A TCP/IP Tutorial) 本备忘录的状态 这本 RFC 是 TCP/IP 协议的指南, 重点介绍通过一个路由 器从来源主机提交一个 IP 数据包到目的地主机的步骤。 它不指定一个因特网标准。 目录 1.绪论 3 2. TCP/IP概述 3 2.1 基本结构: 3 2.2相关术语 4 2.3.数据传送 5 2.4. 两个网络接口 6 2.5.IP产生专一的逻辑网络 8 2.6.独立的物理网络 8 2.7.互相通信 8 2.8 梗概之后 8 3. 以太网 9 3.1一个类比 9 4.ARP(地址解析协议) 10 4.1.ARP地址转换表 10 4.2. 典型转化情况 10 4.3.ARP "请求/应答" 对 11 4.4. 方案继续 12 5.internet协议 13 5.1.直接的路径选择 13 5.2.间接的路径选择 14 5.3. IP模块选路原则 15 5.4 IP地址 16 5.5域名 16 5.6.路由表 17 5.7.直接路由选择细节 18 5.8.选路步骤 18 5.9.间接路由选择细节 19 5.10.间接选路步骤 20 5.11.选路小结 21 5.12.路径选择的管理 21 6.UDP(用户数据报协议) 22 6.1.端口 22 6.2.校验和 22 7.TCP(传输控制协议) 23 8.网络应用程序 23 8.1.TELNET 24 8.2 FTP 24 8.3 RSH 24 8.4 NFS 25 8.5.SNMP 25 8.6.X-WINDOW 25 9.其他信息 25 10.参考书 26 11.和其他RFC的关系 26 12.安全问题 26 13.作者的地址 27 1.绪论 这本教程仅仅包含 TCP/IP技术 的突出特点,因此它是 TCP/IP 技术的"梗概"。 它忽略了TCP/IP发展的历史以及导致它广泛使用的商业原因,并且忽略它在与ISO (国际标准化组织)的OSI(开放式系统互连参考模型 )相比的发展前景。实际上, 很多技术的信息也被忽略。它所讲述的是在 TCP/IP 环境工作的专业人员必须理解 的最少信息。 这些专业人员包括系统管理员,系统程序员,和网络管理员。 这本教程使用的例子是在UNIX TCP/IP 环境下执行的,然而主要方面能在所有 的TCP/IP环境下执行。 这本指南的目的是解释TCP/IP的基本问题而不是定义它。如果有任何问题关于 协议的详细说明,请参考定义 RFC 的实际的标准。 .下一节是 TCP/IP 的概述,然后是各个组成部分的详细描述. 2. TCP/IP概述 术语" TCP/IP "通常意味着任何与 TCP(传输控制协议) 和IP(网际协议)有 联系的东西,它包括其它的协议,应用软件,甚至网络媒介。这些协议的一个示例 是: UDP(用户数据报协议) , ARP(地址解析协议) ,和 ICMP(控制报文协议)。 这些应用的一个示例是:telnet(远程登录),ftp(文件传递协议),和 rcp 。更精确的 应该说是"因特网技术"。使用因特网技术的一个网络被称为"INTERNET(因特 网)"。 2.1 基本结构: 为了理解TCP/IP你必须理解下面的逻辑结构:
----------------------------
| network applications |
| |
|... \ | / .. \ | / ...|
| ----- ----- |
| |TCP| |UDP| |
| ----- ----- |
| \ / |
| -------- |
| | IP | |
| ----- ------- |
| |ARP| | |
| ----- | |
| \ | |
| ------ |
| |ENET| |
| ---@-- |
----------|-----------------
|
----------------------o---------
Ethernet Cable(缆线)
图1.TCP/IP的基本结构
这是TCP/IP协议的分层结构在互连网计算机上的表示,用互连网技术互相通信的每
台计算机有这样的分层结构。这样的分层结构决定了计算机在internet上互相通信的
方式。数据通过这样的分层结构从上层传到底层,然后通过网线把数据传送出去。底
层的水平线代表以太网网线,"O"代表收发器,""代表IP地址,"@"代表网址,
理解这样的分层结构式理解INTERNET技术的基础。这种分层结构贯川于这本指南的始
终。
2.2相关术语
通过一个internet传送的数据流的名字由它在协议堆栈的什么地方存在而决定。
总体上来说:如果它在一个以太网上,它被称为以太网帧;
如果它在以太网与网际协议模块之间,它就被称为一个IP包;
如果它在网际协议模块与UDP 模块之间,它被称为一个 UDP包;
如果它在网际协议模块和 TCP模块 之间,它被称为一 TCP 包(更通常
说,传输消息包);
并且如果它在网络应用程序间,它被称为应用消息包。
这些定义是不很确切的。不同的版本有不同的定义,要看更精确的定义请参
考(RFC 1122, section 1.3.3.)。
驱动程序是直接与网卡接口硬件通信的软件。应用程序模块是与驱动程序或 与网络应用软件
或另一个应用程序模块通信的软件
术语:驱动程序,应用程序模块,以太网帧,TCP包, UDP包,TCP 消息,以及
应用程序消息在此指南中经常被使用。
2.3.数据传送
让我们看看当它经过如图1所示的协议堆栈流动时的情况,当应用程序使用 TCP
(传输控制协议),数据在应用程序与TCP 模块之间传递。当应用程序使用UDP (用户
数据报协议),数据在应用程序与UDP 模块之间传递。FTP(文件传输协议)是使用 TCP
包 的典型应用。在这个例子的协议堆栈是FTP/TCP/IP/ENET。 SNMP (简单网络管理
协议)是使用 UDP 的应用。在这个例子的协议堆栈是SNMP/UDP/IP/ENET。
TCP 模块, UDP 模块,和以太网驱动程序是 n-to-1 multiplexers(多路复用
器)。作为multiplexers 它们复用许多输入到一个输出。它们也是 1-to-n
de-multiplexers(分路器),作为分路器,它们通过协议头从一个输入产生许多输出。
1 2 3 ... n 1 2 3 ... n \ | | / | \ | | / ^ \ | | / | \ | | / | ------------- flow ---------------- flow |multiplexer| of |de-multiplexer| of ------------- data ---------------- data | | | | | v | | 1 1 图 2. n-to-1 multiplexer and 1-to-n de-multiplexer 如果以太网帧离开网卡进入以太网驱动程序,包能向上传递给 ARP(地址解析协议) 模块或到IP(网间协议)模块。在以太网帧的字段属性决定了以太网帧是否被传递给 ARP 或IP模块。 如果IP报文进入IP包,它被向上传递到 TCP 或 UDP ,由在IP头的字段属性决定。 如果 UDP报文进入 UDP ,应用消息向上传递给网络应用程序,这是由UDP头的 端口值决定的。如果 TCP 消息进入 TCP ,应用消息向上传递给网络应用程序,这是 由TCP头的端口值决定的。 向下复用很容易实现因为从每一个开始点只有一条向下的路径;每个协议模块增 加它的头信息从而使包能在目的计算机上被分开。 从应用程序出来的数据通过TCP或者UDP复合到IP模块,然后被送到更低层。 尽管因特网技术支持许多网络媒介,在我们这里使用的例子都是以太网来讨论的 因为以太网是基于IP的最常见物理网络。在图1中的计算机有唯一的以太网连接。6字 节的物理地址对每一个在以太网的接口是唯一的,它们被存储在以太网驱动程序的底 层接口中。 计算机同样有4字节的IP地址,这个地址被存储在IP模块的底层,IP地址对在 internet上的每台计算机必须是唯一的。 每台计算机知道属于自己的IP地址和物理地址。 2.4. 两个网络接口 如果一台计算机和2个独立的以太网连接,它的样子如图3所示: ---------------------------- | network applications | | | |... \ | / .. \ | / ...| | ----- ----- | | |TCP| |UDP| | | ----- ----- | | \ / | | -------- | | | IP | | | ----- ------ ----- | | |ARP| | | |ARP| | | ----- | | ----- | | \ | | / | | ------ ------ | | |ENET| |ENET| | | ---@-- ---@-- | ----------|-------|--------- | | | ---o--------------------------- | Ethernet Cable 2 ---------------o---------- Ethernet Cable 1 图 3. TCP/IP Network Node on 2 Ethernets 请注意这台计算机有两个物理地址和两个IP 地址。 从图3的结构中我们发现计算机有多于一个的物理网络接口,那么IP模块就是 n_to_m复用器和m_to_n分路器的结合。
1 2 3 ... n 1 2 3 ... n
\ | | / | \ | | / ^
\ | | / | \ | | / |
------------- flow ---------------- flow
|multiplexer| of |de-multiplexer| of
------------- data ---------------- data
/ | | \ | / | | \ |
/ | | \ v / | | \ |
1 2 3 ... m 1 2 3 ... m
图 4. n-to-m 复用器 and m-to-n 分路器
从上面我们可以看出这种多路技术可以从任意的方向接收和发送数据,有一个以
上网络接口的IP模块比我们最初的把数据从一个网络送到另一个网络的例子要复杂的
多,数据可以从各个网络接口传过来也可被送向网络。
TCP UDP
\ /
\ /
--------------
| IP |
| |
| --- |
| / \ |
| / v |
--------------
/ \
/ \
data data
comes in goes out
here here
图5. IP包的发送和接收的例子
发送IP包到另一个网络的过程叫做传递IP包,一台专门用来传递IP包的计算机
计算机叫做"路由器"。
就如你从图中看到的一样,在路由器上传递的IP包不涉及TCP和UDP模块,一
些路由器执行时更本就不要TCP或UDP模块。
2.5.IP产生专一的逻辑网络
IP模块是interner技术成功的中心所在,当消息向下通过协议栈时每一个模块或
驱动程序加上自己的头到消息中去。每一个模块或驱动程序从消息中去掉相应的头当
消息沿协议栈向上传时,IP头包含了用以从许多物理网络中区分唯一的逻辑网络的IP
地址,互相连接的物理网络是internet的组成部分,这些互相联络的物理网络就构成
了internet。
2.6.独立的物理网络
IP通过网络应用程序处于网络硬件之中,如果你发明新的物理网络,你可以投入
使用只要你用新的驱动程序基于IP。因此,尽管硬件技术在变化网络应用程序仍旧是
完美无缺以及不易受攻击的。
2.7.互相通信
如果两台计算机能够互相通信,就称它们是"能互操作的"。如果internet畅通,
就称它们有"互用性"。有多方面用途计算机的用户从互连网获益因为在市场上有的
协同工作能力的计算机。一般地,当你买了一台计算机,它就能互相通信。如果计算
机没有互操作性,且互操作性不能加上,则这样地计算机就没有市场竞争力。
2.8 梗概之后
通过后面地学习,我们将回答以下问题:
当发送一个IP包,目的以太网地地址是这样知道地?
当发送IP包时,IP协议是怎样从众多地底层网络中选择的?
客户端的计算机是怎样连上服务器的?
为什么TCP和UDP要同时存在,而不只选其中一种?
网络应用程序的可用性是什么?
这些问题将依次回答。
3. 以太网
这一节是以太网技术的简短复习。
一个以太网帧包含目的地地址,源地址,属性域,和数据。
物理地址是6字节。每一个装置有它自己的物理地址和监听物理帧中的目的地址。
所有的装置用通配符"FF-FF-FF-FF-FF-FF"(十六进制)的方式监听目的地址,被
称为"广播"地址。
以太网使用CSMA/CD(带有检测冲突的载波侦听多路存取)。CSMA/CD意味着
所有装置在同一个媒介中通信,在某一个时刻只能有一个在传送数据,它们能同时
接收数据。如果2个装置在同一个传送数据,那么传送冲突被发觉,在再次发送之前
两个装置等随机(但是很短)的一段时间。
3.1一个类比
一个很好的说明以太网技术的类比:一群人在很小道很黑的屋里聊天。在这个类 比中:物理的网络媒介是空气中的声波而不是在同一根同轴电缆中的电信号 每一个人能听见其它人的说话(信号感觉),每一个人有相同的权利说话(多种 可能),但是没有人会发表长篇大论因为他们懂礼貌。如果有人不懂礼貌,他被要求 离开房间(也就是,被抛离网络)。 没有人会说话当有人说话时,但是当两个人同时开始说话 ,他们会立即知道因为 他们听到一些他们自己没有说过的话(冲突检出)。当两个人意识到时,他们等一会, 然后一人开始说话。另一个在开始自己的说话之前听着别人说一直等着第一个人说完。 每一个人有唯一的名字(唯一的物理地址)以避免混乱。某一个时间一人说话, 他会先通知他将要交谈的人以及自己的名字(以太网目的地址,源地址,分别的), 也就是:"Hello,this is jack,..blah blah blah..",如果他想和所有的人交谈, 他会说"everyone"(广播地址),也就是说:" hello,everyone,this is jack, ..blah blah blah.."。 4.ARP(地址解析协议) 当发送一个IP包,目的以太网的地址是怎么知道的呢? ARP(地址解析协议)用来把IP 地址翻译成物理地址。这种翻译只是在发送IP 包时,因为这时需要产生IP头和以太网头地址。 4.1.ARP地址转换表 翻译通过查表进行,这表,叫作ARP地址转换表,放在存储器里,包含每一台 计算机的信息。其中有一列是IP地址,一列是物理地址。当要把IP地址翻译成物理 地址时,计算机从表中搜索IP地址。 下面是一个简单的ARP地址转换表: ------------------------------------ |IP address Ethernet address | ------------------------------------ |223.1.2.1 08-00-39-00-2F-C3| |223.1.2.3 08-00-5A-21-A7-22| |223.1.2.4 08-00-10-99-AC-54| ------------------------------------ 表 1. Example ARP Table 人们的习惯是当写出4字节的IP地址时每一字节用十进制且用句点把每一字节 分开。当写出6字节的物理地址时,习惯上是每一字节用十六进制且用冒号或负号 把每一字节分开。 ARP地址转换协议是必须的因为IP地址和物理地址是互不相干的,你不可能用 一种算法把IP地址翻译成物理地址。IP地址是由网络管理员基于internet而选择的, 当计算机internet的另外一个地方,那么它的IP地址也随之改变了。物理地址是由制 造商基于以太网地址空间而决定的,当物理硬件接口改变了,它的物理地址也随之改 变了。 4.2. 典型转化情况 当正常运行一个网络应用程序,比如:TELNET,发送一个应用程序消息给TCP, 然后TCP发送相应的TCP消息给IP模块,从而目的IP地址就被应用程序
TCP模块`IP模块
知道,这时IP包被建立然后准备传给以太网驱动程序,但是在这之前必须知道物理地
址,而ARP地址转换表就是用来找到物理地址的。
4.3.ARP "请求/应答" 对
但是ARP地址转换表最初是怎样建立的呢?回答是它是由ARP自动根据"必须"的原
则 建立的。
当ARP地址转换表不能翻译地址时,会发生下面两件事:
1.一个携带物理地址的ARP请求包被发送向网络上的每一台计算机。
2.发出的IP包排队等待。
每一台计算机的物理接口收到广播的物理帧。每一个以太网驱动程序检查物理帧
的属性域然后传递ARP包给ARP模块。 ARP请求包的意思是:"如果你的IP地址和目
标IP地址一样,那么请你告诉我你的物理地址。"一个ARP请求包的结构是这样的:
---------------------------------------
|Sender IP Address 223.1.2.1 |
|Sender Enet Address 08-00-39-00-2F-C3|
---------------------------------------
|Target IP Address 223.1.2.2 |
|Target Enet Address
----------------------------------------
|address source destination|
----------------------------------------
|IP header A E |
|Ethernet header A D |
----------------------------------------
表 6.IP包的物理帧中的地址表示
(从A到E(D之前))
D的IP模块收到IP包然后向上解析目的IP地址,发现:"这不是我的IP地址,"就
直接把IP包传递给了E。
----------------------------------------
|address source destination|
----------------------------------------
|IP header A E |
|Ethernet header D E |
----------------------------------------
表 7. IP包的物理帧中的地址表示
(从A到E(D之后))
一言以蔽之,对于直接通信,源IP地址和源物理地址都是发送者的,目的IP
地址和目的物理地址都是接收者的。对于间接通信,IP地址和物理地址不是这样的 。
这个例子是简化的。实际的网络是由许多的因素,比如许多的路由器和各种
各样的物理网络所组成。象例子一样的网络是有可能存在的因为有时网络管理员想
把一个大的以太网分开为了防止以太网的广播风暴。
5.3. IP模块选路原则
这一节的梗概只讲如何选路而不讲为什么。现在让我们来看一看IP模块
的选路原则或者说是算法吧。
对于一个要发的IP包,从上层进入IP,IP模块必须决定是直接选路还是间接
选路,然后IP模块要选择一个低层的网络接口。这些选择是通过咨询路由表后
作出的。
对于一个进来的IP包,从低层接口进入IP模块,IP模块必须决定是继续转发
还是把IP包往上层传递。如果IP包继续转发,则它被视为一个要发的IP包。
当一个进来的IP包到达则它不在同一个网络接口内继续传递。
这些决定是在IP包被送到低层接口以前作出的,也在ARP表被调用之前。
5.4 IP地址
网络管理员根据计算机隶属于什么IP网络分配给每一台计算机一个IP地址。
4字节中的一部分是网络号,其余部分是主机号。对于表1的计算机有IP地址为:
223.1.2.1,其中网络号为:223.1.2,主机号是1。
地址的一部分用作网络号,主机号是由4字节地址的上面的比特决定的。
在这本指南用的例子里的IP地址是类型C,意思是上3比特说明21比特是网络
号和8比特是主机号。这样就允许有2097152个类型C 的网络,每个网络可以
有254台主机。
IP地址空间是由NIC(网络信息中心)管理的。所有连到万维网的的局域
网都必须使用NIC分配的网络号。如果你建立了你自己的网络且你不准备连上
因特网,你仍然要从NIC那儿获得你的网络号。如果你坚持用你自己的号,那
么你冒着混乱的危险,当你连上另一个网时会使一些不可预料的事情发生。
5.5域名
人们习惯用名字识别计算机,而不是数字。一台名叫"alpha"的计算机可能
有IP地址:223.1.2.1。对于一些小的网络,这种"名字到IP地址"的信息经常保
存在每一台计算机的叫"hosts"文件里。对于一些大的网络,这种对应关系保存在
服务器上当需要时通过网络来访问。这种文件的其中几行可能是这样的:
223.1.2.1 alpha
223.1.2.2 beta
223.1.2.3 gamma
223.1.2.4 delta
223.1.3.2 epsilon
223.1.4.2 iota
IP地址在第一列,计算机名字在第二列。
大多数情况下,你可以保存同样的"hosts"文件在所有的计算机上。你可能
注意到了"delta"只有一个条目尽管它有3 个IP地址。因此Delta能够用3个中的
任意一个IP地址登录,用哪一个是没有关系的。当Delta 收到一个IP包并检查它
的目的地址,它会认可3个中的任意一个IP地址。
IP网络同样有自己的名字,如果你有3个IP网络,你的用以存储这些名字的
"network"文件会是下面的样子:
223.1.2 development
223.1.3 accounting
223.1.4 factory
网络号在第一列,对应的名字在第二列。
从这个例子中你可能已经发现了计算机"alpha"是网络"development"上的
1号计算机,beta是2号计算机诸如此类。你同样可以说"alpha"是"developme
nt.1",beta是 "development.2"诸如此类。
对用户来说上述的hosts文件就已经足够了,但是网络管理员可能用下面的
行代表delta:
223.1.2.4 devnetrouter delta
223.1.3.1 facnetrouter
223.1.4.1 accnetrouter
hosts文件中的这些新3行给出了每一个delta的 IP地址和一个有意义的名。事实
上第一个IP地址的两个名字:"delta"和"devnetrouter"是同义字。在实践中,"delta"
代表计算机多种用途的名字,其他三个名字只是在管理IP路由表时会用到。
这些文件用于网络管理,网络应用程序给出了一个有意义的名字。其实在操纵int
ernet时他们是不需要的,但是他们给我们带来了方便。
5.6.路由表
IP模块是怎样知道用哪一个网络接口当发送IP包时?IP模块用从目的IP地址提取
出来IP网络号作为索引字查询路由表。
路由表的每一条路线包含在一行中。路由表的第一列是:IP网络号,直接路径选择
/间接路径选择标记,路由器的IP地址,接口号。每一个IP包传递时都要用到这张表。
在大多数计算机上路由表可以用"route"命令。路由表的内容是由网络管理员定
义的,因为是网络管理员分配IP地址给计算机。
5.7.直接路由选择细节
为了解释这个问题,让我们来看一看路由选择的位置(前面我们已经学过):
--------- ---------
| alpha | | beta |
| 1 | | 1 |
--------- ---------
| |
--------o---------------o-
Ethernet 1
IP network "development"
图8. Close-up View of One IP Network
在alpha内的路由表可能是这样的:
--------------------------------------------------------------
|network direct/indirect flag router interface number|
--------------------------------------------------------------
|development direct
--------- --------- ---------
| alpha | | delta | |epsilon|
| 1 | |1 2 3| | 1 |
--------- --------- ---------
| | | | |
--------o---------------o- | -o----------------o--------
Ethernet 1 | Ethernet 2
IP network "Development" | IP network "accounting"
|
| --------
| | iota |
| | 1 |
| --------
| |
--o--------o--------
Ethernet 3
IP network "factory"
图 9. Close-up View of Three IP Networks
在alpha中的路由表是这样的:
---------------------------------------------------------------------
|network direct/indirect flag router interface number|
---------------------------------------------------------------------
|development direct
RFC1180――A TCP/IP Tutorial TCP/IP指南
4 RFC文档中文翻译计划
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8