1.2.1 TCP/IP网络入门
分类: LINUX
2012-12-09 22:41:41
第一部分 Linux网络管理员指南 Olaf Kirch 著
第1章 网络基础
自 世 上 出 现 “ 电 信 ” 或 “ 远 程 通 信 ” 技 术 那 一 天 起 ,“ 连 网 ”( N e t w o r k i n g ) 的 概 念 恐 怕 便已产生了。想想生活在石器时代的人,若相距较远,那么可通过鼓声,相互间传递消息。 现在,假定穴居人 A想邀请穴居人 B参加投掷石块的游戏。但是,他们离得实在太远了,以至 于 B 听不到 A 的 鼓 声 。 那 么 , 穴 居 人 A 该 采 取 何 种 对 策 呢 ? 他 面 临 着 三 种 选 择 : 1 )步行到 B 处; 2 ) 做一只更大的鼓; 3 )请求住在 A 和 B 之间的穴居人 C, 帮 助 转 发 消 息 。 最 后 一 种 选 择 便 叫 做
“连网”! 当然,人类进化到今天,我们再也不会使用老祖宗那些简陋的工具。今天,我们有了计
算机,它们通过电缆、光纤、微波以及其他媒介,相互间可以“交谈”。相距遥远的人,可使 用计算机,约定在星期六玩一场足球比赛。后面,我们将探讨达成这一目标的途径及方式。 但是,不打算涉及通信线缆的问题。当然,足球比赛也请暂时抛在一边吧!
在 此 , 有 两 种 类 型 的 网 络 是 我 们 感 兴 趣 的 : 以 U U C P 为 基 础 的 网 络 , 以 及 以 T C P / I P 为基础 的网络。 U U C P 和 T C P / I P 均 属 于 “ 协 议 套 件 ” 或 者 “ 软 件 包 ” 的 类 别 , 它 们 提 供 了 在 两 台 计 算机之间传输数据的途径。在本章,我们打算来看看这两种类型的网络,并讨论它们的基本 原理。
我 们 将 “ 网 络 ”( N e t w o r k ) 定 义 成 一 系 列 “ 主 机 ”( H o s t ) 的 集 合 , 不 同 主 机 相 互 间 能 够 通 信 。 通 常 , 这 种 通 信 要 依 赖 某 些 “ 专 用 主 机 ” 或 “ 服 务 器 ”( S e r v e r ), 在 参 与 通 信 的 两 部 主 机 之 间 , 对 数 据 进 行 转 发 或 “ 中 继 ”( R e l a y )。 当 然 , 最 常 见 的 主 机 便 是 计 算 机 , 但 也 并 不 全 是。例如, X终端或智能打印机也属于主机的一种类型。小范围内的主机集合亦称作“站点”
( S i t e )。 无论人还是主机,相互间想实现通信,不采用某种形式的语言或代码,那是根本不可能
的 。 在 计 算 机 网 络 中 , 这 些 语 言 统 称 为 “ 协 议 ”( P r o t o c o l )。 但 是 , 不 要 把 它 们 想 象 成 书 写 的 那种“协议”。相反,它们实际是一些高度规范化的代码,严格约束着通信双方的行为。用最 简单的话来说,计算机网络中采用的协议就是一系列非常严格的规则,规定着两个或更多主 机相互间如何交换消息。
1.1 UUCP网络
U U C P 是“ U n i x 到 U n i x 拷贝”( U n i x - t o - U n i x C o p y ) 的 简 称 。 开 始 时 , 它 以 一 个 软 件 包 的 形式出现,通过串行线路传输文件,对文件传输进行安排和调度,并发起程序在远程站点的 执行。自 7 0 年 代 末 首 次 问 世 以 来 , 尽 管 它 在 许 多 方 面 发 生 了 重 大 变 化 , 但 就 其 提 供 的 服 务 来 说,却变化不大。它仍然主要应用于广域网( WA N)环境。在这种环境中,主机的连接要通 过拨号电话线路来进行。
件 ( 补 丁 文 件 )。今天, U U C P 已 经 不 再 局 限 在 那 样 的 环 境 内 。 在 这 个 网 络 内 , 目 前 运 行 着 各式各样的平台,比如 A m i g a O S ,D O S , A t a r i的 T O S 等 等 。 它 们 有 的 提 供 免 费 服 务 , 有 的 则 提供商业服务。
U U C P 网络最大一个缺点便是带宽较低。一方面,电话设备紧紧限死了最大的传输速度; 另一方面, U U C P中 极 少 存 在 永 久 性 的 连 接 。 相 反 , 各 主 机 以 固 定 的 周 期 , 通 过 拨 号 方 式 建 立 与对方的连接。所以大多数时候,邮件消息往往不能一下子送至目的地;而是先躺在某个主 机的硬盘里,等待下一次连接建立的时候再发送出去。
尽管存在这些限制,目前世界上仍运行着为数众多的 U U C P 网络。它们主要由一些业余人员 负责维护,有时收取低廉的价格,让私人用户接入网络。 U U C P 之 所 以 仍 然 受 到 某 些 人 的 青 睐 , 主 要 原 因 便 是 和 通 过 专 线 永 久 性 接 入 I n t e r n e t相 比 , 它 需 要 的 费 用 便 宜 得 多 。 要 想 使 您 的 计 算 机 成为 U U C P 的一个节点,需要的全部家当只有一部 M o d e m、一个适合 U U C P 运行的软硬件环境以 及另外一个UUCP节点(愿意为你提供邮件和新闻转发服务,亦即你的“上游节点”)。
U U C P 的工作方式非常简单。从它的名字( U n i x 到 U n i x 拷 贝 ) 便 可 知 道 , 它 主 要 负 责 将 文 件从一个主机拷贝(复制)到另一个主机。但除此以外,它还允许在远程主机上采取一些特 定的行动。
假定你的机器有权访问一个名为 S w i m的主机,现在想让它为自己执行 l p r 这 条 打 印 命 令 。 如何做到呢?可在自己的命令行键入下述命令,让这本书在 S w i m 机器上打印出来:
$ uux -r swim!lpr !netguide.dvi
这 样 一 来 , 便 可 指 示 u u x(来自 U U C P 套 件 的 一 个 命 令 ) 为 S w i m 安 排 一 项 作 业 。 在 这 个 作 业中,包括一个输入文件,名为 n e t g u i d e . d v i;另外,还包括将该文件送给 l p r的请求。其中, - r 参数告诉 u u x不 要 马 上 呼 叫 远 程 系 统 , 而 是 将 这 个 作 业 暂 存 下 来 , 等 稍 后 建 立 了 一 次 连 接 再 说 。 这 个 过 程 称 作 “ 缓 冲 ”( S p o o l i n g )。
U U C P 的另一个特点便是允许经由几个主机,对作业及文件进行转发,只要各主机相互间 能 够 协 作 。 现 在 , 假 定 上 例 的 主 机 S w i m 建立了与 G r o u c h o的一条 U U C P 链 路 , 后 者 维 护 着 一 个 大型的应用程序档案库。那么,为了将文件 t r i p w i r e - 1 . 0 . t a r. g z下载到自己的站点,需执行下述 命令:
$ u u c p - m r s w i m ! g r o u c h o ! ~ / s e c u r i t y / t r i p w i r e - 1 . 0 . t a r. g z t r i p . t g z
创建的这个作业会请求 S w i m 帮自己从 G r o u c h o 处 取 得 文 件 , 并 将 其 发 至 自 己 的 站 点 。 在 自己的站点, U U C P 会将文件保存为 t r i p . t g z , 并 发 一 封 电 子 邮 件 , 通 知 文 件 已 经 到 达 。 整 个 过 程分三步走:第一步,从自己的站点将作业发给 S w i m。第二步,在 S w i m 处 , 下 一 步 请 求 建 立 同 G r o u c h o 主机的连接,并从它那里下载回指定的文件。最后一步是将文件从 S w i m实 际 传 回 自己的主机(站点)。
对U U C P 网 络 来 说 , 目 前 它 提 供 的 最 重 要 的 一 种 服 务 便 是 电 子 邮 件 和 新 闻 。 以 后 , 我 们 还 会讲述这方面的问题。在这里,仅对它们进行一番简要的介绍。
将 邮 件 正 文 和 接 收 方 的 地 址 传 递 给 它 。 随 后 , r m a i l会 将 邮 件 转 发 至 另 一 个 主 机 … … 以 此 类 推 , 直到最后抵达目标主机。在本书第 1 2 章 , 还 会 对 此 详 述 。
至于“新闻”(News),可想像成一种分布式的电子公告板系统。通常说到“新闻”的时候, 是指通过 U s e n e t新闻组发布的新闻,它目前是应用得最广的新闻交换网络,总共有大约 1 2万个 成员站点。 U s e n e t 的起源可追溯到 1 9 7 9 年。当时,与新出的 U n i x - V 7一道发布了 U U C P 之后,三 位应届毕业生产生了一个想法,打算在 U n i x社 区 中 实 现 常 规 的 信 息 交 换 。 他 们 设 计 了 一 些 脚 本 , 形成了世界上第一个网络新闻系统的雏形。 1 9 8 0 年 , 这 个 网 络 在 北 卡 州 的 两 所 大 学 里 , 成 功 地 联通了 D u k e , U N C 和 P H S 等大学,同时连通了北加州的两家大学。以此为基础, U s e n e t 逐渐发 展壮大。尽管它起源于UUCP网络,但现在已跨越了多种形式的网络,并不单单UUCP一种。
在 U s e n e t 中 , 最 基 本 的 信 息 单 元 便 是 “ 文 章 ” 或 者 “ 帖 子 ”。 所 有 文 章 都 要 投 递 到 与 主 题 对应的新闻组内。按主题分类,各个新闻组构成了一个层次分明的结构。由于每天发布的帖 子数量众多,大多数站点(亦称“新闻组服务器”)只接收自己选择的一部分新闻组。即便这 样,每天平均也会增加近 6 0 M B 的新帖子。
在 U U C P 世 界 中 , 通 常 先 从 要 求 的 新 闻 组 中 收 集 好 所 有 文 章 , 然 后 通 过 一 条 U U C P 链路发 送出去。如果数量较大,一次传不完,便打包后,分成数次传输。打包(压缩)的新闻送至 接收站点,由它们执行 r n e w s 命 令 , 进 行 解 包 和 其 他 处 理 。
最后, U U C P 也 是 许 多 通 过 拨 号 连 接 的 文 件 下 载 站 点 的 一 种 传 输 媒 介 。 这 些 站 点 通 常 允 许 公共访问,让人们免费下载需要的文件或软件。通常要通过 U U C P 拨 入 这 些 站 点 , 以 一 名 “ 访 客”( G u e s t ) 的 身 份 登 录 , 然 后 从 公 开 的 档 案 区 下 载 需 要 的 文 件 。 这 些 G u e s t 账 号 通 常 以 g u e s t 或 a n o n y m o u s (匿名)作为登录用户名,然后用 u u c p / n u u c p 或类似的信息作为登录密码使用。
1.2 TCP/IP网络
尽管 U U C P 特 别 适 合 希 望 以 低 廉 费 用 建 立 拨 号 网 络 连 接 的 用 户 , 但 在 其 他 许 多 情 况 下 , 这 种“存储转发”技术也显得非常不灵活。比如在局域网中,数量不多的机器位于同一幢建筑 物中,甚至位于同一层楼、同一个房间里。这些机器相互连接在一起,营造一个能够协同工 作的环境。在这种情况下,我们需要在不同的主机间共享文件,或者在不同的机器上运行分 布式的应用程序。
所有这些任务都要求以一种全然不同的方式来建立网络连接。此时,不再是将整个文件 都“存储”起来,同时为其赋予一个作业说明,而是将所有数据都分割为较小的数据包
( P a c k e t ), 立 即 转 发 至 目 标 主 机 。 抵 达 目 标 主 机 后 , 再 在 那 里 重 新 “ 组 装 ” 回 原 来 的 样 子 。 这种类型的网络叫作“包交换”网络。它的最基本的一个应用便是通过网络运行分布式的应 用 ( 程 序 )。 当 然 , 这 样 做 的 代 价 会 比 U U C P 高 出 许 多 — 这 主 要 反 映 在 软 件 和 协 议 的 复 杂 程 度上。
目前,许多系统(包括非 L i n u x 站点)选择的协议都是 T C P / I P。 在 这 一 节 里 , 我 们 打 算 就 其基本概念作一番论述。
1.2.1 TCP/IP网络入门
成,网络正式投入运行。
1 9 8 3年,新协议套件 T C P / I P 被 接 纳 为 正 式 标 准 , 网 络 上 的 所 有 主 机 都 必 须 使 用 它 。 当 这
个 阿 帕 网 最 终 进 化 成 I n t e r n e t 后 ( 阿 帕 网 于 1 9 9 0 年 正 式 退 出 历 史 舞 台 ), T C P / I P 的 应 用 范 围 已 不仅仅在 I n t e r n e t 之内。它最引人瞩目的应用是在局域网中;但随着快速数字电话设备比如
为便于下文对 T C P / I P 的讨论,我们在此打算以位于芬兰某地的 G r o u c h o M a r x 大学(G M U ) 为 例 。 在 这 所 大 学 中 , 大 多 数 系 都 运 行 有 自 己 的 局 域 网 ( L A N )。 一 些 系 和 别 的 系 共 享 一 个 网 络,另一些系则同时运行着几个网络。所有网络相互间都是连接起来的(互联)。整个校园网 通过一条高速链路,接入 I n t e r n e t 。
假定我们的机器挂接的是数学系的 L A N,名字叫做 E r d o s 。要想访问物理系中名为 Q u a r k 的一个主机,需要执行下述命令:
$ rlogin quark.physics
Welcome to the Physics Department at GMU (ttyq2) login:
在提示行,需要输入自己的登录名: A n d r e s ,以及正确的密码。随后,便可获得在 Q u a r k 机器上的一个外壳,可在其中键入任何命令,就像自己亲身坐在那个系统的控制台前一样。 退出这个外壳后,便可返回自己机器(本机)的提示行。
刚才,我们已试验了由 T C P / I P 提 供 的 一 种 实 时 的 交 互 式 应 用 : 远 程 登 录 !
登录进 Q u a r k 的 时 候 , 有 时 也 想 运 行 一 个 以 X 1 1 为 基 础 的 应 用 , 比 如 一 个 函 数 演 算 程 序 , 或者一个 P o s t S c r i p t格 式 预 览 程 序 。 要 想 告 诉 应 用 程 序 你 希 望 将 它 的 窗 口 显 示 在 自 己 主 机 的 屏 幕上,必须设置 D I S P L A Y 环境变量:
$ export DISP L A Y = e r d o s . m a t h s : 0 . 0
如果现在启动程序,它便会同你的 X服务器联系,而不是同 Q u a r k 的 服 务 器 联 系 , 并 将 所 有窗口都显示在自己的屏幕上。当然,这要求你在 E r d o s 机器上运行 X 1 1 。这里的关键在于, T C P / I P 协议允许 Q u a r k 和 E r d o s 两部主机来回传送 X 11 数 据 包 , 从 而 营 造 在 单 个 系 统 上 运 行 的
“假象”。此时的网络永远是“透明”的。
在 T C P / I P 网 络 中 , 另 一 个 非 常 重 要 的 应 用 是 N F S , 亦 即 “ 网 络 文 件 系 统 ”( N e t w o r k F i l e
S y s t e m )。 它 是 让 网 络 “ 透 明 ” 的 另 一 种 形 式 。 N F S 主 要 用 来 让 我 们 “ 复 制 ” 其 他 主 机 的 目 录 结 构 , 令 其 看 起 来 就 像 本 机 的 文 件 系 统 。 举 个 例 子 来 说 , 所 有 用 户 的 “ 主 目 录 ”( H o m e D i r e c t o r y )都可存放在一台中心服务器中。从这台机器,局域网内的所有主机都复制它的目 录。这样一来,用户实际可登录进入网内的任何一台机器,并发现自己处在一模一样的主目 录 中 。 类 似 地 , 可 将 那 些 要 求 占 用 大 量 磁 盘 空 间 的 应 用 程 序 ( 如 Te X) 安 装 到 一 台 机 器 , 然 后 将它的目录导出至其他机器。到本书第 1 0 章,我们还会对 N F S 进 行 详 细 论 述 。
当然,这些仅仅是通过 T C P / I P 网 络 能 够 做 到 的 一 些 事 情 的 例 子 。 事 实 上 , 用 它 能 做 到 的 事情几乎是无限的。
接下来,我们打算就 T C P / I P 的 工 作 原 理 做 一 番 详 细 探 讨 。 只 有 掌 握 了 这 方 面 的 知 识 , 才 能对自己机器的配置方法做到心中有数。首先从硬件开始,再从它慢慢地延伸开去。
1.2.2 以太网
机通过接头、分路器或者收发器加以连接。简单以太网的安装费用十分低廉,最常见的传输速 度是10Mbps(每秒10兆位,而非10兆字节),但也有逐步向100Mbps(百兆网)过渡的趋势。
以太网可划分为三种实施形式。根据采用的电缆规格,可分别称为粗缆、细缆以及双绞 线网络。其中,细缆和粗缆以太网使用的都是同轴电缆,只是线缆粗细以及与主机的连接方 式有所区别。细缆采用的是 B N C 接头,俗称 T头 , 需 要 “ 拧 ” 入 计 算 机 背 后 的 一 个 圆 柱 形 接 头
(做在网卡上)。粗缆要求在线缆上打一个小孔,然后用一个“ Vampire Tap”连接一个收发器。 随后,一个或多个主机建立与这个收发器的连接。细缆和粗缆以太网电缆分别最多可以长达
2 0 0 和 5 0 0 米,所以也叫做 1 0 B a s e - 2 和 1 0 B a s e - 5 网 络 。 双 绞 线 电 缆 则 由 两 个 铜 芯 线 对 绕 合 而 成 , 类似于普通的电话线。但是,它通常要求新增额外的硬件。人们也把它叫做 1 0 B a s e - T 网络, 其中的“T”代表Twisted pair(双绞线)。
尽管在粗缆以太网中增加一个主机显得比较麻烦,但在增加主机的同时,不会造成网络 的中断。而要想在细缆网络中新增一个主机,则必须让网络服务暂停几分钟,因为必须对线 缆进行处理(通常需要割断),插入新的接头。
大多数人都愿意选择细缆连接,因其造价相当低廉:一张网卡最多 1 0 0 元 人 民 币 , 线 缆 每 米1 ~ 3 元 , 其 他 便 不 再 需 要 任 何 费 用 。 但 是 , 假 如 网 络 的 规 模 较 大 , 粗 缆 以 太 网 就 显 得 更 为 恰 当。例如, G M U 大 学 数 学 系 的 以 太 网 采 用 的 便 是 粗 缆 连 接 , 所 以 每 次 有 一 个 主 机 加 入 网 络 时 , 不会造成整个网络的中断。
以太网技术的一个缺陷是电缆长度(布线长度)有限,所以只适用于 L A N 的建设。但是, 利用转发器、网桥或路由器,几个独立的以太网网段也可以相互连接到一起。其中,转发器 ( R e p e a t e r) 的 作 用 最 简 单 , 只 是 在 两 个 或 更 多 的 网 段 之 间 复 制 信 号 , 使 各 个 网 段 表 面 上 似 乎
合并成了一个统一的以太网。 以太网工作起来就像一个总线系统,其中的一个主机可将单位长度多达 1 5 0 0字节的数据
包(或“帧”)发给同一以太网内的另一个主机。每个主机都分配有一个 6字节的地址,这种 地址需要固化到网卡内部,但也可以通过专门的软件更改。通常,我们用两位十六进制数字 的一个序列来表达这种地址,每对数字之间用冒号分隔,例如 a a : b b : c c : d d : e e : f f 。
由一个主机发出的数据包可被网内其他所有主机“看到”。但是,只有目标主机才能实际 地接收并处理它。假如两个主机同时试图发送数据,便会发生“冲突”。解决这种冲突的办法 便是两个主机都取消这一次发送,各自等待随机的一小段时间,再进行发送数据包的尝试。
1.2.3 其他类型的硬件
在规格较大的网络中,比如像前例提到的 G M U 大 学 校 园 网 , 以 太 网 通 常 并 非 唯 一 的 一 种 网络硬件安装方式。在 G M U 大学,各个系的 L A N 都 同 校 园 干 线 连 接 , 后 者 是 一 条 光 纤 线 缆 , 运 行 的 是 F D D I ( 光 纤 分 布 数 据 接 口 )。 F D D I 采 用 一 种 全 然 不 同 的 形 式 来 实 现 数 据 的 传 送 。 其 基本原理是发送大量“令牌”,令其在整个网络内循环。只有某个主机拿到了一个令牌,才有 权 将 数 据 送 入 网 络 ( 随 那 个 令 牌 一 道 )。 F D D I 的 主 要 优 点 在 于 , 它 可 达 到 很 高 的 数 据 传 输 速 度,通常 1 0 0 M b p s 是没有问题的,而且布线长度可以高达 2 0 0 公里。
一 种 特 殊 的 硬 件 , 名 为 P A D , 亦 即 “ 包 汇 编 / 反 汇 编 器 ”( P a c k e t A s s e m b l e r / D i s a s s e m b l e r )。 X . 2 5 定义了一系列网络协议,由自己专用,但通常也用于连接运行 T C P / I P和 其 他 协 议 的 网 络 。 由于 I P 包 不 能 直 接 映 射 ( 转 换 ) 为 X . 2 5 格 式 ( 反 之 亦 然 ), 所 以 其 他 协 议 的 数 据 包 只 是 简 单 地 封装在 X . 2 5 包 里 面 , 再 通 过 网 络 传 输 。
通常,无线电爱好者利用自己的专门设备将计算机连成网络;这种技术称为“包无线电”, 或称“火腿无线电”。这些爱好者理所当然也叫做“火腿一族”。火腿无线电使用的协议叫做 A X . 2 5 ,自 X . 2 5 衍生而来。
另一种技术需要使用速度较慢、但价格便宜的串行线路,用于拨号访问。这要求另一种 协议来进行数据包的传送,比如 S L I P 或 P P P ,后文还会详细讲述。
1.2.4 网际协议
当然,我们的网络连接并不仅仅限于一个以太网。在最理想的情况下,我们希望能任意 使用一个网络,无论它运行于什么硬件形式之上,也无论它由多少个子网组成。比如,在像 G M U 校园网这样规模较大的网络中,通常包含了数量众多的独立以太网,它们需要以某种形 式,相互连接到一起。在 G M U 大 学 , 数 学 系 运 行 着 两 个 以 太 网 。 其 中 一 个 网 络 包 含 的 都 是 快 速机器,由教授和研究生使用;另一个网络的机器速度较慢,由学生平时上机使用。两个网 络都同时接入 F D D I 校园干线。
这种连接是由一个专用主机控制的,名为“网关”。网关的作用是在两个以太网和光纤线 缆之间,通过复制数据包的方式,对数据包的接收和发送进行处理。举个例子来说,如果你 在数学系,想访问物理系的局域网上 Q u a r k ,然而连网软件不能直接向 Q u a r k发送数据包,因 为它们不在同一个以太网上。因此必须依靠网关来“转发”数据包。然后,网关(命名为
S o p h u s ) 再 把 数 据 包 转 发 到 物 理 系 的 、 它 的 同 级 网 关 N i e l s ,由 N i e l s 把 数 据 包 转 发 到 目 标 主 机。
直接将数据导向远程主机的方法称作“路由”,数据包常常被称作“数据报”。为使一切 简单化,数据报交换由一个独立的、与所用硬件无关的协议进行管理。这个协议就是 I P ,或 者 说 “ 网 际 协 议 ”。我们将在第 2 章,就 I P 和路由进行全面论述。
I P 的主要好处是:从物理上把不同的网络变成了同一个网络。这就是“联网”技术,而 这 种 “ 变 形 网 ” 也 就 是 i n t e r n e t ( 网 间 网 )。 注 意 , i n t e r n e t 和 I n t e r n e t 之 间 , 有 明 显 的 区 别 。 后 者是一个特定的、官方命名的全球化“网间网”。
当然, I P 同时还需要一个与硬件无关的定址方案。也就是每台主机对应一个独一无二的
3 2 位 数 , 这 个 数 便 是 该 主 机 的 I P 地址。 I P 地 址 通 常 用 “ 点 分 四 段 ” 的 格 式 来 表 示 , 每 一 段 以 十 进 制 表 示 其 四 字 节 中 的 一 个 字 节 , 段 间 用 句 点 分 隔 开 。 比 如 , Q u a r k 可能有“ 0 x 9 5 4 C 0 C 0 4 ” 这样的一个 I P 地址,它对应的是 1 4 9 . 7 6 . 1 2 . 4 ,前三个字节由 I n t e r N I C 注 册 服 务 中 心 分 配 , 标 识 主机接入的网络,剩下的字节用来标识该主机本身。
我们不打算在此深入下去,因为第 2 章为大家准备了丰富的 I P 大 餐 。 目 前 , 大 家 只 需 记 住 的 一 点 是 : 寻 找 地 址 的 过 程 叫 做 “ 主 机 名 解 析 ”( 即 把 主 机 名 映 射 成 I P 地 址 ) 和 “ 地 址 解 析 ”
(把 I P 地 址 映 射 成 硬 件 地 址 )。 1.2.5 串行线路网际协议
串 行 线 路 网 际 协 议 ( S L I P ) , 又 叫 做 “ 串 行 线 路 接 口 协 议 ”。 是 一 种 允 许 通 过 拨 号 连 接 进 行
I P 数据包传输的数据链路协议,使得计算机或局域网可以连接到因特网或其他网络中。在串 行线路上,常用的标准一般是 S L I P 或 S e r i a l L i n e I P 。 S L I P 的修正版称为 C S L I P ,或者压缩过的 S L I P ,执行 I P 头 的 压 缩 , 以 便 更 好 地 利 用 串 行 链 路 提 供 的 、 相 对 较 低 的 带 宽 。 另 一 个 不 同 的 串行链路协议是 P P P(参见第 7 章),或者说“点到点传输协议”( P o i n t - t o - P o i n t )。和S L I P 相比, P P P 的特性更多,其中还包括一个链路协商段。但 P P P 领先于 S L I P 主要表现在没有对 I P 数据报 的传输进行限制,而且可以发送任何一种类型的数据报。
1.2.6 传输控制协议
当然,从目前看来,从一个主机向另一个主机发送数据报只是任务之一。如果你登录到 Q u a r k,还打算在 E r d o s 上的登录协议命令( r l o g i n)进程和 Q u a r k上 的 外 壳 进 程 之 间 建 立 一 条 可靠的连接,那么,发送端必须把准备收发的信息分成若干个数据包,再由接收端把多个数 据包重新组合成一个字符流。这样不仅琐碎,还会额外增加许多工作量。
关于 I P ,不容忽视的另一点是:不可靠。假设你的以太网上有 1 0 名用户,他们都通过 G M U 的 F T P 服务器开始下载 X F r e e 8 6 的 最 新 版 本 。 那 么 所 产 生 的 通 信 量 对 网 关 而 言 , 是 难 以 应 付的,因为速度太慢了,而且内存也非常的紧张。现在,如果你碰巧向 Q u a r k 发送一个数据包, S o p h u s 可能会出现缓冲区空间暂时短缺,导致不能转发数据包的情况。 I P 解 决 此 类 问 题 的 办 法是“丢弃”它。因此,这个包必定会被丢失。所以,通信主机的责任就是在出现错误的情 况下,检查数据的完整性、数据是否完全,以及另行转发。
然 而 , 这 是 由 另 一 个 协 议 — T C P 协 议 ( 也 叫 做 传 输 控 制 协 议 ) — 来完成的。 T C P 在I P 之上建立了一个可靠的服务。其本质特征是利用 I P , 向 大 家 勾 划 了 主 机 和 远 程 机 器 上 的 两 个 进程之间的一条简单连接,这样一来,就大可不必担心你的数据实际上是沿着哪条路由,以 及怎样路由的了。从本质上来说, T C P 连 接 的 原 理 其 实 就 像 一 条 “ 双 向 ” 管 道 , 两 个 进 程 可 以边读取,边写入。也可把它想像成“打电话”。
T C P 利用连接涉及的两台主机之 I P地 址 和 各 主 机 上 的 所 谓 “ 端 口 ” 号 , 来 标 识 此 类 连 接 的 端 点 。 端 口 可 被 视 为 网 络 连 接 的 “ 附 着 点 ”( a t t a t c h m e n t p o i n t )。 如 果 把 T C P 连 接 想 像 成 “ 打 电话”,那么 I P 地 址 就 是 区 号 ( 对 应 一 个 地 区 或 城 市 ), 而 端 口 号 就 是 本 地 代 号 ( 对 应 各 家 各 户的电话机)。
1.2.7 用户数据报协议
当然, T C P / I P 联网中, T C P 并 不 是 唯 一 的 用 户 协 议 。 虽 然 它 非 常 适 合 于 r l o g i n 之 类 的 应 用 程序,但万万不能用于 N F S 这 样 的 应 用 程 序 。 相 反 地 , 应 该 用 它 的 兄 弟 协 议 — U D P (也叫做 “ 用 户 数 据 报 协 议 ”)。和 T C P 协议一样, U D P 也 允 许 应 用 程 序 和 远 程 机 器 某 个 特 定 端 口 上 的 服 务取得联系,但它不能为此而建立连接。取而代之的是,可通过它向目标服务发送独立的数
据包。
假设你已经通过本系的中心 N F S 服务器 G a l o i s 装入了 Te X 目 录 结 构 , 并 且 打 算 查 看 一 个 关
于如何使用 L a Te X的文档。启动编辑器,先在整个文件中读取。但是,要和 G a l o i s 建立一条 T C P 连接、发送并再次发布这个文件,会花相当长的时间。相反地,如果向 G a l o i s发出请求, 编辑器则会把该文件分成两个 U D P 数据包发送,这种方式要快得多。但美中不足的是, U D P 协议不会处理数据包的丢失或中断。若出现这种情况,就由 N F S 对此进行处理。
1.2.8 端口问题
端口可以看作是网络连接的附着点。如果一个应用程序想提供一项特定的服务,它就会 把自己附着在一个端口上,等待客户机(即所谓的“在该端口上监听”)。想利用该项服务的 客户机便在其本地主机上分配一个端口,并连接到远程主机的服务器端口。
端口的一个重要属性是:客户机和服务器之间的连接一旦建立,服务器的另一个副本可 能就会附着在服务器端口,监听更多的服务器。也就是说,允许若干个并发登录利用同一个 端口 5 1 3 登 录 到 同 一 个 主 机 。 T C P 能 够 把 这 些 连 接 区 分 出 来 , 因 为 它 们 来 自 不 同 的 端 口 或 主 机 。 举 个 例 子 来 说 , 如 果 你 两 次 均 从 E r d o s 主 机 登 录 进 入 Q u a r k ,第一个 r l o g i n 客 户 机 就 会 采 用 1 0 2 3 这个本地端口,第二个则采用 1 0 2 2 端口。然而,两者均是连接到 Q u a r k 上同一个 5 1 3 端口上的。
上面的例子说明了端口可用做集合点,客户机通过它连接到另一个特定的端口,以获得 特定的服务。为了让客户机知道正确的端口号,两个系统的主管必须在端口号的分配问题上 达 成 一 致 。 对 那 些 用 得 较 广 的 服 务 来 说 ( 比 如 r l o g i n ), 其 端 口 号 就 必 须 进 行 集 中 管 理 。 这 是 由 I E T F ( 因 特 网 工 程 任 务 组 ) 来 完 成 的 , I E T F 定 期 发 布 一 个 标 题 为 “ 已 分 配 号 ” 的 R F C 。该 R F C 对分配给“众所周知”的服务的端口号进行了说明。 L i n u x 采用的是一个文件,名为 / e t c / s e r v i c e s ,该文件把服务名映射为端口号。我们将在第 8 章 对 此 进 行 详 述 。
值得注意的是,尽管 T C P 和 U D P 连 接 和 端 口 有 很 大 关 系 , 但 其 端 口 号 之 间 不 会 有 冲 突 。 在 我 们 前 面 的 例 子 中 , 这 便 意 味 着 T C P 端口 5 1 3 有别于 U D P 端口 5 1 3 。 事 实 上 , 这 些 端 口 被 用 作 两 类 不 同 服 务 的 访 问 点 , 也 就 是 r l o g i n ( T C P )和 r w h o ( U D P )。
1.2.9 套接字库
L i n u x 操作系统中,套接字库是标准 l i b c C - l i b r a r y 中的一部分。当前,它只提供了对 A F _ I N E T 和 A F _ U N I X套接字的支持,但人们正在努力,提供对 N o v e l l 连 网 协 议 的 支 持 , 以 便 最后能增添更多的套接字类。
1.3 连网
由于世界各地程序员的共同协作, L i n u x 才成为可能。没有如此广泛的协作, L i n u x 不会 有如此夺人的魅力。所以早期开发阶段,寥寥数人着手提供连网功能的工程,其艰难程度简 直难以想象。 U U C P 实施的运作几乎从零开始,基于 T C P / I P 连网的工作大约开始于 1 9 9 2 年秋, 当时 R o s s B i r o 和 其 他 人 创 建 的 即 是 后 来 人 们 熟 知 的 “ N e t - 1 ”。
1 9 9 3 年 5 月, R o s s 中 止 了 这 项 活 动 的 实 施 , F r e d v a n K e m p e n 开 始 着 手 一 项 新 的 实 现 , 重 新 编 写 主 要 的 代 码 , 这 就 是 N e t - 2 。 1 9 9 2 年 夏 , 首 次 公 开 发 行 N e t - 2 d (作为 0 . 9 9 . 1 0 内 核 的 一 部 分), 而 且 从 此 以 后 , N e t - 2 d 得 到 了 几 个 人 的 维 护 和 延 伸 , 最 值 得 一 提 的 是 A l a n C o x 。在对代 码 进 行 繁 重 而 庞 杂 的 调 试 修 改 之 后 , A l a n C o x 在 1 . 0 发 布 之 后 , 把 N e t - 2 改成 N e t - 3 。
N e t - 3 随同 S L I P ( 用 于 在 串 行 线 路 上 发 送 网 络 数 据 流 ) 和 P L I P ( 针 对 并 行 线 ) 一 起 , 为 各 式 各 样 的 以 太 网 插 板 提 供 了 设 备 驱 动 程 序 。 N e t - 3 中有一个 T C P / I P 实 现 , 其 性 能 像 在 本 地 网 络 环境中一样出色,甚至可以和商业 P C软件人员开发的软件一比高下。
不同的开发倾向
与此同时, F r e d 继续开发他的 N e t - 2 e, 主 要 对 网 络 层 的 设 计 进 行 了 大 量 的 修 改 。 在 编 写 代 码 的 同 时 , N e t - 2 e 仍 然 只 是 一 个 测 试 版 软 件 。 关 于 N e t - 2 e, 最 值 得 一 提 的 是 它 结 合 了 D D I ,即 设备驱动程序接口。D D I 针 对 所 有 的 连 网 设 备 和 协 议 , 提 供 了 一 个 统 一 的 访 问 和 配 置 方 法 。
然而, T C P / I P 连 网 的 另 一 种 实 现 却 源 于 M a t t h i a s U r l i c h s , 他 曾 经 为 L i n u x 和 F r e e B S D 编写 了一个I S D N 驱动程序。这次,他在内核中集成了一部分 B S D连网代码。
但在可以预见的将来, N e t - 3 似乎停步不前了。 A l a n 目前在从事 A X . 2 5 协 议 实 施 的 开 发 , 该协议面向“火腿无线电发烧友”。但已准备开发的内核“模块”代码仍然会为连网代码带来 新的活力,却是一个不争的事实。模块允许爱好者在运行时在内核中添加驱动程序。
尽管这些不同实施都可利用同一个设备,但在内核和设备级还有明显的差异。因此,你不 能通过 N e t - 2 d 或 N e t - 3 , 利 用 公 用 程 序 对 正 在 运 行 N e t - 2 e 内 核 的 系 统 进 行 配 置 , 反 之 亦 然 。 这 条 规 则 只 适 用 于 对 内 核 内 部 进 行 处 理 的 命 令 、 诸 如 r l o g i n或 t e l n e t 之 类 的 应 用 程 序 和 连 网 命 令 。
虽然如此,所有这些不同的网络版本都不会让你无所适从。除非你加入了活动开发行列, 否则,就不必担心自己运行的 T C P / I P 是 什 么 版 本 。 正 式 发 布 的 内 核 总 附 带 有 一 套 连 网 工 具 , 它们适用于内核中介绍的连网代码。
1.4 系统维护
本书从头到尾,都将为大家讲解安装和配置方面的问题。但提得更多的却是管理。设立 一项服务之后,还必须使之能够运行。大多数服务的维护并不繁杂,但有的服务,比如邮件 和新闻,则要求你执行常规任务,以保持系统的更新。我们将在后面几章中讨论这些任务。
c r o n 周期性地运行这两个脚本。有些主要应用程序(比如 s m a i l 和 C - N e w s ) 的 源 代 码 中 包 含 有 这样的脚本。只须按照自己的要求和喜好,适当地增减。
任何 c r o n 作 业 的 输 出 结 果 都 会 寄 到 一 个 管 理 性 质 的 帐 号 上 。 默 认 状 态 下 , 多 数 应 用 程 序 都会向根帐号发出错误报告、用法统计和登录文件总结。如果你经常以根的身份登录的话, 这是很有用的;另一个较好的方案是把根的邮件转发到你自己的私人帐号,设立一个邮件别 名,详情参见第 1 3 章。
不管你配置自己的站点时有多细心,始终会产生问题。因此,系统维护的另一层含义是 接受用户的抱怨。通常情况下,人们希望通过电子邮件把自己的意思转达给作为“ B O O T”的 系统管理员,但同时还需要其他的地址,以便负责某一特定维护的人员也能够看到这些邮件。 举个例子来说,报怨邮件配置故障的电子邮件通常被发送给邮局管理员;而和新闻系统有关 的问题则向新闻管理员或新闻组报告。寄给主机管理员的邮件应该重新定向到主机基础网络 服务的负责人,如果你运行的是命名服务器,则重定向到 D N S 命名服务。
系统安全
网络环境中,对系统进行维护的另一个不容忽视的重要原因是:避免自己的系统和用户 受到攻击。管理疏忽的系统往往是那些心怀不轨的人攻击的目标。攻击手段相当多,从猜测 密码到以太网偷窥。导致的恶果轻重程度不一,从恶作剧式的邮件信息到数据丢失,或者侵 犯用户的隐私权。在讨论出现这些特殊情况的背景时,我们将进一步深入这一话题,同时探 讨常见的防御手段。
本小节将讨论几个实例和处理系统安全的一些基本技巧。当然,我们所涉及的主题也许 不够全面;它们只对一些常见问题进行了说明。因此,找本安全方面的好书来读是绝对必要 的,尤其是在连网系统中。强烈推荐大家参考 Simon Garfinkel 所著的《 Practical UNIX Security》,该书由 O’Reilly出版。还可以在 找到此书。
提起系统安全,首先得从优良的系统管理开始。这包括了检查所有重要文件和目录的属 主和许可,监视特权帐号的使用情况等等。比如, C O P S程序( w w w. c e r t . o rg / f t p / t o o l s / c o p s) 将检查你的文件系统和常用配置文件是否有异常许可或其他异常情况。它还聪明地采用了一 个密码套件,强制性地对用户密码实施某一特定的规定,这样,密码就很难被人破译。比如 影子密码套件,它要求密码至少要有 5个字母,而且还包括大、小写形式的数字和数位。
在编写供网络访问的服务时,务必确定赋予它“最低特权”,意思是除了为它设计的任务 外,不允许它执行别的任务。比如,在根用户和其他特权账号的确需要 s e t u i d 程 序 时 , 就 应 该 为他们赋予相应的特权。同时,如果希望服务只限于特定的应用时,不要迟疑,在特定应用 允许的范围内,尽可能地对它进行严格配置。例如,如果想允许通过你自己的机器启动无盘 主 机 , 你 必 须 为 之 提 供 T F T P ( 日 常 文 件 传 输 服 务 ), 以 便 它 们 能 够 从 / b o o t 目 录 下 下 载 基 本 配 置文件。但是,如果在非限制条件下, T F T P 允 许 全 世 界 的 用 户 都 可 以 从 你 的 系 统 中 下 载 这 些 文件。如果不希望如此暴露,就必须把 T F T P 服务限定在 / b o o t 目录下。
同样的道理,大家肯定还想过如何在自己的局域网内,限制某些主机的用户使用网络服 务。这方面的详情,可参考第 8 章介绍的 T C P D 。
中的漏洞,进而造访你的系统。这是常有的事儿,而且根本无法杜绝。但是,和其他程序比 较起来,要求特殊权限的程序似乎更缺乏安全保障,因为任何一个漏洞都可能导致难以想象 的后果。所以,在网络中安装 s e t i u d 程 序 时 , 一 定 要 加 倍 小 心 , 不 能 漏 掉 安 装 文 档 中 的 任 何 东 西,以免无意中为“黑客”造成可乘之机。
正如天有不测风云,谁也料不到未来会发生什么事情,因为无论我们多么细心,总不能 排除意外的发生。最好的办法是防患于未然。首先从检查自己的系统日志文件着手,但有些 “闯入者”可能很聪明,会将自己的造访痕迹清除掉。但是,像 Tripwire( o l s / t r i p w i r e / )这类的工具,它们允许我们对重要的系统文件进行检查,看其中的内容或许可
权是否已被篡改。 Tr i p w i r e 对 这 些 文 件 进 行 各 种 校 验 和 计 算 , 并 把 它 们 保 存 在 一 个 数 据 库 内 。 在之后的运行过程中,将对行些校验和重新进行计算,并和数据库内保存的校验和进行比较, 从而有效地防止旁人对系统数据的肆意篡改。
1.5 后续章节提要
下面几个章节将讨论如何配置 T C P / I P 连 网 , 如 何 运 行 一 些 主 要 的 应 用 程 序 。 在 着 手 编 辑 文件之前,我们将在第 2 章详细讨论一下 I P 。已经掌握 I P 路 由 原 理 、 知 道 如 何 执 行 地 址 解 析 的 读者,可跳过此章。
第3章将讨论一些基本的配置问题,比如如何建立内核,如何安装自己的以太网卡等等。 至于如何配置自己的串行端口,则在另外一章中讨论,因为它不仅适用于 T C P / I P 连网,而且 还适用于 U U C P 。
第5 章将帮助大家针对 T C P / I P 连网,安装自己的机器。其中包括只启用 l o o p b a c k 的单机主机 安装题示,连接到以太网的主机安装提示。另外还要介绍几个颇有用的工具,大家可以用它们 来测试并调试自己的安装结果。第 6章将讨论如何配置主机名解析,如何安装名字服务器。
接下来的两章将分别介绍 S L I P 和P P P 的配置和使用。第 6章将对如何建立 S L I P 连接进行解 释,并展示一个详细的 D i p 参考,该工具允许大家对某些必要的步骤进行自动化处理。第 7章 将全面介绍 P P P 和 p p p d 。
第 8 章 将 简 要 介 绍 一 些 重 要 网 络 应 用 程 序 的 安 装 , 比 如 r l o g i n 和 r c p 等等。第 8 章 还 将 全 面 介 绍inetd super是如何对服务进行管理的,以及如何将关系到系统安全的服务限定在信任主机范 围内。
接 下 来 的 两 章 将 讨 论 N I S ( 网 络 信 息 系 统 ) 和 N F S ( 网 络 文 件 系 统 )。 N I S 是 一 个 非 常 有 用 的 工 具 , 用 于 分 发 管 理 信 息 ( 比 如 局 域 网 内 的 用 户 口 令 )。 N F S 则 允 许 你 与 网 络 内 的 若 干 个 主 机共享文件系统。
第 11章将广泛介绍 T aylor UUCP 管理,它是一个免费的 U U C P套件。
本书的其余部分将介绍电子邮件和 U s e n e t 新闻组。第 1 2 章 介 绍 电 子 邮 件 的 核 心 概 念 , 比 如邮件地址是什么样的,邮件处理系统如何将电子邮件发到收信人手中的等等。
第 1 3 章和第 1 4 章 分 别 介 绍 s m a i l 和 s e n d m a i l 的 安 装 。 本 章 对 两 者 都 进 行 了 介 绍 , 因 为 它 们 各 有 千 秋 : 对 初 学 者 来 说 , s m a i l 更 易 于 安 装 , s e n d m a i l则 更 为 灵 活 。
http://