計算機(jī)網(wǎng)絡(luò)診斷:基礎(chǔ)協(xié)議
在剛開始進(jìn)行網(wǎng)絡(luò)調(diào)試的那段時間里,我總是想搞清楚局域網(wǎng)接入到互聯(lián)網(wǎng)是怎么一回事。現(xiàn)在關(guān)注你的電腦,開機(jī)以后,經(jīng)過幾十秒的等待,屏幕上的操作系統(tǒng)界面就出現(xiàn)在我們面前。只需在瀏覽器圖標(biāo)上按一下,就能訪問我們最喜愛的網(wǎng)站了。然而,一切并非如你所想,網(wǎng)頁上什么都沒有出現(xiàn),哪里出了問題?別著急,我們會盡快處理這個問題,在任何操作系統(tǒng)上,我們都可以用網(wǎng)絡(luò)診斷軟件來進(jìn)行修復(fù)。
但首當(dāng)其沖的則是我們要搞清楚,你到底是如何訪問網(wǎng)絡(luò)的?
這個問題看似瑣碎,但是通常沒有任何一種響應(yīng)是需要很長時間的。每當(dāng)我們要求計算機(jī)去使用網(wǎng)絡(luò),我們的意思是任何適配器或電纜,有時候還需要一臺路由器。當(dāng)然,這些東西對計算機(jī)網(wǎng)絡(luò)的使用非常的重要,但是它們本身并沒有讓用戶接入。為了有效地使用計算機(jī)網(wǎng)絡(luò),我們的服務(wù)規(guī)范必須安裝在任何一個計算機(jī)的網(wǎng)絡(luò)協(xié)議中。
當(dāng)然,不同的網(wǎng)絡(luò)中會有一些不同的解決方案。當(dāng)中最為簡單的一種則是我們電腦中已經(jīng)默認(rèn)安裝的TCP/IP協(xié)議,并具有***分配的IP地址,這是在本地配置設(shè)置中的一個永恒的烙印。這是我們能夠接觸到的一種最簡單的解決方案,但實際上它并不是很安全,所以我們假定管理員已經(jīng)進(jìn)行了一些其它設(shè)置。
最有可能的情況是你的DHCP服務(wù)器已經(jīng)被管理員啟動了。該服務(wù)允許網(wǎng)絡(luò)上任何工作站動態(tài)分配IP地址。通常在本地網(wǎng)絡(luò)中會存在一個正常運(yùn)作的私有地址,在外網(wǎng)我們是看不到的,我們只能看到路由器網(wǎng)絡(luò)IP地址。翻譯任務(wù)真正的目的是通過適當(dāng)?shù)捻憫?yīng)進(jìn)入私有地址并取得屏幕上的內(nèi)容,這些才是我們真正需要的內(nèi)容。有時候,管理員會有一些不得已的理由來安裝一個古老的互聯(lián)網(wǎng)協(xié)議。其實在網(wǎng)絡(luò)中打包數(shù)據(jù)的是網(wǎng)關(guān),它才是真正負(fù)責(zé)相關(guān)網(wǎng)絡(luò)協(xié)議數(shù)據(jù)翻譯的。
若我們使用一種基于內(nèi)部網(wǎng)絡(luò)專有地址,且在外網(wǎng)永遠(yuǎn)不會被發(fā)現(xiàn)的解決方案,這種解決方案被稱作網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù),其簡寫是NAT。基于NAT技術(shù)的網(wǎng)絡(luò)也有多種類型。我將NAT區(qū)分為靜態(tài)的、動態(tài)的、主動的、被動的、積極與消極的幾種。或許別人跟我的區(qū)分方法不同,但你不得不承認(rèn)NAT本身非常令人著迷。NAT的工作流程如下:一個數(shù)據(jù)包被傳輸?shù)絻?nèi)部網(wǎng)絡(luò)接口,包含了我們工作站的地址,它采取了我們私人地址池中的地址,然后通過路由器被路由到外部接口,隨著網(wǎng)絡(luò)接口地址到哪里,它就到哪里。真正的答案就是它總是被重定向傳送給你需要的地方。
私有地址比公有地址多得多,這種事情非常普遍。然后,我們就必須要處理一大堆私有地址和一個公有地址的狀況了。另外,為了弄清楚服務(wù)器尋址響應(yīng),而且得讓一組合適的內(nèi)部端口與外部端口地址相連接,我們需要對每一個地址進(jìn)行分配。有一種協(xié)議可以從池中為我們提供動態(tài)端口。這種改變數(shù)據(jù)端口的技術(shù)叫做PAT。
你可能已經(jīng)注意到,所有來自內(nèi)部網(wǎng)絡(luò)的地址不可能是真正的地址,但保留私有地址池中的地址是一個不錯的方法。這樣做有很多好處,這保護(hù)了私人網(wǎng)絡(luò)。何其幸運(yùn),不論是網(wǎng)絡(luò)地址分配還是測試或是軟件開發(fā),到處都有一些奇妙的方法??捎械臅r候某些網(wǎng)絡(luò)轉(zhuǎn)換操作也會發(fā)生在整個ISO/OSI模型第三層和第四層以外,數(shù)據(jù)包IP地址并沒有發(fā)生變化,但仍在第四層協(xié)議之間。這種方案被叫做電路層代理。
如果你看一看大多數(shù)網(wǎng)絡(luò),你會發(fā)現(xiàn)一些肉眼可見的相似之處。大部分時間里,管理員可以使用相同的私有IP網(wǎng)絡(luò),為了解決網(wǎng)絡(luò)沖突,所有計算機(jī)地址都是動態(tài)分配的。這種地址動態(tài)分配過程可以由多個協(xié)議來完成,但在它們當(dāng)中最為重要的還是DHCP服務(wù)。這為特定工作站傳輸信息提供了無限的潛能。DHCP不僅可以提供工作站IP地址數(shù)據(jù)的信息,還包含了網(wǎng)關(guān)地址的信息,且其信息范圍非常廣泛,例如數(shù)據(jù)網(wǎng)絡(luò)和服務(wù)器的內(nèi)容。
#p#
那么到這里,計算機(jī)網(wǎng)絡(luò)原理快速介紹就結(jié)束了。現(xiàn)在我們已經(jīng)知道了一些層面是如何溝通的了。也了解了在我們的計算機(jī)中應(yīng)該提供什么樣的服務(wù)才能進(jìn)行有效的通信了?,F(xiàn)在我們進(jìn)行下一步。在我們的例子中怎么才能看出來網(wǎng)絡(luò)配置是正確的呢,其實可以使用圖形程序,但現(xiàn)在我們只能使用系統(tǒng)安裝的ifconfig。這個程序可以顯示或設(shè)置我們網(wǎng)絡(luò)中所有的信息。下面是一個示例,輸入ifconfig命令,顯示了我目前的工作站還未連接到網(wǎng)絡(luò)的情況:
root [~] # ifconfig
eth0 Link encap: Ethernet HWaddr dc: 0e: a1: 4b: 5d: 94
inet addr: 169.254.186.86 bcast: 169.254.255.255 Mask: 255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1
RX packets: 0 errors: 0 dropped: 2775300121 overruns: 0 frame: 0
TX packets: 2790 errors: 0 dropped: 0 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 1000
RX bytes: 0 (0.0 B) TX bytes: 625441 (610.7 KB)
Interrupt: 122 Base address: 0×6000
lo Link encap: Local Loopback
inet addr: 127.0.0.1 Mask: 255.0.0.0
UP LOOPBACK RUNNING MTU: 16436 Metric: 1
RX packets: 1003 errors: 0 dropped: 0 overruns: 0 frame: 0
TX packets: 1003 errors: 0 dropped: 0 overruns: 0 carrier: 0
collisions: 0 txqueuelen: 0
RX bytes: 379547 (370.6 KiB) TX bytes: 379547 (370.6 KB)
root [~] #
All program options in ifoconfig. I wrote the following:
ifconfig [-a] [-v] [-s] [[]]
[Add <address>[/ <prefixlen>]]
[Del <address>[/ <prefixlen>]]
[[-] Broadcast [<address>]] [[-] pointopoint [address]]
[Netmask <address>] [dstaddr <address>] [tunnel <address>]
[Outfill <nn>] [keepalive <nn>]
[H <HW> <address>] [metric <nn>] [mtu <nn>]
[[-] Trailers] [[-] arp] [[-] allmulti]
[Multicast] [[-] promisc]
[Mem_start <nn>] [io_addr <nn>] [irq <nn>] [media <type>]
[Txqueuelen <nn>]
[[-] Dynamic]
[Up | down] …
<HW>= Hardware Type.
List of possible hardware types:
loop (Local Loopback) slip (Serial Line IP) cslip (VJ Serial Line IP)
slip6 (6-bit Serial Line IP) cslip6 (VJ 6-bit Serial Line IP) adaptive (Adaptive Serial Line IP)
strip (Metricom Starmode IP) ether (Ethernet) tr (16/4 Mbps Token Ring)
tr (16/4 Mbps Token Ring (New)) ax2***X.2***mp R) netrom (ampr NET / ROM)
tunnel (IPIP Tunnel) ppp (Point-to-Point Protocol) arcnet (ARCnet)
DLCI (Frame Relay DLCI) FRAD (Frame Relay Access Device) irda (IrLAP)
x25 (generic X.25)
<AF>= Address family. Default: inet
List of possible address families:
unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6)
ax2***X.2***mp R) netrom (ampr NET / ROM) ipx (Novell IPX)
ddp (Appletalk DDP) x25 (CCITT X.25)
However, if you want to know more about this program, just type "main ifoconfig" in the console.
Wireless configuration is used in the iwconfig command console. This command takes the following parameters:
Usage: iwconfig [interface]
interface essid {NNN | any | on | off}
interface mode {managed | ad-hoc | master | …}
N.NNN interface freq [k | M | G]
interface channel N
interface bit {N [k | M | G] | auto | fixed}
interface rate {N [k | M | G] | auto | fixed}
enc {NNNN interface-NNNN | off}
interface key {NNNN-NNNN | off}
interface power {period N | timeout N | saving N | off}
NNN nickname interface
interface nwid {NN | on | off}
interface ap {N | off | auto}
interface txpower {nmw | NDBM | off | auto}
interface point N
interface retry {limit N | lifetime N}
interface rts {N | auto | fixed | off}
interface frag {N | auto | fixed | off}
interface modulation {11g | 11a | CCK | OFDMg | …}
interface commit
#p#
在你操作系統(tǒng)的控制臺中你可以通過鍵入“man ifconfig”命令來查看更多的信息。
現(xiàn)在我們來考慮另一個重要的問題。因為不知道對方的邏輯和物理地址,那我們怎樣才能得到服務(wù)器發(fā)送配置信息的請求呢?所以,我們的計算機(jī)對網(wǎng)絡(luò)上所有計算機(jī)都發(fā)送了信息。這就是所謂的廣播,其消息被放置在廣播幀當(dāng)中。
在DHCP規(guī)范中,該消息被叫做DHCPDISCOVER封包,若得到了回應(yīng)則返回一個叫DHCPOFFER的消息。此消息通常在單播幀中并發(fā)送給一個單一的收件者。
接下來,客戶必須選擇屬于他的DHCP服務(wù)器。若要做到這一點(diǎn),還需稍等片刻,以便讓它熟悉該地區(qū)所有DHCP服務(wù)器。然后它會發(fā)送DHCPREQUEST消息,其中包含了選定的DHCP服務(wù)器信息,但它隸屬于整個網(wǎng)絡(luò)服務(wù)器的廣播下,用于通知所有服務(wù)器,包括選定的和未選定的服務(wù)器。然后被選定的服務(wù)器會發(fā)送DHCPACK消息。這條信息包含了你需要配置的客戶端的內(nèi)容。所以,如果我們假設(shè)網(wǎng)絡(luò)上至少有一個DHCP服務(wù)器,那么在剛開始診斷網(wǎng)絡(luò)中至少會得到四個回復(fù)。
總結(jié)
文章的***部分其實只是有關(guān)實用程序的一個簡單介紹。也許文章中的內(nèi)容對用戶來說并不是非常高端,但并不是所有人都會接觸到高端的網(wǎng)絡(luò)配置和協(xié)議條款。在這篇文章中,我想給每個人都列舉一些大家都該熟悉的計算機(jī)網(wǎng)絡(luò)基本信息。當(dāng)這個系列文章完成后,你會學(xué)到不少的東西,了解計算機(jī)網(wǎng)絡(luò)是如何工作的。在那之前,我建議你嘗試一下基本的網(wǎng)絡(luò)配置和NAT配置的內(nèi)容。我也推薦大家看一看TCP/IP和DNS協(xié)議規(guī)范。
接下來你會期待哪些內(nèi)容呢?當(dāng)然,我們會討論DNS服務(wù)器和ARP表的問題。此外,我們將嘗試實現(xiàn)自己的C程序,這個程序能夠?qū)P地址翻譯成一個容易理解的地址信息,反之亦然。我們還要學(xué)習(xí)管理員工具的使用,nestat程序等。我們還會分析一些計算機(jī)網(wǎng)絡(luò)中的案例,還會看到網(wǎng)絡(luò)分析工具和ping程序的使用方法。另外,還會了解如何通過使用traceroute來跟蹤路由器數(shù)據(jù)包。
在本系列文章中所出現(xiàn)的這些工具,如果你掌握了它們,那么你能夠成為一個很好的管理員。然而,你也需要瀏覽一些其它文章和一些好運(yùn),在不斷探索的道路上成長為一名優(yōu)秀的網(wǎng)絡(luò)操作系統(tǒng)管理員。



















