| 分类: 网络基础 |
- 網路媒體:
什麼是『網路媒體』說穿了,最基礎的網路媒體就是『網路線』囉,因為我們都是透過網路線來進行電子訊號的交流的嘛 ( 再次請您留意,這裡是以網路線為例,當然網路媒體還有相當多的樣式的!)。好了,請注意的是,當所有的電腦要進行資料傳遞的時候,就是需要使用到這個所謂的網路媒體,而由於所有的電腦都連接在這個網路媒體上面,您可以將這個 Bus 的網路線當成是一個『共享媒體』囉!並且,這個共享媒體的傳輸限制為『單一時間點上面,只能有一部機器使用這個共享媒體』,這個概念相當的重要,先記下來吧!
現在我們知道訊號是藉由網路媒體來進行傳遞的,而這個媒體在單一時間點上面僅能讓一個機器使用!果真如此的話,底下的問題該如何解決呢?
- 各電腦怎麼知道該時間點上面有沒有其他的機器在使用呢?
- 如果 PC1 與 PC2 要相互溝通的話,他們的訊號是怎樣傳輸的,也就是說, PC1 怎麼知道該訊號是要送到 PC2 呢?
- 如果同一個時間裡面有兩部電腦以上同時使用這個媒體,會產生什麼情況?
底下就需要針對上面的問題來說明一下咯:
- 由於這個網路共享媒體在每個時間點上面僅能讓一部機器使用 ( 這個時間可能是幾千到幾萬分之一秒,很短的啦!),因此,如果 PC 1 這部電腦想要利用這個媒體發送資料出去時,他就必須要確認當時在這個媒體上面沒有其他的機器在使用。這個時候 PC1 就會先發送一個訊息封包到這個媒體上面去,告訴這個媒體上面的所有電腦主機說『喂!我要使用這個媒體了』!而其他的 PC2 ~ PC5 在接到這樣的訊息封包後,就會暫時停頓自己的網路工作,讓 PC1 可以順利的使用網路媒體傳送資料(這個停頓也是很短的啦!您感覺不出來的 ^_^ )。PC 1 發送訊息封包的這個行為就是所謂的『物理廣播』(Physical Broadcast) 了,而這個動作也是最底層的動作吶!
- 知道了物理廣播 ( Physical broadcast ) 的動作之後,再來,如果 PC1 與 PC 3 同時都想要使用網路媒體呢?呵呵!這個時候,就要看是誰先傳送出廣播信息的,當然是先搶先贏!例如:當 PC1 比 PC3 早一步向網路共享媒體送出物理廣播信息,那麼 PC3 就會先停頓,直到等到 PC1 將該次工作完畢之後,才會發送物理廣播信息了。咦!您有沒有發現這個地方很奇怪啊?!既然 PC 1 已經先搶先贏,萬一 PC 1 要傳送的資料高達 100 MB ,那麼 PC 3 不是等到捉狂了?呵呵!回到剛剛我們提到的 OSI 七層協定裡面的『傳送層』的地方,裡面說到了:由於網路物理機制的關係 ( 網路線的負荷啦、所有的網路周邊啦等等的物理機器 ) ,每次進行網路傳輸時,該次的『封包大小』是有限制的!所以,如果 PC 1 的資料真的高達 100 MB 時,他也無法一次就將 100 MB 的資料打包成為一個 packet 的,網路媒體沒有辦法傳輸那麼大的封包,所以當然就得將 100 MB拆開成為數個小 packet 再一次一次的傳送出去啦!而每次的 physical broadcast 僅針對該次的 packet 發送而已,如果這個 packet 發送完,得再繼續進行一次 physical broadcast 才能夠再發送下一個 packet 喔!因此,這個 100MB 的傳送得要 PC1 在這個共享媒體上面發送多次的 physical broadcast 才行哩!所以啦,如上面的例子來看,假設 PC1 要傳輸 100MB 而 PC3 要傳輸 10MB 時,他們是可以同時進行傳輸的,只是在網路媒體的使用上面,就會不斷的進行物理廣播,PC1 與 PC3 兩個搶來搶去的,持續的將一個一個 packet 發送出去!這個時候網路媒體就很忙啦!
- 持續上面的例子,那麼 PC1 與 PC3 可不可能『剛好』同時發出物理廣播訊息呢?!當然可能啦!在一個很繁忙的共享網路媒體當中,由於可能使用者眾多,加上使用者可能正在大量的傳送檔案資料,這個時候就容易發生同時發送物理廣播信息的問題了!當發生在同一個網路媒體上面有兩部主機以上同時發送物理廣播的訊息時,兩部主機該次的物理廣播訊息就會無效,兩部主機將不會進行資料的傳送。不過也不需要太擔心這樣的情況,因為兩部主機均會等待一段時間之後才再次進行物理廣播的動作!而在等待的時間上面,是『在一段時間裡面隨機取一個時間點』來再次進行物理廣播,(例如在千分之一秒的時間內,兩部主機均隨機取一個時間點,一部主機可能剛好選五千分之一秒,另一部選三千分之一秒,這樣就避過再次同時發出物理廣播訊息的問題。 )由於是隨機取樣的,因此應該不太容易再造成同時進行物理廣播的現象。萬一真的不幸又同時物理廣播,那麼又會等待下一次....依序下去,好像超過 16 次以後,如果還真的很不幸(因為機率真的太低了)再次同時進行物理廣播,那麼就抱歉啦!您的網路媒體將癱瘓掉!不過也別擔心,重新 reset ( 整個網路給他關機再開機 ) 就好啦! ^_^""
- 由上面的情況來看,網路媒體上面似乎在某一個時間點時只會有一個封包在進行傳送喔,那麼有沒有可能發生一個網路共享媒體上面同時發送封包的狀況呢?當然有啦!現在您假設
PC1 到 PC5 的距離是很遠(假設 50 m 好了),那麼當 PC1 與 PC5
發送出物理廣播,提醒大家說要傳送資訊的時候,由於 PC1 與 PC5
的距離太遠了,因此回應的時間比較長,那麼這個時候可能就會造成主機的誤判,認為當時媒體上面沒有任何的機器在傳送資料,所以就造成
PC1 與 PC5
同時傳送出資料在媒體上面,這個時候就會發生所謂的『封包碰撞 ( collision
)』的情況了!因為網路媒體上面單一時間內僅能允許一個機器使用的嘛!所以封包碰撞就會造成該封包的損毀現象呢!比較麻煩啦!因為封包損毀了,所以
PC1 與 PC5 又得再次將該次的 packet
重新發送一次,又得要物理廣播.....而為了避免封包碰撞的問題,所以目前網路上面都會使用一種稱為
CSMA/CD ( Carrier Sense Multiple-Access /
Collision Detect )
的技術來避免因封包碰撞造成資料損毀的問題!不過,由於選擇的媒體不同,所以還是很有可能會造成碰撞的啦!
在談完了網路共享媒體之後,再來談一談目前最常見的網路配備,那就是乙太網路的網路卡 ( Ethernet ) 。目前我們在電腦主機後面看到的類似電話線接頭,但是比較大一點的,裡頭具有八條線的插槽,那就是乙太網路卡。這個網路卡最大的特色是他具有一個銲死在上面的位址 ( 某些 Notebook 上面 PCMCIA 的網路卡是可調的 ) ,那就是 Media Access Control (MAC) ,也常常被我們稱為硬體位址 ( Hardware Address )。讓我們翻回到 OSI 七層協定裡面的資料連接層,在該層級中說明,每個框包 ( frame ) 要傳送出去,必須要以硬體位址為傳輸的來源與目標,這就是網路卡與網路卡之間資料傳輸的最底層資訊了。例如同樣上面的圖示,假設 PC 1 要將資料傳送到 PC 2 上面去時,那麼資料封包就必須要先取得 PC 2 主機的網路卡的 MAC 之後,才能夠將資料傳送給 PC2 呢!這個部分就需要在資料連接層來進行說明了。
資料連接層
在 TCP/IP 與 OSI 七層協定那個小節當中,我們知道網路世界上面使用來辨識電腦主機的是 IP ,這個 IP 是在 OSI 的第三層,也就是網路層的東西。而由上面的實體層的介紹,我們也可以知道其實資料封包由這個主機到下一個主機,使用的是 MAC 這個網路卡卡號 ( Hardware address ) 來進行傳送的,那麼 IP 與 MAC 有什麼關係啊?!舉個例子來說,同樣的以上面圖二為例好了,假設 PC 1 的 IP 是 192.168.1.1 而 PC2 的 IP 是 192.168.1.2 ,那麼資料要由 PC 1 傳送到 PC 2 的時後,到底是怎麼進行傳送的?其實也不難啦!因為資料要傳送就得知道網路卡卡號,因此 PC1 必須要先知道 PC2 的 Hardware Address 之後,才能將資料由 PC1 的網路卡傳送給 PC2 的網路卡上。也就是說, IP 必須要與 MAC ( 就是 Hardware address 啦 ) 對應起來才行!這個時候,就需要使用到 Address Resolution Protocol (ARP) 協定了。底下我們就介紹一下 MAC 的格式,以及 ARP 的內容。
- 關於 MAC:
在目前我們使用的乙太網路卡上面,其實在出廠的時後就已經銲死一個網路卡的卡號在上面了,因為這個卡號是跟隨著硬體的,所以一般我們也稱為硬體位址 (Hardware address),而且每一張網路卡上面的卡號都不會重複!事實上,他是被稱為 Media Access Control, MAC 的啦!MAC 的格式是六組 16 進位 (bytes) 的數據組合起來的,所以他共佔掉 6 bytes ,基本的格式為:aa:bb:cc:dd:ee:ffMAC 是乙太網路當中,資料傳輸的重要依據喔!此外,MAC 在未來架設防火牆的時後,用來管制某張特定的網路卡是否能夠通過封包過濾規則的重要設定內容!所以,請先對 MAC 有一個完整的瞭解吶。那麼在 Linux 與 Windows 2000 底下,要怎麼知道我的網路卡 MAC 呢?
如同上面所示,在 Linux 底下,主要的格式是以『:』隔開的,在 Windows 底下,則是以『-』來隔開!無論如何,反正記得他是六組16進位的數據組成的就是了!使用的觀察方式可以直接以 ifconfig 以及 ipconfig 來下達指令。1. 在 Linux 底下:
[root@test root]# ifconfig
eth0 HWaddr 00:05:D3:43:E4:80Link encap:Ethernet
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 /allWindows 2000 IP Configuration
.....
00-05-D3-43-E4-80Physical Address. . . . . . . . . :
.....
- 關於 Address Resolution Protocol, ARP:
現今最常用的網路傳輸是使用 TCP/IP 來進行的,所以每一部主機當然要有一個 IP 才行!然而我們知道資料其實是使用 MAC 在不同的網路卡之間互相傳遞,因此,必須要設定一個 IP 與 MAC 對應的方法才行,此時就有 ARP 協定的產生了。ARP 這個協定在目前主要的作業系統裡面都存在著,例如 Linux 主機裡面就有一個 ARP table 來紀錄 IP 與 MAC 的對應資訊。所以,當前面圖二中, PC 1 (192.168.1.1) 要將資料傳送到 PC2(192.168.1.2) ,那麼 PC1 就會參考自己本身系統內的 arp table ,找到 192.168.1.2 對應的 MAC 之後,再將資料傳送到那個 MAC 去!
- 在 PC1 首次進行資料傳輸的時候,由於 ARP table
當中沒有相關的資料 ( 因為剛剛連上網路嘛! ) ,所以 PC 1 不知道
192.168.1.2 這個 IP 對應的是那個 MAC
,當然也就無法傳遞資料了。這個時候 PC 1 就會對『同一網域的全部電腦進行邏輯廣播( logical broadcast
)』,此時 PC 1 會發送一個帶有本身的 MAC 與目標 IP
(在這個例子中,也就是 192.168.1.2 )
的邏輯廣播封包給網域內的全部電腦( 在圖二的例子中,包括 PC 2 ~ PC 5
均會收到這個邏輯廣播封包 ) ;
- 在 PC 2 ~ PC 5
接到這個邏輯廣播封包之後,由於這個邏輯廣播封包的要求回應是
192.168.1.2 ,因為 PC 3 ~ PC 5 並不是這個 IP
的所有人,因此就會將這個邏輯廣播封包丟棄不理。而 PC 2
收到這個邏輯廣播封包時發現該封包要求的 IP
是自己的,此時他就會發送一個回應封包 ( 該回應封包裡面就含有 PC2
自己的 MAC ) 給 PC 1
;
- PC 1 在收到這個回應封包之後,就知道了 PC2 這個 192.168.1.2 IP
對應的 MAC 了,此時 PC 1 這部主機的 ARP table 就會主動的將 IP 與
MAC 的對應給他寫入表格中啦!而既然已經知道了 IP 對應 MAC 了,因此
PC1 就可以開始將資料傳送給 PC 2 了!
- 未來,當 PC 1 要將資料再傳給 PC 2 時,他會先由自己本身的 ARP
table 裡面去找尋是否有該主機的 IP 對應的 MAC 資訊,如果找到了 PC 2
(192.168.1.2) 對應的 MAC ,那麼 PC 1
將不會發送邏輯廣播封包,而是直接依據 ARP table
裡面的資訊來將資料直接傳送給 PC 2 的網路卡呢!也就是說:
- 如果 ARP table 有紀錄的話,那麼資料就會直接的傳送到該目的地去,而不會進行『邏輯廣播』;
- 如果 ARP table 沒有紀錄的話,那麼主機就又會對全部的同一網域內的電腦進行『邏輯廣播』。
| [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 localhost [root@test root]# arp -n Address 192.168.1.1 [root@test root]# arp -s 192.168.1.100 |
在談完了 OSI 七層協定裡面的實體層與資料連接層之後,接下來就是最重要的網路層了!不過,因為網路層裡面的 IP 實在太重要了,所以我們將他獨立出一個小節來繼續介紹。當然,底下就獨立的來介紹與 IP 相關的一些概念,包含了 Netmask, Broadcast, Gateway 以及網域的概念等等。


加载中…