📄 00000002.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: ruster (尘埃*星辰*领悟), 信区: Linux <BR>标 题: 第一章 TCP/IP基础 <BR>发信站: BBS 水木清华站 (Thu Dec 21 13:15:08 2000) <BR> <BR>1.1 基本概念 <BR> <BR> 1.1.1 TCP/IP <BR> <BR> TCP/IP是UNIX/LINUX世界中网络的基础,甚至,在某种意义上,UNIX网络就是TCP/ <BR>IP,而且TCP/IP也就是网际互联的标准。你可能知道有一个叫OSI(开放系统互联标准 <BR>)的模型,它是教科书上描述网络互联的标准模型,不幸的是,这个标准在实际的网络 <BR>世界中毫无意义,尽管许多教程会以它为模板传授网络理论。这是对标准化和美国政府 <BR>的一种嘲弄。事实是,TCP/IP在前进,而OSI已经不复存在。 <BR> <BR> 本书试图直接按TCP/IP的构成来理解问题,尽管这也许不会在考试中给你带来高分, <BR>但它确是唯一合理的方式。如果你喜欢OSI那种似乎井井有条的方式,你总会找到合适的 <BR>教材的。 <BR> <BR> 作为网络互联的标准,TCP/IP给出的是一系列协议,这些协议要完成各种各样的网络 <BR>应用支持。你可以合理地把这协议看成一组编程接口,一旦应用程序了解这些接口便能 <BR>使用网络。为了实现这种抽象,TCP/IP被分成了四层,我们可以通过一个WWW浏览器来 <BR>看看这四层的概况: <BR> <BR> <BR> 应用层:www,SMTP,DNS,FTP <BR> <BR> 传输层:解释数据 <BR> <BR> 网路层:定位IP地址、确定连接路径 <BR> <BR> 链路层:与硬件驱动程序对话 <BR> <BR> <BR> 首先WWW浏览器必须调用HTTP协议,这个协议规定用什么样的命令来得到WWW文本,这 <BR>种协议构成了TCP/IP的最高层— 应用层。 <BR> <BR> 为了使用HTTP协议,浏览器要把命令发送到服务器上去,并且从服务器得出回答, <BR>但是,必须记住,网络上传输的总是些字节,哪些字节是命令,哪些是回送数据,又有 <BR>哪些是用于表示“就绪”,“传输中”或者“停止”的验证码呢?这些解释工作需要一 <BR>串复杂的协议进行控制,这构成了第三层 — 传输层。 <BR> <BR> 假定所有校验和和控制字都已经完毕,现在要把这些数据真正发送到对方那里,那么 <BR>,面对下一个问题是:这台机器到底位于哪里?如果保证数据被发送到了我希望的位置 <BR>?这种地址定位构成了第二层一网路层。 <BR> <BR> 最底层 — 链路层完成最终的工作:将地址、数据等等变换成真正的电气信号,并且 <BR>在网络上送出,让网络设备彼此对话。 <BR> <BR> 在以后的各节中,我们将会概述一下各层的情况及与我们相关的主要的问题。相信我 <BR>,这里讨论的只是主要的问题。许多问题由于仅有历史的意义而无需考虑,而另外一些 <BR>问题不太象是一个LINUX管理者会非常关心的,例如ATM交换。相反,如果要管理LIN <BR>UX务嚣,迟早你必需理解ARP和路由选择。 <BR> <BR> 我知道从理论上说一个服务器管理员也许根本不需要了解下面陈述的问题,也许需要 <BR>知道更深奥得多知识。但是根据我的经验,一旦你成为服务器管理者,并且你是在真实 <BR>世界而不是管僚机构中,你将很快发现一切困难的任务都必须由你来完成,而且毫无商 <BR>量余地,最终你会看到你将成为整个系统的管理者。了解足够多的东西,你将会在系统 <BR>管理员的恶梦中生存下来。 <BR> <BR> 在后面的解释中,你将看到TCP/IP是如何工作的,但是我们必须先说明一件事情,你 <BR>很容易看出,TCP/IP的设计是有弹性的,实际上,存在某种方法把其他网络协议当成TC <BR>P/IP的基础,例如,我们一般让TCP/IP协议直接与网卡驱动程序对话,但是,也可以想 <BR>象这样的情况,把其他的网络协议,例如IPX当成一种虚拟的“网络设备”,这样,TCP <BR>/IP就可以运行在其他的网络协议之上,这种技术被称为IP隧道。不过,在本章中,我们 <BR>将不涉及如此复杂的问题。 <BR> <BR> 1.1.2 IP地址和子网 <BR> <BR> 你肯定知道,互联网用IP地址来标识主机地址,而数据传输则是通过把数据分成一 <BR>列的小“包”来完成。TCP/IP世界里的每一台主机都要有唯一的IP地址,这个IP地址是 <BR>一个32位无符号整数,不过通常使用点分十进制表示。例如,0001000011000001111111 <BR>1000000001是二进制的281148929,但是实际应用中把它按照8位一段的方法分成四段, <BR>第一段是00010000,也就是16,第二段是11000000,十进制是192,同样,剩下来的两段 <BR>是254和1,因此这个地址是16.192.254.1。 <BR> <BR> 这听起来很简单,但是在实际实现中有些复杂,主要问题是TCP/IP必须兼顾许多困难 <BR>的问题,其中之一是网络联接。全世界有太多的网络主机,随便给你一个主机号,你怎 <BR>么知道它在哪里?最大恶梦在于,或许13.2.0.5在美国纽约,而64.0.7.6 却在北京,如 <BR>果搜索一台主机地址就要查阅全世界的主机列表的话,那么互联网将立即崩溃。 <BR> <BR> 解决这一个问题的第一个要点是网络分类.分类把世界上的IP地址分段,各段之间独立 <BR>管理,通常每一段用同样的方式连接到一起,本段的机器之间可以直接互相访问,这样的一 <BR>个段称为一个系列网络地址。 <BR> <BR> 为了管理的方便,分段用一个有点古怪的方式。例如,对些公司(比如IBM),一个上 <BR>万台机器的网络很正常,而小公司也许只有十几台机器,TCP/IP实现中用A、B、C类地 <BR>址来处理这个问题。 <BR> <BR> A类地址用于超过65534个主机的网络,例如,一个前缀为18的网络使用18.0.0.1~18. <BR>255.255.254的网络地址,这些地址之间是直通的,主机之间可以彼此访问。为了说明这 <BR>一点,TCP/IP使用网络掩码和网络地址的概念。 <BR> <BR> 在上面的例子中,网络地址是18.0.0.0,这表示网络的包含地址段是18.0.0.1~18.25 <BR>5.255.254,即地址部分除去前缀后,余下的部分由全零变成全1,不过全1的地址将保留 <BR>为广播使用。 <BR> <BR> 与网络地址相应,对在此网络中的主机,TCP/IP使用网络掩码。在上面的例子中,掩 <BR>码是255.0.0.0,其含义是这样:假设18.0.0.3想和18.110.75对话,那么,将这两个地 <BR>址相互异或,再与掩码取“与“(&),结果是零 ,说明这两个地址可以直接对话;相 <BR>反,如果要与19.1.1.1对话,那么运算之后不为零,说明必须使用间接方式才能到达。 <BR> <BR> 可以用直接方式理解掩码,掩码中的“1“用来描述网络地址(前缀),“0“用来描 <BR>述子网的主机,如:255.0.0.0意味着将主机地址的前8位解释为网络号,而后24位解释 <BR>成网内的主机地址。也就是说,与某个A类主机地址前8位相同的主机地址被认为是在同 <BR>一子网之内。 <BR> <BR> A、B、C类用下面的方式规定: <BR> <BR> A类地址使用255.0.0.0的掩码,为了管理方便, 规定A类地址总是使用头一位为0的地址 <BR>值,这意味着A类地址是从1.0.0.0到126.0.0.0另外还有一个特殊的A类地址127.0.0.0它 <BR>用来表示"本机",即自身。 <BR> <BR> B类地址使用255.255.0.0的掩码,B类网从128~0.0.1到191.255.0.0。 <BR> <BR> C类地址的掩码是255,255.255.0,网络地址从192.0.0.0到233.255.255.0。 <BR> <BR> 首字节在224以上的地址用于实验和开发,部分用于组播, 通常无需关心。 <BR> <BR> 地址255为特殊的含义,它用于广播,即“向本网上所有人通话”。这个概念对任何人 <BR>都应该是很容易理解的。使用广播有两种方法,并且是几乎等价的,即:(1)使用全1的 <BR>地址,即255.255.255.255 。(2)使用本址广播,即用网络号加上全1。例如,A类网180 <BR>.0.0.0可以使用18.255.255.255广播,B类网190.4.0.0的广播地址则是190.4.255.255。 <BR>无论哪一种,对于广播地址的访问都将引发对数据发送给本网络上的所有机器。 <BR> <BR> 计算网络掩码和标志子网地址是网络管理者经常需要进行的工作,第一种计算是根据 <BR>某个确定的主机地址和它的网络掩码求出所有可以和它直接通信(在同一子网之内)的 <BR>主机地址。例如,主机地址是202.112.50.3,掩码是255.255.255.0,与它可以直接通话 <BR>的主机的地址可以这样计算:掩码是255.255.255.0,因此32位网络地址的前24位被解释 <BR>为网络地址,所以凡是和202.112.50.3的前24位内容相同的主机地址就和它处在同一子 <BR>网之内,后8位是子网里面的机器地址,它可以从全0变到全1,所以所有和这个主机在同 <BR>一子网之内的主机的地址是202.112.50.0-202.112.50.255。 <BR> <BR> 网络地址/掩码一般用斜线分开,如网络地址是202.199.248.0,掩码255.255.255.0在 <BR>UNIX中一般写成202.199.248.0/255.255.255.0。但是也有另外一种写法,就是用掩码中 <BR>1的个数来代替掩码的实际形式。例如,255.255.255.0的前24位是1,其他位是0,因此 <BR>可以写成202.199.248.0/24。同样,下面的两栏地址形式是彼此等效的: <BR> <BR> 202.199.248.0/255.255.255.0 202.199.248.0/24 <BR> <BR> 122.24.0.0/255.255.255.0 122.24.0.0/16 <BR> <BR> 13.4.5.7/255.0.0.0 13.4.5.7/8 <BR> <BR> 我们在前面一直设置掩码的0/1分界在字节边界处,但是这其实并不是必须的。完全可 <BR>以有其他形式的掩码。例如,240等于二进制的11110000,因此一个255.255.255.240的 <BR>掩码意味着前面28位是网络地址,而后面4位是子网内的IP。同样,网络地址也可以不由 <BR>0结尾。举个例子来说,202.112.50.16/255.255.255.240是什么意思?202.112.50.16是 <BR>二进制的11001010011100000011001000010000,套上一个有28位为1的网络掩码,意味着 <BR>最后四位由全0变成全1,就是最小是11001010011100000011001000010000,最大是1100 <BR>1010011100000011001000011111,这两个数是202.112.50.16和202..112.50.31,所以这 <BR>个网络地址代表202.112.50.16到202.112.50.31的所有主机。这个网络地址也可以写成 <BR>202.112.50.16/26。 <BR> <BR> 1.1.3 网络硬件 <BR> <BR> TCP/IP并不关心具体的网络实现,但是不幸的是系统管理员必须了解。你的网卡可能 <BR>会失效,以太网可能会拥塞,调制解调器会被击穿,还有诸如此类的种种问题。另一方 <BR>面,特别对于以太网,如何将IP地址译码成实际的电气位置是非常重要的问题。 <BR> <BR> 对于一般的系统,最重要的两种网络连接是以太网和电话线。以太网使用同轴电缆, <BR>双纹线或光纤作为连接介质,面电话线则为广域网提供主要的连接手段。 <BR> <BR> 以太网无疑是最主要的网络技术,对一个DIY人员来说,10MB或100 MB以太网的硬件 <BR>连接如此简单以至于无需在这里作任何描述。但是有几个特殊点可能仍然需要指出。首 <BR>先是以太网的通讯协议。 <BR> <BR> 以太网命使用一种载波监听/碰撞检测的方式工作,因为线路上跑的是电气讯号,所 <BR>以以太网卡通过监视电缆电位来判断是否有某个设备在传输数据。如果网卡接到一个发 <BR>送任务,它首先判断线路上是否有数据传输,如果有,它等待一会:如果没有,它就以 <BR>一个特定的数据包大小(帧)将数据发送到线路上。 <BR> <BR> 以太网的帧格式有些怪异,它允许在帧中包含帧的类型,当一个帧到达某台计算机时 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -