2004年03月23日









简易网络基础架构


———————————————————————————————

1. 关于网络基础

2. 浅谈网络:网络是什么 网络功能 网络运作模式 OSI 七层协议

3. 基础网络布线模式: LAN WAN Internet Intranet 联机方向

4. 网络媒体的运作方式: 网络媒体 什么是物理广播 封包碰撞 软件地址到硬件地址 TCP/IP 流程

5. 网络媒体的选择:网络线的等级 并行线与跳线 hub 与 Switch 传输单位

6. 网络卡与驱动程序: 驱动程序 MAC 选购要点

7. IP 观念: IP network netmask broadcast gateway 保留 IP 与内部循环网络

8. TCP 封包概念: 端口对应档案 /etc/services 防火墙 TCP_Wrappers

9. Gateway 与 Router

10. 其它讨论:何为实体 IP 保留 IP 浮动式 IP 与动态 IP


———————————————————————————————

关于网络基础之注意事项:

  在 Linux 中的最大优势就是在 Network 的功能啦!包括他的高效能网络传输与高稳定度系统资源分配,以及较为安全的网络防备能力!然而,由于这些优点同时也是缺点,因为一旦被 Cracker (网络怪客) 入侵的话,嘿嘿!怎么吃上官司的都不知道!所以啰,上网之前,请先注意:我的网络做好安全防护了吗?再者,由于 Linux 的设定上面常常比较不人性化,毕竟当初他是由一群工程师发展出来的 Unix 的下一代,所以依旧具有相当麻烦的设定工作需要作!这个时候,如果没有较为基础的 网络基础 认知的话,那么在 Linux 上面设定网络或者是网络除错将是您一生当中最大的梦魇……,所以,这里有几件事情要请您好好的来参考一下:

· 花几晚的时间将网络基础看一看: 这一篇短文旨在引导新鲜人快速进入网络的世界,所以写的比较浅显一些些,基本上,还有一堆网络硬件与通讯协议并没有被包含在这篇短文里头。如果您的求知欲已经高过本篇短文,那么请前往 网络基础 里面 取经去吧!尤其是 IP 基础 那一篇,对于您的网络概念,将有『长足』的进步呢!此外,如果您对于本篇短文有不苟同之处,请千万与小弟联络,以提供小弟修改的空间!感谢感谢!

· 再度熟悉 Linux 操作与 Linux 基础:还是要一再地强调,如果您确定您只是想要『会使用 Linux 就好』那一类型的使用者,那么真的不要再往下看了,因为问题会很大,倒不如花个小钱,请个专家来帮你搞定即可!而如果您确定您是『想要更了解 Linux 的使用者,并且想要熟悉架设网站』,那么请不要再在网络上询问:『为何我不能使用 FTP 传送资料到主机上?』或者是『为何我不能建立个人网页』之类的傻问题,因为这仅仅牵涉到『档案权限与属性』的概念而已,而这些概念都是 Linux 基础里头相当重要的功课!此外,由于远程操控 Linux 主机时,几乎都是使用文字界面来工作,所以,不懂 bash shell ?哈哈!那么想要干嘛都码不可能!

· 随时掌握主机信息: 这是最麻烦的一点啦!因为大家还是常常认为『我的网站这么小,没有人会注意的啦!』唉!说过若干次了,就是因为有这种心里存在,我们才会常常听到『奇怪!我在早上刚安装完毕,怎么下午就无法以 root 的身份登入了!』请随时注意您主机的信息,好好的爱护他吧!
无论如何, netman 大哥写的 网络基础 请千万不要忘了前往一观!拜托拜托!否则您后来的网络学习脚步会很慢很慢…
返回页首

———————————————————————————————

浅谈网络:

网络是什么?

  网络是什么呢?简单的说,只要是两部以上的计算机,透过网络线或者是其它的网络媒体(例如无线网卡、专线、Cable缆线等等)连接在一起,以进行档案传输、讯息传递等等功能,那就形成一个『网络世界』啦!那么网络有没有大小之分呢?基本上,如果您的网络是在您的研究室内几部计算机,或者是大楼内的所有几百部计算机连接起来的,那么就可以视为一个小型的 LAN ( Local Area Network ),透过 LAN 的再延伸,例如整个城市或国家,就可以称做为 WAN ( Wide Area Network ) ,而这些无数个的 LAN 与 WAN 都连接在一起,那就是 Internet啦!您可以想象成, Internet 仅是将所有的 LAN 与 WAN 连接在一起的一个接口,所以,任何地方的计算机,只要连接上 Internet 之后,就没有什么太大的差异了,也就是说,在地球的另一端的计算机,与在您身旁的计算机,在 Internet 上面,事实上是差不多的!(只不过流量有点限制就是了 ^_^)!此外,需要注意的是, Internet 并没有专人在维护的,所以他是完全没有王法的地方,您可以在 Internet 上面进行任何的事情!哇!好象很可怕的样子!是这样没错! Internet 确实是『相当的可怕!』 ^_^,就是因为太可怕了,所以我们得要来聊一聊网络的基础呀!

网络的功能:

  好了,对于所谓的网络有一点认识之后,要来谈一谈:网络有什么功能呢?说穿了,网络真的是很日常生活化的一项工具了!!例如您使用的计算机上 WWW 去浏览时,使用的就是网络功能了;您的公司内部的『网络上的芳邻』分享的档案、打印机,那就是网络功能之一;上网下载软件,使用的 FTP 也是网络功能之一!呵呵!够生活化了吧!我想,目前的生活中,很难有人不去奇摩雅虎看一看奇摩实时新闻的吧!?还有股票啦、电子信息邮件啦、上网玩网络联机游戏咯等等,哇!好多功能呦!这都是网络帮您达成的呦!当然啦!网络的功能来不止于此,您可以再更深入的研究呦!

网络的运作模式:

  好啦,网络就是几部计算机连接在一起,并且可以互相进行资料与讯息及硬件周边分享的一个咚咚,他可以达到的功能相当的多,但是这里就牵涉出来了一个问题,那就是『网络是如何运作的呢?』,我们以目前最常见的 ADSL 拨接制的情况稍做说明好了。当您需要联机网络时,那么就必须要有:

1. 网络卡与网络线:在网络的世界里,其实真正工作的应该就是电子讯号啦!而这些电子讯号需要藉由硬件做为媒体来传输,这就是最底层的网络硬件啦!我们这里是以 ADSL 来进行说明的,当然还有所谓的光纤、无线网络等等。无论如何,要连接到 Internet 上面去,首先,就是必须要有『连接的媒体』这个媒体一般就是 RJ-45 的网络线与网络卡啦!当然啦,每一种媒体都有其规格与负载量,所以选择的时候就需要多加的小心啰!

2. 支持网络媒体的操作系统:有了网络媒体之后,但是没有能够跟媒体沟通的操作系统来操控硬件,那硬件当然没有办法工作啦!

3. 合法的网络地址:就跟门牌一样,没有门牌,那么您要如何到达目的地或者别人如何到达你家?此外,在网络地址的订定方面,还会定义出『路径』(route,路由),就是要如何到达目的地的地图啦!

4. 数据传输的方法:好了,现在硬件都没有问题了,接着下来就是需要了解『我的资料是怎么传送出去的?!』哇!好麻烦,还要理解资料『封包』的咚咚呀!呵呵!基本上,不用担心,目前的网络已经帮我们定义好很多协议了!所以我们只要了解他的一些基础原理即可!其它的就不需要太担心啦!!

  OK!那么假设一个状态好了,如果你要浏览 奇摩新闻 的话,您是怎样取得上面网页的资料的呢?

1. 首先,您要取得奇摩雅虎上面的资料,就必须向对方传送一个要求,不然对方怎么知道您要的资料是什么呢?呵呵!那么这个要求的『封包』会先在你的系统上面被『打包』;

2. 『打包』完成之后,当然就是要开始来传送咯,传送当然是藉由网络卡来传送啰,所以资料这个时候会被送到网络卡上;

3. 而在网络卡将打包的封包传送出去之前,会先监听一下在这个传送的时间点上面,是否有其它的 PC 同时在传送,如果没有的话,封包才可以送出去,否则就无法传送,需要再等下一次的监听之后才能传送!

4. 好了,那么开始传送之后,就需要藉助于 route tables 的规则,才能经由一个一个的节点(nodes)来送达目的地!

5. 到达目的地之后,再来则是对方的主机将封包收下来,并经过操作系统的解开封包,得到您所要求的资料,然后在依据要求的内容来给予响应!而这个给予的响应又需要上面的这样一个流程了!这个时候就会变成对方将资料打包->网络卡->网络传送->….到达你的屏幕前面!

OSI 网络七层协议:

  而依据上面的流程来看,我们就不难了解到 OSI ( Reference Model for Open System Interconnection ) 的一个模式(model),称为 OSI 七层协议的一个模式啰!这个七层协议可以简单的分为两大群组,一个用在网络的基础(硬件协议与网络地址)方面,主要规定了一堆硬件的相关协议;另一个则是使用者部分的协议,使用者可以利用这四个协议来设定自己的应用程序!分别可以这样看:

· 网络基础:实体层、资料连接层、网络层

· 使用者方面:传输、会谈、表现及应用层

  我们可以简单的用下表来稍微了解一下这七层分别在干嘛?请特别留意,下表请由下往上看,亦即由实体层看到应用层呦!
OSI 七层协议的名称
该层负责的工作
应用层
·表现层是将资料转换成 PC 的资料格式,而应用层则是跟应用程序有关的转换了!例如您的浏览器若只认识 BMP 的图档,那么在应用层就会将来自 JPG 或 GIF 的档案转成 BMP 啰!
表现层
·当接受了会谈层传送来的资料之后,当然,我们必须要针对各个不同的资料与字符进行译码与转换的工作!例如 ASCII 与 EDCDIC 之转换,及资料的加密与与压缩等等功能!
会谈层
· 资料是藉由传送层传送来的,而这一层则是将来自传送层传来的资料进行响应的工作!举个例子来说:假设 client 端为节点 A 而 Server 端为节点 B。
1. 当节点 A 要对 B 要求建立联机时,A 会先发出『联机请求』的讯息,该讯息上面带有 SYN 的符号;
2. 节点 B 收到讯息之后,如果确定接受 A 的联机要求,那么就会响应一个『确认请求』的讯息给 A ,该讯息上面则带有 SYN/ACK 符号;
3. 然后节点 A 再度响应给 B 一个『确认联机』的讯息,带有 ACK 的符号,这个时候就进入了资料传送的阶段了!
4. 当节点 A 资料传送完毕之后, A 会发送一个『终止联机』的讯息,则在得到 B 响应的『确认终止』讯息之后,就结束了该次联机!
· 上面即是有名的『三向交握, Three-Way Handshack』的工作原理啦!那就是在这一层里面达成的哩!所以我们可以说,在会谈层里面可以提供稳定的可靠的联机渠道!
传送层
· 我们在底下的网络功能三层协议之中,知道资料传送是以封包 ( packet )来传递的,而打包的工作就是在这一层里面完成的啦!在这一层里面,最常见到的协议就是 TCP 封包啦!他可以记录目标及来源的 port 与 IP ,让资料封包可以顺利的藉由底下的网络层来达到传送的目的!
· 所以,在这一层里面,主要负责的工作就是『由上面来的资料需要打包,由下面来的封包则是拆封』咯!而且他也会依据不同的协议( ftp, http, smtp… )在同一地址上面来进行追踪与分析呢!
网络层
· 在真实的世界里面,我们在寄出邮件的时候,需要知道的是『我们的门牌及对方的门牌』对吧!?那么在网络的世界里,我们的资料封包记录的来源与目的『地址』 ( 目前最流行的 IPv4 这种 IP 的规定 ),就是在这一层当中定义出来的!
· 此外,不要忘记了,资料要能够流通,还得需要藉由『路途』来决定,在网络的世界里面,就是我们的 route table 啰!这东西很重要!没有他的话,资料就送不出去啰~
资料连接层
· 我们的资料要透过实体层的网络卡及网络媒体(如网络线)进行传输的时候,需要将资料打包(打包成为 packet, 打包的步骤是在传送层里面完成的 ),那么一个封包的大小与格式及所含的内容就在这一层当中规定!
· 通常一个打包的资料封包是不可以太大的(所以才会有规定呀!)这是因为要避免某部主机一直占着网络媒体不放的缘故!所以如果你的档案很大时,那么该档案就会被分成很多的打包后的资料封包来传送呦!
· 再来,如果发生了同一个传送时间点上面有两个或以上的主机同时提出传送的需求时,那么该次传送将会失败( collision ),此时,该封包再等待下一次传送的时间间隔也在这一层内规定!
物理层
· 前面说过了,真的在进行网络工作的其实是电子讯号及传递电子讯号的硬设备。而包括各个网络媒体之定义啦、还有网络的连接型态啦!都是在这个层级当中规定的!例如我们的 ethernet 网络卡还有 RJ-45 网络线等等!
· 当然啦,如果你有兴趣想要发展网络媒体硬件的话,那么你的硬件就需要符合这个层级的规定啦!不然做出来的硬件可就无法与其它的规格品沟通啰!


  请特别留意, OSI 仅定义出大略的模式而已,更详细的定义则需要再参考各项层级当中的规定!!例如网络层在目前最流行的是 IPv4 的协议,但是未来的 IPv6 协议也可以适用呦!

  所以,每次进行网络工作的时候,你的资料就会由上(应用层)而下(实体层)的进行数据的打包、卷标与传送,而到达目的地的时候,你的资料就会被由下(实体层)而上(应用层)的解开与运用啦!用邮局的邮件传送来解说一下好了:你要寄信的时候是怎样寄出去的呢?

1. 将你所想要寄出的资料进行打包进入资料袋的工作:这里面包含了你所想要做的工作的判断,包括是否需要将你的文件资料进行加密呀?等等的(这些包含了应用层、表现层与对谈层);

2. 接着下来,你必须要在资料袋上面填写你的地址与对方的地址,并且还要注明收信者呦(这部份就属于传送层的阶段了);

3. 然后你将这封信放入邮筒里面去,等待邮差车来运载(这部份可以想象成网络层);

4. 邮差来收了这封信之后,会先载运到地区的大型邮件集散地,并依据信封上面的地址进行包裹的分类,以进行下一步的传递工作;

5. 然后分类之后的大型货柜或包裹,经过空运或海运或者是货运进行传输(有点像在 Internet 上面呦!),送到对方的大型邮件集散地;

6. 对方的大型邮件集散地将货柜打开之后,依据各包裹的地址进行分类,

7. 由邮差将分类过后的信件运载到正确的地址去;

8. 收信人收到该信件之后,打开包裹,得到资料之后,再进行进一步的响应!!

  因此,我们可以这样看,如果您的网络要能够运作的话,那么就需要底下的几件东西:

1. 网络线:这可有的选择的了!不同等级的网络线能够进行的最大传输量与能支持的网络布线类型并不一样,所以要仔细的给他选择一下呦!目前的主流是以 RJ-45 的 Cat5 等级网络线为主体!

2. 网络卡:网络卡的学问是很大,不过我们这种小站,嗯!普通一点的 10/100 网卡即可啦!

3. 核心支持的驱动程序:还记得在 核心编译 里面提到的吧!对了,除非你的操作系统能够跟你的硬件沟通,否则永远都是个『屁!』

4. 合法的 IP :对啦!网络世界的『门牌』啦!必须要是『合法的』呦!那么什么是『私有的?』后面继续会提到的啦!

5. 正确的 route table :要让各家『门牌』可以正确的显示出来,就需要『路径图』啦!好让我们的资料封包可以『按图索骥』呀!呵呵!这个时候, route table 可是不可或缺的喔!
好了,底下我们先以一个实际的网络布线情况来加以说明上面的理论啰!然后在一个一个的拆开来进行说明啦!

基础网络布线模式:

  谈完了一些基本的观念之后,接着下来当然就是实作的部分啰!首先,要让网络能通,自然就需要将所有的计算机以『网络的联机媒体』连接起来,这里指的媒体就是『网络线、集线器或交换器( Hub 或 Switch )、网络卡』等等的硬件配备啦!当然啦,由于选择的媒体不同,布线情况也会有所差异!这里 VBird 以目前最常见于一般小型企业或家庭 LAN 里面的布线『星形联机』来进行说明。这种架构基本上就是以一个 Hub 或者是 Switch 为中心,进而将所有的计算机连接起来,以提供各个计算机的网络功能!这种架构的最大优点在于除错较容易!我们底下列出一个很简单的家庭星形架构的联机:

基本组件:

· 工作站与服务器( workstation, server ):简单的来说,上面的 Windows PC1, Windows PC2, Linux PC3 这个没有对外开放网络服务的机器就可以称为 工作站( workstation ) 啦!而上面的 Linux之Proxy,NAT服务器由于对外提供网络服务,可以允许客户端 ( Client ) 连接上来,就称为 服务器( Server ) 啦!而 host 指的是一部计算机啦!不论是上面的 workstation 或 server 的哪一部,都是 host 说!

· 节点:那么 node 是什么呢?就是节点啦,在网络媒体上面的每一个 host (主机) 都可以看做一个 node 啰!例如上面的图标当中, 集线器、 Linux 服务器、调制解调器、ISP大型主机…. 都是一个『节点』,因为我们的资料封包都是会经过该装置才一个一个的传送出去!

基本架构说明:

  简单的说,『网络就是一群通过一定形式连接起来的计算机』!

· LAN:一个网络可以由两台计算机组成,也可以拥有在同一大楼里面的上千台计算机和使用者。我们通常指这样的网络为局域网络 ( LAN、Local Area Network ),如同上面的图标,我们可以简单的认定在调制解调器以内( 即左边 )的 PC1, PC2, PC3, Linux 主机等设备即为 我们的 LAN 的部分了。因为我们最常使用的还是LAN,( 即使我们从家中连上 Internet,其实也是先连上 ISP 的 LAN ),所以这里我们主要讨论的还是以LAN为主。

· WAN:由 LAN 再延伸出去更大的范围,比如整个城市甚至整个国家,这样的网络我们称为广域网 (WAN、Wide Area Network ),所以,简单的说,很多的这样的架构的 LAN 凑在一起,就称为广域网络啦!

· Internet:就如同上面提到的,Internet 是将所有 WAN 与 LAN 连结起来的一个接口而已!由于没有专人维护,所以说, Internet 是一个最没有王法的地方了,你可以在 Internet 上面联机到任何地方去或进行任何事情!

· Intranet:最早出现的名词是 Internet,然后人们将 Internet 的概念和技巧引入到内部的私人网络,可以是独立的一个 LAN 也可以是专属的 WAN ,于是就称为 Intranet 了。它们之间的最大分别是:开放性。Internet 是开放的,不属于任何人,只要能连接得到您就属于其中一员,也就能获得上面开放的资源。相对而言,Intranet 则是专属的、非开放的,它往往存在于于私有网络之上,只是其结构和服务方式和设计都参考 Internet 的模式而已。 所以,简单的说,我们那个小小的 LAN 也可以视作是一个小型的 Intranet 呢!

· Extranet:Extranet 算得上是针对 Intranet 而延伸出来的概念。既然 Intranet 是指内网络部而言,那么 Extranet 则指外部的网络了。Extranet 通常是企业和 Internet 连接以向公共提供服务的网络。不过﹐这并非是单纯根据物理或逻辑位置来定义,主要是以连接的形式和功能来区分。例如某个外部网络,如果单纯的透过网络来连接我们的 Extranet 或 Intranet ,那它只是一个毫不相关的外部个体而已。但是,如果我们用 VPN 或其它信任形式将对方连接起来,那么对方也可以属于 Extranet 或 Internet 的部份。

  关于 Internet/Intranet/Extranet 的观念,我们再引用 ZMAN 兄的话:『举例来说,假设我的公司有台北台中高雄上海等分公司 ,将这些公司连在一起然后属于我公司内部使用的网络,就叫 INTRANET !我的观念是不一定非用INTERNET(VPN)连用X.25或FRAME RELAY或专线应该都算在内,重点在于属于我公司内部使用的网络服务的对象是公司内部员工,如果我的上游供货商或下游协力厂商甚至是客户需要进来我的INTRANET存取资料,联机的方式当然很多(拨接,专线,INTERNET) ,认证及安全性也很重要 ,这样子的网络我们叫它EXTRANET ,重点在于服务特定外部对象进来INTRANET ,而INTERNET的服务对象就是无限定的,譬如说你无法预估谁会来看你的网站或寄MAIL给你 』

联机方向:

  那么现在来想一想,我们是怎样由内部的 Intranet 连上 Internet 的呢?!如同上面的图标一般,如果我们目前在 Linux PC3 这部工作站上面,那么我们的资料怎样经由网络传送出去呢?基本上,需要有这些步骤才行:

1. Linux 核心必须有支持网络卡:

由于 linux 系统本身就有相当强大的网络支持度,所以我们上面提到的 OSI 模式上面使用者功能的四层在这里都不成问题!接着下来我们应该要探讨的就是『硬件』部分了。还记得我们在 编译核心 的时候有提到,真正在进行工作的是什么吗?!没错!就是『硬件』!而要让硬件正确的工作时,就需要核心的支持啦!因此,在一个打包好的资料封包想要进行网络传输时,最重要的工作就是让你的核心支持网络卡啦!
 
  如果你的网络卡预设并没有被核心支持,那么就必须要编译网络卡的驱动程序,并且在 /etc/modules.conf 写入驱动程序的模块,这样才能在一开机的时候被驱动呢!好了!那么我们的操作系统怎么知道网络卡这个硬件呢?嘿嘿!这就需要所谓的 Media Access Control ( MAC ) 这个东西啦!基本上,每一块网络卡都有独一无二的自己的网络地址,那个东西跟我们常讲的 IP ( 软件地址 )不一样呢!那称为 Hareware Address (硬件地址),是由六组16进位的数字组成的!例如我家里的网络卡地址为:『00:50:FC:22:9C:57』,这个硬件地址是在网络卡出厂的时候就已经被焊死在网络卡上面了!你没有办法修改的!这个东西在 Switch 及 DHCP 的时候很有用呢!你可以想象一下,这个东西就有点像是门牌号码啦!
 
2. 网络卡必须具有合法的 IP ( 软件地址, software address ):

  再来,由于我们目前的网络基础是由 IP ( Internet Protocol )进行沟通的( 由于这个 IP 是经由操作系统的软件给的,所以又称为 软件地址( software address ) ,跟刚刚上面提到的硬件地址并不相同,请特别留意!),什么是 IP 呢?就是由四组 8 bits 的数字组成的,例如 tw.yahoo.com 的 IP 地址为:202.1.237.21,这就是所谓的 IP 啦!那么还有所谓的保留 IP (或称为私有 IP ) ,这个是原先在规划 IP 的规则的时候就先预留的 IP 啰!这些 IP 并不能直接跟外界之 Internet 进行沟通!最常使用的就是 192.168.0.1 ~ 192.168.0.255 这一个 C Class 的网段啰!好了!既然要沟通的话,那么自然就有所谓的 network 网段内啰(我们常提到的『同一个网段』的概念)!那个 192.168.0 就是 network ,由于是 C class 的关系,( 注意,其 netmask 为 255.255.255.0 ),而起始段为 192.168.0.0 到最末段为 192.168.0.255 ,而这个最后一个末段的 IP 就称为 broadcast !这四个东西: IP, network, broadcast, netmask 在规划一个网络卡的时候是相当重要的参数!千万不能设定错误呢!
 
3. 资料封包打包送出( TCP ):

  好了,也有了 合法 IP 地址之后,那么我们的资料就已经可以定位了,这个时候,当你要将你的资料传出去的时候,你的资料就需要经过打包,所以我们就会称为是『资料封包』,那么这个传输你的资料封包的协议我们称为 Transmission Control Protocol ( TCP ) 啰!这个 TCP 的内容除了你的资料之外,最重要的就是纪录了这个资料的来源 IP 与端口口 ( source, port ) 还有目的地的 IP 与 埠口 ( destination, port ),这样我们的资料就可以去寻找 IP 给他丢出去啰!
 
4. 经过节点、 Router 或 Gateway 主机:

  好了,由于我们是经由 Hub/Switch 进行连接的,所以我们的资料一定会经过这个节点才会传送出去!这个时候不禁要想一想, Hub 好还是 Switch 好?这两者有什么不同呢?其实最大的不同来自于『共享网络媒体』与『网络媒体对应』的架构上面!这点我们在后面会再提及。
 
  还有,当我们的 TCP 封包已经打包好了准备送出的时候,网络怎么知道如何传送这个资料封包呢?其实,就像我们去到陌生的国家需要有『地图』才能够『按图索骥』一般!在网络的世界里,必须要藉由 route table (路由表) 来取得 gateway 或 router 的地址,进而将资料传送到 router 上面去啦,其它的工作就是 router 那边的事情啰!而 router 接收了封包之后,就会再藉由 router 自己的 route table 来判断下一个该去的 router 主机~~一直重复这个动作,最后就可以到达目的地啦!( 请注意,如果两部互相传输的计算机是在同一个网域之内,由于同一个网域的主机均可以直接透过监听与沟通的动作来达到数据传输的目的,所以主机可以直接与主机相互沟通,而不需要 router 啰!当然你也可以想成你的主机就是你的 router 啦! )
 
5. 到达目的地:

  好了,藉由这么多的节点的传送,我们的资料封包由于 TCP 里头的目的地 IP 的规定,所以找到了正确的主机啰!这个时候这个主机就会将 TCP 封包解开,并且将资料读取出来!嘿嘿!完成传送啰!
所以,基本上我们在传送一个资料的时候,他的机制是挺复杂的,不过也可以想得很简单!就是:

1. 操作系统先依据软件给的 IP 来将资料打包成为待传送的封包,例如 TCP 封包,上面并记录了来源与目的的 IP 与 port;

2. 根据封包上面的目的地 IP 资料,并经由 本机上面的 route table 来取得下一个 router 的信息( 若在同一网域内,则 router 可视为本机的网络卡 ),然后将资料送到 router 上面去;

3. 重复 router 的行为,最后送到目的地端的 PC,而对方主机接收你的 TCP 封包!
  基本上就是这样,底下我们分别来谈一谈,那么上面这些基础步骤所需要注意的地方为何,其中最重要的就是 IP 的概念!这点请特别留意呢!

网络媒体的运作方式:

  开始来谈一谈网络的运作方式吧!底下我们以基本的 Bus (直线型总线) 联机模式来进行说明,如下面图标所示,虽然一般家庭网络最常见的联机模式为星形模式,不过基本原理上面还是与 Bus 布线模式相同的!而由于 Bus 模式较容易记忆与说明,所以我们底下选用比较好理解的 Bus 来进行说明吧!

网络媒体:

  先来谈一下什么是『网络媒体』,说穿了,最基础的网络媒体就是『网络线』啰,因为我们都是透过网络线来进行电子讯号的交流的嘛 ( 再次请您留意,这里是以网络线为例,当然网络媒体还有相当多的样式的!),好了,请注意的是,当所有的计算机要进行资料传递的时候,就是需要使用到这个所谓的网络媒体,而由于所有的计算机都连接在这个网络媒体上面,您可以将这个 Bus 的网络线当成是一个『共享媒体』啰!并且,这个共享媒体的传输限制为『单一时间点上面,只能有一部机器使用这个共享媒体』。

什么是物理广播(physical broadcast):

  好了,我们已经知道讯号是藉由网络媒体来进行传递的,而这个媒体在单一时间点上面仅能让一个机器使用!(1)那么各计算机怎么知道该时间点上面有没有其它的机器在使用呢?(2)还有,如果 PC1 与 PC2 要相互沟通的话,他们的讯号是怎样传输的,也就是说, PC1 怎么知道该讯号是要送到 PC2 呢?(3)此外,如果同一个时间里面有两部计算机以上同时使用这个媒体,会产生什么情况?底下我们就来谈一谈啰:

· 由于这个媒体 ( 就是网络线呦! ) 每个时间点上面仅能让一部机器使用 ( 这个时间可能是几千到几万分之一秒,很短的啦!),所以,为了确认当时在这个媒体上面没有其它的机器在使用,因此 PC1 会先发送一个信号到这个媒体上面去,假设当时 PC2 ~ PC5 都没有要使用这个媒体,那么 PC1 在知道没有人使用之后,就可以来顺利的使用网络媒体传送资料,这就是所谓最底层的『物理广播』了;

· 再来,如果 PC1 与 PC 3 同时都想要使用网络媒体呢?呵呵!这个时候,就要看是谁先传送出广播信息的,当然是先抢先赢,例如当 PC1 比 PC3 早送出物理广播信息,那么 PC3 就会先停顿,等 PC1 该次工作完毕之后,才会发送广播信息了!这个地方就要再次的强调了!由于先抢先赢,那么如果 PC1 的封包太大的时候,那其它的 PC 岂不是永远无法使用网络媒体来传输资料啰?因此,才会在 OSI 的资料连接层里面定义每个封包的大小及格式呀,如此一来,媒体的使用权才会比较平均一些啦!

· 上面的情况都还可以接受,但是如果万一真的不幸发生了 PC1 与 PC3 同时进行物理广播信息呢?那也不用太担心,因为既然这次发生了同时广播的状态,那么这两部机器均将不会进行资料传送,会等待一段时间之后才再次广播!而在等待的时间上面,是『在一段时间里面随机取一个时间点』来再次广播,由于是随机取样的,因此应该不太容易再造成同时进行物理广播的现象。万一真的不幸又同时物理广播,那么又会等待下一次….依序下去,好象超过 16 次以后,如果还真的很不幸(因为机率真的太低了)再次同时进行物理广播,那么就抱歉啦!您的网络媒体将瘫痪掉!不过也别担心,重新 reset 就好啦!

· OK!那么有没有同时发送封包的状况?当然有啦!现在你假设 PC1 到 PC5 的距离是很远(假设 100m 好了),那么当 PC1 与 PC5 发送出物理广播,提醒大家说要传送信息的时候,由于 PC1 与 PC5 的距离太远了,因此响应的时间比较长,那么这个时候可能就会造成误判,认为当时媒体上面没有任何的机器在传送资料,造成 PC1 与 PC5 同时传送出资料在媒体上面,这个时候就会发生所谓的『封包碰撞, collision』的情况了!因为网络媒体上面单一时间内仅能允许一个机器使用的嘛!封包碰撞可能会造成资料的损毁现象呢!比较麻烦啦!而为了避免封包碰撞的问题,所以目前网络上面都会使用一种称为 CSMS/CD ( Carire Sense Multiple-Access / Collision Detect ) 的技术来避免因封包碰撞造成资料损毁的问题!不过,由于选择的媒体不同,所以还是很有可能会造成碰撞的啦!

· 好了,那么假设 PC1 也经过物理广播了,也顺利的将封包丢出来到媒体上面传送了,那么他怎么知道资料要丢到 PC2 上面去呢?这就需要藉由 MAC 与 ARP 等等的咚咚来帮助达成了!ARP 我们等一下再提,而 MAC 刚刚已经提过了,就是网络卡的硬件地址,由于网络卡出厂的时候就有所谓的硬件地址,因此,只要硬件地址与软件地址能够相互配合,让封包可以知道要传送到哪一个硬件地址上面去,喝!那么封包就可以成功的送到 PC2 上头去啰!

软件地址到硬件地址

  好了,知道了网络媒体的定义,也知道网络媒体的使用方式了,那么再来自然就要提到网络世界里面常常提到的 IP 也就是软件地址这个玩意儿了!软件地址是我们使用软件来给予的一个定位的咚咚,而这个所谓的 IP 是在 OSI 的第三层,也就是网络层里面的定义。而我们也知道在网络媒体上面资料的传递主要还会查看所谓的 MAC 这个硬件地址,好啦!那么软件地址跟硬件地址怎么对应起来呀?!既然实际上是使用 MAC 来接收资料,但是我们又是以 IP 来做为门牌号码,呵呵,所以就需要一个对应的协议啦,好沟通这两个玩意儿!那就是 ARP ( Address Resolution Protocol ) 啰!几乎操作系统里面都会有个 ARP table ,用以记录 IP 与 MAC 的对应情况!

· 在首次进行数据传输的时候,由于 ARP table 当中没有相关的资料,这个时候您的主机就会对『同一网域的全部计算机进行逻辑广播( logical broadcast )』,(关于什么是『同一网域』的定义,等一下我们在 IP 基础内会再次提及) 请注意呦!

o 刚刚的『物理广播主要是针对在同一个物理网段内的共享网络媒体之动作』;

o 而『逻辑广播主要是针对网络层的软件地址而言来进行的动作!』

  那么如果查询到了主机所需要的软件地址之后,主机的 ARP 表就会自动的学习起来,将软件地址( IP ) 与硬件地址( MAC )之对应给他写入 ARP 当中!

· 而在后续的数据传输的时候,主机就会先去寻找 ARP 表中的资料:

o 如果 ARP 有纪录的话,那么资料就会直接的传送到该目的地去,而不会进行『逻辑广播』;

o 如果 ARP 没有纪录的话,那么主机就又会对全部的同一网域内的计算机进行『逻辑广播』了!

· 这里就有一点很奇怪啦,既然说『物理广播』是针对 MAC ( 第一、二层 )而『逻辑广播』是针对软件地址( 第三层 ),偏偏真正在进行网络工作的是网络媒体还有 MAC 这个咚咚,怪了!那么当进行逻辑广播的时候,底下的层级都不需要动吗?好象跟 OSI 协议里面不太一样呦!呵呵!其实是这样的!当进行逻辑广播时,主机发送出去的信息中的会含有目的地的 MAC 是 FF:FF:FF:FF:FF:FF ,也就是所有的网络卡都会接受该封包啦!而当其它主机接受该封包之后,会进入第三层去分析软件地址的要求,如果该要求的软件地址不是自己的,就会将该封包丢弃,如果是自己的,那么就会响应该封包,以将自己的 MAC 传送给原来发送信息的主机啦!

· 要知道目前的您的主机的 ARP 纪录,可以使用 arp -a 来查看呦!

TCP/IP 流程

  基本上,在 OSI 最底下的三层网络功能的传输行为,大概都已经定义好了,我们的网络媒体与 MAC 及软件地址之间都可以正确的去工作!因此倒是不用太去担心!呵呵!所以我们只要知道其原理就好了。接着下来的 TCP 封包最主要的也只要知道 IP, port, messages( ACK, SYN… ) 这样即可!这样一来, TCP 可以整合来自上层的各个协议,而 IP 用来决定路由与传送的途径,呵呵!就可以知道能不能到达目的地啦!

网络媒体的选择:

网络线的等级:

  嗯!现在我们知道网络媒体是很重要的!那么如何来选择一个好的网络媒体呢?先来看一看最常用的到 RJ-45 网络线好了!目前 RJ-45 网络的线等级,对于一般家庭或小型企业使用者而言,可以到达 CAT5 这个等级就很好了!嗯!?网络线也有等级之分?是呀!刚刚不是说过了吗?那个网络媒体是很重要的,而由于网络媒体中跑的讯号其实就是电子啦!由于电子讯号在行进的时候会产生一些电磁效应( 这里指的是 cross talk ),这些 cross talk 就会影响整个传输的效能!为了避免 cross talk 的干扰,人们想出了很多的方法来解决他!有所谓的『双绞线, Twisted Pair』、或提供屏闭『Shielded, STP』等功能,来让网络线的 cross talk 干扰降低,并提升整体的网络传输速度负载量!而依据给予的不同的屏闭等级来将网络线分级!目前最常见的应该就是 CAT5 这一级啦!最大的传输量可以到达 100 Mbps 呢!所以,请注意『在选择网络线的时候,至少您的网络线等级要达到 CAT5 才行!』,否则即使您的网络卡可以到达的传输量为 100 Mbps ,但是网络线只有 10 Mbps 时,呵呵!那么最大的传输量将会仅成为 10 Mbps 呦!

并行线与跳线

  谈完了网络线的等级之后,接着下来我们来谈一谈所谓的『并行线』与『跳线』吧!刚刚提到了,在网络媒体当中跑得是电子讯号,由于电子讯号需要是一个回路才能通(例如正极接负极),所以说这些讯号自然就需要成对啰!好了,那么由于设备的不同,因此网络线的接脚也会跟着不同的!举个例子来说,在 Hub 与 网络卡 之间的网络线(不谈 UpLink 孔时),使用的是常见的并行线,但是在网络卡与网络卡直接相连时,就需要使用不同接脚的『跳线』啦!由于具有两种接头,一般而言,我们将他分成 568A 及 568B 两种接头,这两种接头的 8 条缆线排列顺序为:

  如果同一种接头( 不论是 568A 或 568B )接在一条网络线上面,就称为并行线,而两种接头同时接在同一条网络线上面,那就称为『跳线』啦!

Hub 与 Switch

  在前面我们提到了网络媒体的型态,使用的是 Bus 的型态,那么如果是星形模式的话,就需要 Hub 或 Switch (中文称的集线器与交换器)这种网络媒体了!Hub 还比较好理解,基本上,他仅是将所有的网络线给他连接在一起,并没有考虑到其它的因素!因此,每部计算机只要连上 Hub 之后,感觉上就好象连上 Bus 一样啦!那么『瞎米系』 Switch 呀!?为什么 Switch 通常比 Hub 要贵上非常的多呢?他们的功能有哪里不同?我们先不提较高阶的不同点,最基础的不同在于 Switch 多了一个可以记录 MAC 与 port 的 table 啦!那是什么呢?这样说好了,当您的网域之中有一部计算机在进行物理广播的时候(请注意,物理广播主要是以 MAC 为传递的对象):

· 如果使用的连结器是 Hub 的时候,那么所有连接到这部 Hub 上面的主机都会接到该广播的封包;

· 而如果使用的是 Switch 时,由于上面的 table 已经记录了 MAC 对应 Port 的资料,所以该封包将会『直接』经由该 port 来送出去给目的地主机!

  由于这样的关系,因此在进行物理广播的时候,就已经去除了可能产生封包碰撞的状态了!因此上, Switch 与 Hub 所能承受的流量或许相同,但是 Switch 却可以达到比较好的传输功能,用在大型的网域当中,嘿嘿!当然是 Switch 比较棒啦!这也是为什么 Switch 会比较贵的原因呀!更简单的来说, Hub 仍然属于『共享媒体』的一种,然而 Switch 几乎可以看做是『非共享媒体』了!更详细的 Hub 与 Switch 功能的讨论可以在 这里 找到。不过如果是只有小猫两三只的我们这种家庭式的内部网络呢?呵呵!简易型的 Hub 就很够了啦!不需要买到这个高档的 Switch 说 ( 纯粹个人观点啦!)。

传输单位

  谈个轻松一点的!那么 10/100 Mbps ( Mega- bits per second )是什么东西呢?怎么大家都说我的网络卡是 100 Mbps ,但是我只能以最高约 12 MBytes 的速度在 Intranet 当中工作!?嘿嘿!别紧张,那么 100 Mbps 是 Mbits !还记得网络的资料量计算吗?不晓得也没有关系,可以直接告诉你:
1byte = 8bits

  了解了吗?没错,由于网络的速度在计算的时候主要是依照讯号来设计的,而电子讯号只有 0 跟 1 呀!所以自然就选用最简单的 bit 来计算了!因此,目前在广告这些网络的速度的时候,都是以 bits 来计算的,但是我们在硬盘的计算方面则是以 bytes 来计算的,呵呵~千万记得,不要被迷惑了呢!因此,那个标榜 512/64 Kbps的网络速度,呵呵,最大的实际 byts 为: 64/8 KBytes 啰!这是理论最大速度啦,所以正常的速度约在 45~50 KBytes 之间啰!了解了吗?!
返回页首


———————————————————————————————

网络卡与驱动程序

  结束了网络媒体的选择之后,接着下来自然就是网络卡的选择啰!网络卡需要注意什么事项呢?

· 驱动程序:

  还记得我们在 编译核心 的时候有提到,真正在进行工作的是什么吗?!没错!就是『硬件』!而要让硬件正确的工作时,就需要核心的支持啦!因此,在一个计算机想要连上网络时,最重要的就是你的网络卡 ( Network Interface Card, NIC ) 是否被正确的激活了呢?!好了,那么一个网络卡要被正确的激活时,需要干嘛?没错!就是需要加载适当的驱动程序啰!目前 Linux 预设的核心当中已经编译好了相当多的网络卡模块了,你可以到 /lib/modules/`uname -r`/kernel/drivers/net 底下去看一看即可知道有没有你的网络卡的模块啦!好啦!那么如果你的网络卡并没有被正确的激活呢?!怎么办!?没关系,还可以使用模块挂载呀!可以写入 /etc/modules.conf 里头!这样一来就可以让你的网络卡正确的被激活啰!

· Media Access Control, MAC:

  前面就提过了,在网络卡出厂的时候,其实就已经焊上了一个独一无二的 address 了!这个即是所谓的 Hardware Address 啰!而在我们的系统上面, Linux 就由这个 Hardware Address 与下一单元我们要强力介绍的 IP 进行资料的传递与转换,让整个网络卡硬件可以正确无误的工作啦!这个硬件地址就是所谓的 Media Access Control ( MAC ) 这个东西啦!他是由 六组16进位的数字组成的!例如我家里的网络卡地址为:『00:50:FC:22:9C:57』,这就是我的网络卡 Address 啰!千万不要小看这个东西,他在 Switch 及 DHCP 的时候很有用呢!如果稍具有一点想象力,你可以想象一下,这个东西就有点像是门牌号码啦!无论如何,在网络卡这一个地方,你需要特别留意这个 MAC 的视察方式,与驱动程序的加载方式!!

· 网络卡选购要点:

  基本上,网络卡的选购只要『不要太麻烦的芯片组』就可以啦!尽量选择目前新的 PCI 界面的网络卡,而且强烈的建议使用螃蟹卡即可,但是仍然是有例外的:

1. 预计大型网站的架设:如果你是想要使用你的 Linux 来帮你架设大型主机的话,例如每天实时上线人数都可达到上百人的大型网站,这个时候就得要好一点的卡啦!因为好的网络卡在资源的分配以及其它的资源配比方面会比较完善,不容易造成网络当机或者是死亡!所以买一块好一点的 10/100 Mbps 的 3Com or Intel 之类的网络卡,是千万省不得的!

2. 一般家用或者是小流量的网站:如果你的野心没有这么大,而是希望可以好好的学习 Linux 而已,并且使用的是 512 Kbps 的 ADSL 拨接系统,呵呵!那么太好的网络卡对你一点帮助也没有啦!这个时候便宜的 200~300 块的网络卡( 即是所谓的螃蟹卡 )就可以用得很开心啦!我目前也都是使用螃蟹卡在我的宿网上面呢!
返回页首


———————————————————————————————

IP 观念: IP, network, netmask, broadcast, gateway, ARP协议,

  接着下来要跟大家介绍的是 IP 这个东西,这的东西真是让人要爱又怕呀!因为没有了他,所有的网络都是没有用的咚咚!嗯!通过了网络卡的安装与驱动程序的加载之后,你的系统已经可以取得 MAC 并且也可以激活 NIC ( 网络卡 ) 了,好了,那么接着下来自然就是要让你的计算机的门牌号码被 Internet 上面其它的门牌号码认识啰!这个时候就必须要有所谓的 Internet Protocol, IP 这个咚咚了!这个 IP 是所有网络基础里面最基础的东西,如果没有了他,那么网络将不再是网络了!

· IP 的组成:

  众所皆知的,IP 是由四组 8 bits 的数字所组成的,最小是 0.0.0.0 ,最大是 255.255.255.255 ,可以这样来看:

  就是这样的一个模样!由于原本是二进制的方式来计算的,为了适应人类的思考方式,所以经过十进制的表示之后,自然就是由 0 ~ 255 啰!好啦!从刚刚前面我们提到的『广播』的观念来看,假设您的环境是『网络媒体共享』的环境且整个网域之中都以 IP 直接互相连接的话,那么在第一次执行『软件广播』、或是因为主机找不到 ARP 表对应的 MAC 而执行的『软件广播』、抑或者是在『物理广播』的传送与监听接段,哈哈!『ㄟ西郎!』因为每发出一个封包可能需要 255×255x255×255 部计算机同时响应!那么很可能就会造成严重的封包碰撞或者是网络停顿的状态!因此,设定 IP 的朋友们很聪明的将整个 IP 段分成 Network + Host ( 网域 + 主机 ),在同一个 Network 当中,每一个 Host 都必须是独一无二的!何解?我们来以一个 C Class 的例子来谈一谈好了!假设是 192.168.0.0 ~ 192.168.0.255 这个例子来谈:


  前面的三组数字称为 network ,而最后面的一组数字就被称为是 host 啰!他有什么特异功能呢?还记得软件广播与 ARP 表的说明吗?对啦!当你的主机发出要求讯息到你的网络媒体上面时,由于是网络层的要求了,因此在讯息当中显示的目标 MAC 为 FF:FF:FF:FF:FF:FF,所以其它主机会先接收该封包,并且检验里面的 IP 要求,如果不是在同一个网段内的,就会将封包给他丢弃啦!而如果是同一网段内的话,就会给予响应!也就是说『如果在同一个网段之内,所有的 IP 将不需要透过 router 而可以互相直接沟通!』在上面的例子当中,当我们以 192.168.0.0 ~ 192.168.0.255 的 IP 的计算机连在一起时,他们将可以直接进行资料传送!所以呢,呵呵!当然就是很方便啰!( 请注意,在这个系统当中, network 不可变,而 host 则是不可相同!否则相同的那两个 IP 将无法无法联机 ) !那么目前我们将整个 IP 简单的方类成为三个网段,分别设定为所谓的 A, B, C class :

  发现了吗?对啦! A Class 开头是0,所以起始的数字就是 0~126, B Class 是 10 开头,所以就是由 128-191,同理得:

· 因此,我们刚刚那个 192.168.0.0 ~ 192.168.0.255 就是 C Class 啰!

· Netmask :

  在所有的 IP 讯息当中,最不容易搞懂得就是 netmask 啦!为了不造成大家学习上面的困扰,这里我们仅提出简单的『理解想法』来提供 Netmask 的用途,至于更详细的理论,请务必前往 Study Area 取经呦!

  就如同刚刚我们提到的,既然 A Class 前面一个数字是固定死的,后面三个数字是可变动的,那么也就可以想成是,前面一个数字已经被用光了 ( 全部为 1 ) ,而后面的数字还保留者 ( 全部为 0 ),所以就有点像这样:


  好了,所以简单的来说,当使用 A Class 时,我们怎么知道他是 A Class 呢?当然要配合 netmask 的说明啰!那么假设 10.0.0.0 这个网段好了,他就可以想成是: 10.0.0.0/255.0.0.0 这样的表示方式,也就是 IP/Netmask 的表示方式!好了,那么刚刚提到的 C Class 的 192.168.0.0 呢?我们要设定他是 C Class 的话,呵呵!那么自然就是 192.168.0.0/255.255.255.0 这样的表示方式啰!好啦!那么由于 A Class 是由八个 1 所组成的,而 C Class 的前面 24 的数字也都是 1 ,为了省麻烦,我们还有另一种表示的方法: 192.168.0.0/24 !嘿嘿!很好记吧!反正前面 24 个数字是固定的嘛!就这样,所以 A Class 就是 10.0.0.0/8 啰!很容易记忆吧!

· Network 与 Broadcast :

  好了,刚刚我们也提到要分辨是否为同一个网段 ( network ) 还需要 netmask 的帮忙,那么记录了 netmask 有什么好处呢?!还记得刚刚我们提过了吧,在『同一个网段当中,各主机将可以直接进行资料沟通』对吧!假设在一个具有『共享媒体』的环境中,当我的计算机有资料要传送出来的时候,我就会在『同一个网段』的计算机传送一个讯息,说『喂!我有资料要送出来啰!你们停下来听一听,等我送出去之后你们再继续你们的工作!』呵呵!没错,这就是所谓的『硬件广播』方式传递啦!而如果您常常需要使用到『软件广播』时,那么这个 netmask 假如是 255.255.255.0 这个 C Class ,而我们依旧是使用 192.168.0.0 这个东西当作例子的话,那么不难想象的到,我的封包要传送出去,就得向 255 个计算机查询并等待响应,光是这个查询的时间可能就要造成这两百多部计算机停顿下来听你的封包的结果,唉~速度太慢了吧!!尤其是如果是 B Class 的环境呢?嘿嘿!就有 255*255 部计算机要停顿下来监听你的需求…. 哇!这样怎么可能造成高效率的网络环境呢?!所以啰『网络布线模式(媒体共享与否)』与『netmask 的设定』就成了重要的课题了!

这里请特别留意:

  network  :同一个网段里面,HOSTID 都为零的地址;

  broadcast :同一个网段里面,HOSTID 都为 1 的地址!

  基本上,如果是便于记忆的话,您可以想象一下, network 就是同一网段的第一个 IP 地址(因为 hostid 都为 0 ), Broadcast 则是最后一个 IP 地址(因为 hostid 都为 1 )。

  那么为了解决一下『软件广播』的范围,( 由于如果软件广播的响应数量变少了,所以网络效能会变的比较好一些!) 我们可以再进行 Subnet 的切割呀!好了,假设我要将刚刚我的 192.168.0.0 在切成两个子网域呢?可行吗?当然可行啰!刚刚不是说过吗?我们的 netmask 可以作为切割网域时候的确认用途,嗯!这个时候如果将已将占用了 24 个 bits 的 network 在加一个 bit 的话,成为 25 bits ,那么会变成什么呢?

  这样一来,由于多花费了一个 bit 给 network 了,所以 network 分别是 192.168.0.0 及 192.168.0.128 这两个

  呵呵!那么一来,当您的主机要进行『软件广播』的时候,接受该讯息的计算机数将可减少一倍!哈哈!这样子一来区域内的网络流量就更棒啰!OK!这个观念给他用在实际的社会上,我们的 ISP 不是常常在说『固定制 IP 的给八个固定的 IP 』吗?呵呵!那个就是在细分成最后面的三个 host 啦!也就是 netmask 是 29 啰

  11111111.11111111.11111000

  因此 host 最大就是 111 最小就是 000 ,转成十进制就是 8 个啦!( 0 ~ 7 )这样说不知道您了不了呢?

· Gateway:

  再来又要头痛了!那么什么是 gateway 呀!?说的简单一点:在同一个 network 底下,各 IP 可以直接进行沟通,但是在不同的 network 底下,则需要藉由 gateway 来进行资料的传递!因此,当您的主机发现该封包的 IP 不在同一个网域内时,就会自动的将封包传送到 gateway 上面去啦!而由于你的主机与 gateway 是可以直接进行沟通的,所以 gateway 与 你的主机『一定需要在同一个 network 当中』,这个就没有问题了吧!!

· 预留 IP ==> 保留 IP 与内部循环网络 :

  还有一点也是众所皆知的,就是目前的网络的 IP 网段越来越少了!那怎么办?!呵呵!别担心,当初规划的时候为了预防这个问题,已经有规划出几个网段来作为『内部网络的预留 IP 』之用,那么这些 IP 网段有哪些呢?依旧分成三个 Class ,分别是:

o A Class:10.0.0.0 – 10.255.255.255

o B Class:172.16.0.0 – 172.31.255.255

o C Class:192.168.0.0 – 192.168.255.255

  由于这三个 Class 的 IP 是预留使用的,所以并不能直接作为 Internet 上面的连接之用,不然的话,到处都有相同的 IP 啰!那怎么行!网络岂不混乱?所以啰,这三个 IP 网段就只做为内部网域的 IP 沟通之用,也就是说,他有底下的几个限制:

o 私有地址的路由信息不能对外散播 (就是内部网络咯);

o 使用私有地址作为来源或目的地址的封包,不能透过 Internet 来转送 (呵呵!当然啰!不然网络会混乱);

o 关于私有地址的参考纪录(如DNS),只能限于内部网络使用(一样的原理啦!)

  这个预留的 IP 有什么好处呢?呵呵!由于他的私有路由不能对外直接提供信息,所以呢,你的虚拟网络将不会直接被 Internet 上面的 Cracker 所攻击!但是,当然啰,你也就无法以保留 IP 来『直接上网』啰!所以相当适合一些尚未具有实体 IP 的企业内部用来规划其网络之设定之用!否则当你随便指定一些可能是实体 IP 的位置来设计你的企业内部的网络设定时,万一哪一天真的连上 Internet 了,那么启不是可能会造成跟 Internet 上面的 IP 相同了吗?!这可不是闹着玩的,要整个将你原先规划的 IP 网段整个重新调整过呢!哈哈!累死了!那么万一你又要将这些保留 IP 送上 Internet 呢?呵呵!这个简单,设定一个简单的防火墙加上 NAT ( Network Address Transfer ) 主机设定,你就可以透过 IP 伪装(不要急,这个在后面也会提到!)来使你的保留 IP 的计算机也可以连上 Internet 啰(虽然不是真的直接,但是很像『直接上网』呢!)

  好了,那么除了这个预留的 IP 网段的问题之外,还有没有什么其它的怪东西呢?呵呵!当然是有啦!不然我干嘛花时间来唬 XX 呢!?没错,还有一个奇怪的 A Class 的网域,那就是 lo 这个奇怪的网域啦 ( 注意:是小写的 o 而不是零喔! )这个 lo 的网络是当初被用来作为测试操作系统内部循环所用的一个网域!简单的说,如果你没有安装网络卡在你的机器上面,但是你又希望可以测试一下在你的机器上面设定的资料到底可不可以被执行,这个时候怎么办,嘿嘿!就是利用这个所谓的内部循环网络啦!这个网段在 127.0.0.0/8 这个 A Class ,但是预设的主机 ( localhost ) 的 IP 是 127.0.0.1 呦!所以啰,当你激活了你的 WWW 服务器,然后在你的主机的 X-Window 上面执行 http://localhost 就可以直接看到你的主页啰!而且不需要安装网络卡呢!测试很方便吧!此外,你的内部使用的 mail 怎么运送邮件呢?例如你的主机系统如何 mail 给 root 这个人呢?嘿嘿!也就是使用这一个内部循环啦!当要测试你的 TCP/IP 封包与状态是否正常时,可以使用这个呦!( 所以哪一天有人问你:嘿!你的主机上面没有网络卡,那么你可以测试你的 WWW 服务器设定是否正确吗?这个时候可得回答:当然可以啰!使用 127.0.0.1 这个 Address 呀!

  好啦!那么说来的话,一组成功的网络设定需要哪些资料呢?呵呵!就是:
1. IP;

2. network;

3. netmask;

4. broadcast;

5. gateway

  没错!就是这些资料!如果是 ADSL 拨接的话,这些资料都是由 ISP 直接给你的,那你大可放心的直接使用,但是如果是固定制(如学术网络)的话,那么就得使用上面的设定啰!缺一不可呢!以 192.168.0.0 这个 C Class 为例的话,那么就是:

1. 192.168.0.1~254;

2. 192.168.0.0;

3. 255.255.255.0;

4. 192.168.0.255;

5. 自订(依你的区网设定而异)
返回页首


———————————————————————————————


TCP 封包概念: 防火墙, TCP_Wrappers,

· TCP 封包:

  说完了 IP 之后,自然就不能不提 TCP/IP 这个架构底下的 TCP 封包啰!这个 TCP 是 Transmission Control Protocol 的意思,字面上的意思就是传输控制协议啦!嗯!还真是不错的字眼!这个 TCP 就是实际在『传送资料封包』的协议啦!刚刚我们有提到了 IP 这个东西嘛!那么我们怎么将资料寄到其它的地方去呢?很简单,就是系统先将我们的资料打包,然后在这个包裹的上面写上了『来源 IP 与 埠口』及『目的地 IP 与 埠口』,有了这个 IP 门牌,及 埠口 楼层,我们就可以将资料封包正确无误的寄到目的地啦!所以啰,要有 TCP 自然就必须要有 IP (因为 TCP 上面需要记录 IP 来源与目的地啊!)而要有 IP 就必须要有网络卡(必须要有这个东西才行嘛!)然后要网络卡正确的工作又需要正确的驱动网络卡!这样一层一层的下来,嘿嘿!就不难解决我们的网络问题啦!(当然啰, TCP 并不是这么简单的东西,不过我们这里又不是再开班授徒!所以就讲得很简单啦!有兴趣的赶紧买本书来看先!)

· 端口 ( port ):

咦!刚刚提到了 TCP 里面怎么有个陌生的名词?『埠口』?呵呵!其实说穿了,也没有什么了不起的,你可以想象成 IP 就是某家银行,而埠口就是银行里面的各个窗口啦!所以当 TCP 的封包进入到目的地 IP 主机之后,还要视当初送出这个 TCP 封包的时候,我们需要这个 TCP 封包送到那个埠口去!这是因为每个端口口的功能都不一样!最常见到的埠口有这些:

21-20:FTP

22 :SSH

23 :Telnet

25 :SMTP ( e-mail )

80 :WWW

110 :P OP3 ( e-mail )

  所以啦,当我们将资料丢到目的地主机上面的时候,我们的资料并不是乱丢的啦!而是要丢给实际在负责该封包解析的窗口(埠口)才是呢!那么这些服务对应的埠口在哪里可以查到呢?嘿嘿!你的主机里头就有档案可以负责翻译啦!那就是鼎鼎大名的: /etc/services 这个档案啦!马上给他使用 vi 进入看一下(像不像在上课! ^_^”"),当我们激活一个服务的时候,有可能该服务是直接以 port 来激活的,也有可能是经由 /etc/services 对应的 port 号与服务名称来比对的!这个可能依照写作之作者的不同而异!无论如何,我们要查询一个服务的基本埠口时,就可以藉由查询此一档案来简单的得知啰!

· 防火墙概念:

  好啦!那么提到了 TCP 就不能不稍微聊一聊甚么是『 Firewall 』呢?简单的来说,最简易的 firewall 就是藉由『分析 TCP 封包,并经由一些既定规则,来将不想让某些 IP 或者是某些埠口的封包踢掉!』举个例子来说,我们都知道 Telnet 似乎不怎么安全,而由上面的埠口看到, telnet 是 port (埠口) 23,那么只要有任何的 TCP 封包带有 port 23 的要求时,你就将他挡到门外!嘿嘿!这就可以称作是防火墙啦!这个部分我们会在后头的 iptables 在详细的说明一下!

· TCP_Wrappers:

  除了 TCP 分析的 iptables 软件之外,我们可以藉由相当简单的 TCP_Wrappers 来分析 TCP封包呢!这个功能就更简单啦!单纯的使用 /etc/hosts.allow 及 /etc/hosts.deny 这两个档案的设定值来解析 TCP 封包的规则,并将其设定抵挡原则,嘿嘿!马上就具有最简易的防火墙机制啰!这部份我们也会在后续继续提及!

Gateway 与 Router :

Gateway 与 Router 也是节点当中相当重要的一环,他的主要工作是:

· 将两个不同的网域 ( network ) 进行转译的功能;

· 制作路由 ( route ) 的功能。

  刚刚在上头我们知道在同一个 network 当中,资料可以在两个 IP 之间直接沟通,那么如果不在同一个 network 呢?举个例子来说,如果在上面的图标当中,那个 PC1 的 IP 是 192.168.0.1 而 PC2 的 IP 是 192.168.1.1 的话,而且两者之间并没有使用一些通讯协议,单纯只以 TCP/IP 来沟通时,由于位在不同的网段,所以正常状态下『两者之间是无法直接联机的』,这个时候就必须要透过转译器 ( Router ) 的协助啦!这个转译器的功能其实不只如此,他还可以转译不同的操作系统的通讯协议等等的,不过这里我们仅简单的讨论一下他的功能之一而已,Router 就是负责沟通两个或者是多个不同的网段的封包连接啦!所以,如果你的网络切的很细时,由于主机与 router 需要在同一个网域里面,呵呵,这个时候就得需要很多的 router 来进行不同 network 之间的连接了,否则不同的 network 怎么连接~? Linux 目前也可以用来作为 Router 呦!这个在后续我们提到 Router 的时候再来说明!

  好了,知道不同的 network 之外,来讨论一下,什么是『路由』呢?路由就是『让你的资料封包可以经由 route table 找到下一个要去的 IP 地址』。简单的以我们系上的网络架构来进行说明,我的工作机假设 IP 是 140.116.44.125 好了,那么我的封包如果是要传送给 140.116.44.202 时,由于我们系上是一个 C Class 的网域,所以 125 <–> 202 可以直接传递!但如果我的资料封包是要送到 tw.yahoo.com ( 202.1.237.21 ) 去呢?这个时候我的 125 就会先判断我的 路由表 ( route table ) 看看预设的网关 ( gateway ) 是哪一部计算机,然后他会将 资料封包传送到该 gateway 主机上去,而 gateway 主机在经由判断他自己的路由表,来判断这个资料封包下一个节点要传送到哪里去!?这一传再传最后才能到达 tw.yahoo.com 这部机器上!

  因此, route table 是相当重要的,你的 gateway 就相当的重要啰!因为你的所有的非 network 的封包都是经由 gateway 送出去的,万一你设定 gateway 错误时,嘿嘿!那么自然就无法将你的资料封包 正确的传导出去啰!这是目前在设定 网络参数 当中最容易被搞错的地方啰!

其它讨论:何为实体 IP, 保留 IP, 浮动式 IP, 与动态 IP

· 实体 IP:就如同前面的 IP 观念里头提到的,在网络的世界里,为了要辨识每一部计算机的位置,因此有了计算机 IP 地址的定义。一个 IP 就好似一个门牌!例如,你要去微软的网站的话,就要去『 207.46.197.101 』这个 IP 位置!这些可以直接在网际网络上沟通的 IP 就被称为『实体 IP 』了。

· 保留 IP:不过,众所皆知的,IP 地址仅为 xxx.xxx.xxx.xxx 的资料型态,其中, xxx 为 1-255 间的整数,由于近来计算机的成长速度太快,实体的 IP 已经有点不足了,好在早在规划 IP 时就已经预留了三个网段的 IP 做为内部网域的保留 IP 之用。这三个预留的 IP 的网段分别为:

o A Class:10.0.0.0 – 10.255.255.255

o B Class:172.16.0.0 – 172.31.255.255

o C Class:192.168.0.0 – 192.168.255.255

  不过,由于是内部的保留 IP ,所以当您使用这些地址的时候,当然是有所限制的,限制如下:

o 私有地址的路由信息不能对外散播

o 使用私有地址作为来源或目的地址的封包,不能透过Internet来转送

o 关于私有地址的参考纪录(如DNS),只能限于内部网络使用

  由以上的限制我们可以知道,保留 IP 仅能使用于内部网络(或者说是局域网络内),而无法直接与外部的 Internet 进行资料的流通。如果需要连上 Internet 时,就必须要使用一部具有 NAT 功能的主机(或者是 IP 分享器)来作为封包沟通的转换站了。但这也给我们架设IP网络造成很大的方便,比如:

  即使您目前的公司还没有连上Internet﹐但不保证将来不会啊。如果使用公共IP的话,如果没经过注册,等到以后真正要连上网络的时候,就很可能和别人冲突了。也正如前面所分析的,到时候再重新规划IP的话,将是件非常头痛的问题。这时候,我们可以先利用私有地址(保留 IP )来架设网络,等到真要连上intetnet的时候,我们可以使用IP转换协议,如NAT (Network Addresss Translation)等技术,配合新注册的IP就可以了(不过这可需要大学问喔)。

· 固定 IP 、动态 IP 与浮动式 IP:基本上,这两个东西是由于近来网络公司大量的成长下的产物,例如,你如果向中华电信申请一个商业型态的 ADSL 专线,那他会给你一个固定的实体 IP ,这个实体 IP 就被通称为『固定 IP 』了,因为你每次藉由这一个 ADSL 上网时,你的 IP 是不变的。而若你是申请计时制的 ADSL ,那由于你的 IP 可能是由数十人轮流使用,因此你每次重新开机上网时,你这部计算机的 IP 都不会是固定的!于是就被称为『动态 IP』或者是『浮动式IP』。基本上,这两个都是『实体IP』,只是网络公司用来分配给用户的方法不同而产生不同的名称而已!(注:如 Giga 的拨接式固定 IP 并不是固定制的 IP 呦!还是属于浮动式类型的 IP 啦!只是每次分配的 IP 都是同一个而已!)






梁山伯与祝英台的真挚,罗密欧和朱利叶的忠贞:
原来一个是传说,一个是小说。
牛郎和织女的凄美,白雪公主与白马王子的浪漫:
竟然一个是神话,一个是童话。
《泰坦尼克》沉没了,《魂断蓝桥》陨落了,《乱世佳人》在飘摇,《人鬼情未了》也已经离逝了。。
如今的这个世界不再有什么故事,有的只是赤裸裸物欲的现实。。
在这个物欲横流的世界,夏娃们在大口的吞噬着一切可以消化的“食物”——钱,金子,跑车,洋房。。。。。

我觉得这么形容是对狗这种动物的亵渎。
在这个道德沦丧,人性泯灭的世界里。。。。
上帝死了,众神在堕落。。

最后青蛙问道:“为什么?我告诉过你我是一位美丽的公主,会与你共度一个星期并让你为所欲为。你为什么还不愿吻我?”
  男孩说道:“我是一个程序员。我没时间交GF,但拥有一只会说话的青蛙简直太酷。”

2004年03月22日

没人做饭吃,坐车难坐,晚上找不到事情可做,总是东逛西看,集中不了精神。

uses 加入registry;
OnClose中加入
var
reg:tregistry;
begin
reg.tregistry.create;
reg.rootkey:=HKEY_CURRENT_USER;//设根键
reg.openkey(‘自己想一个’,'自己想一个’,true);//打开主键
reg.writeString(‘text1text’,edit1.text);//写入edit1的TEXT值
reg.writeinteger(‘textleft’,edit1.left);//写入edit1的left值
reg.Closekey;
reg.free
end;

OnCreate中写入
var
reg:tregistry;
e:string;//edit1的text内容
l:integer;//edit1的left值
begin
reg.tregistry.create;
reg.rootkey:=HKEY_CURRENT_USER;//设根键
reg.openkey(‘自己想一个’,'自己想一个’,true);//打开主键
e:=reg.readString(‘text1text’,edit1.text);//写入edit1的TEXT值
l:=reg.readinteger(‘textleft’,edit1.left);//写入edit1的left值
reg.Closekey;
reg.free
end;

2004年03月21日

在Delphi中使用ados调用MSSQL的存储过程时,参数的顺序要与定义存储过程时的顺序一样。

2004年03月20日


























系统介绍:
    系统由GPS数据中心、车载单元及GPS车辆监控软件组成。数据中心系统通过GSM网接收来自车载单元
的GPS定位数据、状态数据、服务请求等信息并根据车辆所属单位派发给相关单位的监控终端软件。同时
也负责将GPS监控软件的控制信息分发给车载单元。入网用户可以通过天依公司客户服务中心查询或通过
安装GPS监控软件自行管理调度车辆。





点击放大
应用范围:
    在车载终端设备方面根据车辆的差异性和用户的不同需求可选用基础型追踪型、出租型、货运型、客
运型、黑匣型、自动导航型等多种型号的车载终端设备,能够为公安、银行、出租、客运、私家、公务等
车辆提供监控、调度、人车保全、信息资讯等服务。
































功能介绍:






点击放大

车辆监控 位置查询 实时跟踪 历史轨迹回放

监听 电话自动回拨 报警确认

电子地图显示 漫游 缩小 放大

辅助决策 距离测量 面积测量 地图信息查询

车辆控制 道路指引

受理报警 抢劫报警 超速报警 信息求助

用户及数据库管理 用户授权 资料录入与查询
 








        新华网北京3月19日电国务院台湾事务办公室发言人今天在回答记者就陈水扁、吕秀莲遭枪击一事的询问时表示:我们已经注意到这一事件的发生。目前,事件的真相尚未查清,我们将继续注意事态的发展。



Function  GetSQLServerList(var  List:  Tstringlist):  boolean;  
var  
     i:  integer;  
     sRetvalue:  String;  
     SQLServer:  Variant;  
     ServerList:  Variant;  
begin  
   Result  :=  False;  
   List.Clear;  
   try  
       SQLServer  :=  CreateOleObject(‘SQLDMO.Application’);  
       ServerList  :=  SQLServer.ListAvailableSQLServers;  
       for  i  :=  1  to  Serverlist.Count  do  
           list.Add  (Serverlist.item(i));  
       Result  :=  True;  
   Finally  
       SQLServer  :=  NULL;  
       ServerList  :=  NULL;  
   end;  
end;  
—————————————————————  
 
//  搜搜  ,  原来有的    列举  Sql  Server  2000  数据库服务器  
 
procedure  TForm1.Button1Click(Sender:  TObject);  
var  
     SQLServer:Variant;  
     ServerList:Variant;  
     i,nServers:integer;  
     sRetvalue:String;  
begin  
   SQLServer  :=  CreateOleObject(‘SQLDMO.Application’);  
   ServerList:=  SQLServer.ListAvailableSQLServers;  
   nServers:=ServerList.Count;  
   for  i  :=  0  to  nservers  -  1  do      //  for  i  :=  1  to  NServers  do  也可以  
           ListBox1.Items.Add(ServerList.Item(i));  
   SQLServer:=NULL;  
   serverList:=NULL;  
end;  

前几天,我在偶然链入一个网站后,结果我的IE(5.5版)的主页被改,这我不怕,我连那个该*的网叫什么都没认真看清,就立即改回,没事。但万万没想到的是,它竟然可恶到对我的IE作了大手脚:现在,每当点击一个需要开新窗口的链接,都无法成功,开出一个窗口后,始终不能出现网页内容,连状态栏、工具按扭都不显示,鼠标始终处于漏斗状,哪怕你等10分钟,需要的网页也绝对不漏出真容。唯一的方法,只有(1)查看到该链接的准确地址后,从“地址”中贴入,(2)在新窗口开启10多秒后先按“停止”扭,然后当“地址”显示出所要地址后再按“刷新”,才可进入。 

我已经遍查了注册表中IE那部分记录,凭我现在的知识,没有见到什么可疑的迹象。然后我又把系统目录中的各种cookies删去。再启动,没有任何作用。修复我的IE5.5,一切还是照常。 

请各位大虾帮帮我! 



方法一:重新注册以下DLL文件。 
regsvr32 Shdocvw.dll 
regsvr32 Shell32.dll (注意这个命令,先不用输) 
regsvr32 Oleaut32.dll 
regsvr32 Actxprxy.dll 
regsvr32 Mshtml.dll 
regsvr32 Urlmon.dll 

第二个命令可以先不用输,输完这些命令后重新启动windows,如果发现无效,再重新输入一遍,这次输入第二个命令。 


方法二:COMCTL32.DLL文件产生的问题。 
在升级IE或windows时这个文件可能被替换了,也许新版本的COMCTL32.DLL文件有BUG。 
找一张windows安装光盘,搜索它,找到一个名为COMCTL32.DL_的文件,把它拷贝出来,用winrar提取 这个文件为COMCTL32.DLL文件,并覆盖现有文件。 
(我不知道98光盘里有没有这个文件,我用的是2000光盘) 


方法三:用方法一重新注册regsvr32 Oleaut32.dll时出错或重新注册后也无效。 
在windows光盘里提取Oleaut32.dll文件,在MDAC_IE5.CAB文件包里,也是用winrar提取并覆盖现有。 


方法四:DCOM属性设置错误。 
详细参见:http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q274696 
1。点击“开始”。 
2。输入“Dcomcnfg”。 
3。弹出的提示框选“是”。 
4。点“默认安全机制”标签。 
5。在“默认访问权限”栏点“编辑默认值”。 
6。看看“名称”下面的栏里有没有“SYSTEM”和“Interactive”项,如果没有,则添加。 
7。点击OK,点击OK。 


方法五:下载这个工具也许有助于修复问题. 
http://download.microsoft.com/download/msninvestor/Patch/1.0/WIN98/EN-US/mcrepair.EXE