由前一章节『架站前的技巧分析』当中,我们已经知道网络基础是很重要的呢!在这个章节当中,我们主要针对网络基础来进行比较深入的谈论。当然啦,光是网络基础里面的 OSI 七层协议,就可以写了满满的一大本书了,我们的目的仅是让大家对于网络基础有点认识就是了!因此,在这个章节中,我试图以较为简单的方式介绍网络的基础概念,这里面包括了 IP, route, TCP, 以及类似三向交握等等的网络基础,希望能够让大家早一点进入状况喔! ^_^ |
1. 在 Linux
底下:
[root@test root]# ifconfig eth0 Link encap:Ethernet HWaddr 00:05:D3:43:E4:80 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ..... 2. 在 Windows 2000 底下: C:\> ipconfig /all Windows 2000
IP Configuration
|
[root@test
root]# arp [-and] hostname
[root@test root]# arp -s hostname(IP) Hardware_address 参数说明: -a :显示出目前主机所有的 IP 对应 MAC 状态 -n :将主机名称以 IP 的型态显示 -d :将 hostname 的 hardware_address 由 ARP table 当中删除掉 -s :设定某个 IP 或 hostname 的 MAC 到 ARP table 当中 范例: [root@test root]# arp Address HWtype HWaddress Flags Mask Iface localhost ether 08:00:20:C5:89:4D C eth0 [root@test root]# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.1.1 ether 08:00:20:C5:89:4D C eth0 [root@test root]# arp -s 192.168.1.100 01:00:2D:23:A1:0E |
IP 的表示式:
00000000.00000000.00000000.00000000 ==>0.0.0.0 11111111.11111111.11111111.11111111 ==>255.255.255.255 |
192.168.0.0~192.168.0.255
这个 C Class 的说明:
11000000.10101000.00000000.00000000 11000000.10101000.00000000.11111111 |----------Net_ID---------|-host--| |
以二进制说明
Network 第一个数字的定义:
A Class : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==>开头是 0 |--net--|---------host------------| B Class : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==>开头是 10 |------net-------|------host------| C Class : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx ==>开头是 110 |-----------net-----------|-host--| 以十进制说明 Network 的定义: A Class : 0.xx.xx.xx ~ 126.xx.xx.xx B Class : 128.xx.xx.xx ~ 191.xx.xx.xx C Class : 192.xx.xx.xx ~ 223.xx.xx.xx |
192.168.0.0~192.168.0.255
这个 C Class 的说明:
11000000.10101000.00000000.00000000 11000000.10101000.00000000.11111111 |----------Net_ID---------|-host--| 11111111.11111111.11111111.00000000 <== Netmask 二进制 255 . 255 . 255 . 0 <== Netmask 十进制 |
Netmask 表示方式:
A Class : 11111111.00000000.00000000.00000000 ==> 255. 0. 0. 0 B Class : 11111111.11111111.00000000.00000000 ==> 255.255. 0. 0 C Class : 11111111.11111111.11111111.00000000 ==> 255.255.255. 0 |
Netmask:
255.255.255.0 <==网域定义中,最重要的参数
Network: 192.168.0.0 <==第一个 IP Broadcast: 192.168.0.255 <==最后一个 IP 可用的 IP 数: 192.168.0.1 ~ 192.168.0.254 |
Network/Netmask
192.168.0.0/255.255.255.0 192.168.0.0/24 |
原本的 C Class:
11000000.10101000.00000000.00000000 11000000.10101000.00000000.11111111 |----------Net_ID---------|-host--| 切成两个子网络 子网络一: 11000000.10101000.00000000.00000000 <==Network 11000000.10101000.00000000.01111111 <==Broadcast |----------Net_ID----------|-host-| 11111111.11111111.11111111.10000000 <==Netmask 二进制 255 . 255 . 255 . 128 <==Netmask 十进制 所有 IP 与网域表示式: 192.168.0.0 ~ 192.168.0.127 192.168.0.0/25 或 192.168.0.0/255.255.255.128 子网络二: 11000000.10101000.00000000.10000000 <==Network 11000000.10101000.00000000.11111111 <==Broadcast |----------Net_ID----------|-host-| 11111111.11111111.11111111.10000000 <==Netmask 二进制 255 . 255 . 255 . 128 <==Netmask 十进制 所有 IP 与网域表示式: 192.168.0.128 ~ 192.168.0.255 192.168.0.128/25 或 192.168.0.128/255.255.255.128 |
[root@test
root]# route [-n]
参数说明: -n :将主机名称以 IP 的方式显示 范例: [root@test root]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 192.168.0.254 0.0.0.0 UG 0 0 0 eth0 [root@test root]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth0 |
曾经有一个朋友问过我说:『一部主机上面这么多服务,那我们跟这部主机进行联机时,该主机怎么知道我们要的数据是
WWW 还是 FTP 啊?!』呵呵!这就是 port 的不同的结果啦!因为每种 Client
软件他们所需要的数据都不相同,例如上面提到的 Netscape 以及 IE 他们所需要的数据是
WWW ,所以该软件预设就会向主机的 80 port 索求数据;而如果您是使用 cuteftp
来进行与主机的 FTP 数据索求时, cuteftp 这个 Client 软件当然预设就是向主机的
FTP 相关埠口 ( 预设就是 port 21 ) 进行连接的动作啦!所以当然就可以正确无误的取得
Client 端所需要的数据了。
举个例子来说,一部主机就好像是一间多功能银行,该银行内的每个负责不同业务的窗口就好像是通讯端口口,而我们民众就好像是 Client 端来的封包。当您进入银行想要缴纳信用卡账单时,一到门口服务人员就会指示您直接到该窗口去缴纳,当然,如果您是要领钱,服务人员就会请您到领钱的窗口去填写数据,您是不会跑错的对吧! ^_^。万一跑错了怎么办?呵呵!当然该窗口就会告诉您『我不负责这个业务,您请回去!』,呵呵!所以该次的联机就会『无法成功』咯! |
Source Port(16) | Destination Port(16) | ||||||||
Sequence Number(32) | |||||||||
Acknowledgment Number(32) | |||||||||
Data Offset(4) | Reserved(6) | U
G R |
A
C K |
P
S H |
R
S T |
S
Y N |
F
I N |
|
|
Checksum(16) | Urgent Pointer(16) | ||||||||
|
|||||||||
...... Message |
UDP Source Port(16) | UDP Destination Port(16) | ||||||||
Message Length(16) | UDP checksum(16) | ||||||||
...... Message |
|
|
|
0 | Echo Reply | 代表一个响应信息 |
3 | Distination Unreachable | 表示目的地不可到达 |
4 | Source Quench | 当 router 的负载过时,这个类别码可以用来让发送端停止继续发送讯息 |
5 | Redirect | 用来重新导向路由路径的信息 |
8 | Echo Request | 请求响应讯息 |
11 | Time Exeeded for a Datagram | 当数据封包在某些路由传送的现象中造成逾时状态,此类别码可告知来源该封包已被忽略的讯息 |
12 | Parameter Problem on a Datagram | 当一个 ICMP 封包重复之前的错误时,会回复来源主机关于参数错误的讯息 |
13 | Timestamp Request | 要求对方送出时间讯息,用以计算路由时间的差异,以满足同步性协议的要求 |
14 | Timestamp Replay | 此讯息纯粹是响应 Timestamp Request 用的 |
15 | Information Request | 在 RARP 协议应用之前,此讯息是用来在开机时取得网络信息 |
16 | Information Reply | 用以响应 Infromation Request 讯息 |
17 | Address Mask Request | 这讯息是用来查询子网络 mask 设定信息 |
18 | Address Mask Reply | 响应子网络 mask 查询讯息的 |
除了上面提到的最基本的网络基础概念之外,这里还必须要先谈一个基本的观念,否则后续的主机名称查询设定挺难说明白的!好了,我们知道计算机在网络上面要找寻主机的时后,是利用 IP 来寻址,而以 TCP/UDP/ICMP 等数据来进行传送的,并且传送的过程中还会去检验封包的信息。总归一句话,网络是靠 TCP/IP 家族来达成的,所以必须要知道 IP 之后,计算机才能够连上网络以及传送数据。
问题是,计算机网络是依据人类的需要来建立的,不过人类对于 IP 这一类的数字并不具有敏感性,即使 IP 已经被简化为十进制了,但是人类就是对数字没有办法啊!怎么办?!没关系,反正计算机都有主机名称嘛!那么我就将主机名称与他的 IP 对应起来,未来要连接上该计算机时,只要知道该计算机的主机名称就好了,因为 IP 已经对应到主机名称了嘛!所以人类也容易记忆文字类的主机名称,计算机也可以藉由对应来找到他必须要知道的 IP ,啊!真是皆大欢喜啊!
这个主机名称 (Hostname) 对应 IP 的系统,就是鼎鼎有名的 Domain Name System (DNS) 咯!也就是说, DNS 这个服务的最大功能就是在进行『主机名称与该主机的 IP 的对应』的一项协定。DNS 在网络环境当中是相当常被使用到的一项协议喔!举个例子来说,像鸟哥我常常会连到奇摩雅虎的 WWW 网站去看最新的新闻,那么我一定需要将奇摩雅虎的 WWW 网站的 IP 背下来吗?!天吶,鸟哥的忘性这么好,怎么可能将 IP 背下来?!不过,如果是要将奇摩站的主机名称背下来的话,那就容易的多了!不就是 http://tw.yahoo.com 吗?!而既然计算机主机只认识 IP 而已,因此当我在浏览器上面输入了『http://tw.yahoo.com』的时后,我的计算机首先就会藉由向 DNS 主机查询 tw.yahoo.com 的 IP 后,再将查询到的 IP 结果回应给我的浏览器,那么我的浏览器就可以藉由该 IP 来连接上主机啦!
发现了吗?我的计算机必须要向 DNS 主机查询 Hostname 对应 IP 的信息喔!那么那部 DNS 主机的 IP 就必须要在我的计算机里面设定好才行,并且必须要是输入 IP 喔,不然我的计算机怎么连到 DNS 主机去要求数据呢?呵呵!在 Linux 里面,DNS 主机 IP 的设定就是在 /etc/resolv.conf 这个档案里面啦!
目前各大 ISP 都有提供他们的 DNS 主机 IP 给他们的用户,好设定客户自己计算机的 DNS 查询主机,不过,如果您忘记了或者是您使用的环境中并没有提供 DNS 主机呢?呵呵!没有关系,那就设定中华电信那个最大的 DNS 主机吧! IP 是 168.95.1.1 咯!要设定好 DNS 之后,未来上网浏览时,才能使用主机名称喔!不然就得一定需要使用 IP 才能上网呢!DNS 是很重要的,他的原理也顶复杂的,更详细的原理我们在后面的『DNS 服务器架设』里面进行更多更详细的说明喔!这里仅提个大纲!
图七、星形网络联机的概要
|
1 2 3 4 5 6 7 8 |
|
白绿 绿 白橙 蓝 白蓝 橙 白棕 棕 |
|
白橙 橙 白绿 蓝 白蓝 绿 白棕 棕 |
本文在 2002/07 发出之后,收到相当多朋友的关心,也从而发现了自己误会的一些基础的网络理论,真的是感谢好朋友 Netman 兄与 ZMAN 兄的指导!这篇短文在 2003/08/03 做了相当大幅度的修订,与原来的文章 ( 上次更新日期 2002/09 ) 已经有一定程度的差异了,希望网友们如果有时间的话,能够再次的阅读,以厘清一些基本概念喔!