第二章、基礎網路概念 - daniel-qa/Network GitHub Wiki

Loopback (lo)

Loopback (lo) 是指一個虛擬網路介面,它允許網路通訊被重新導向回同一主機。它通常存在於大多數作業系統中,用於各種目的,包括網路測試、故障排除和內部通訊。

loopback 介面被分配了一個特定的 IP 地址,通常是 127.0.0.1,這被稱為 loopback 地址。這個 IP 地址保留給 loopback 介面,指向本地主機本身。

以下是關於 loopback 介面 (lo) 的幾個重點:

測試和故障排除:loopback 介面經常用於在本地機器上測試網路功能。通過將網路流量發送到 loopback 地址,您可以驗證網路堆疊是否正確運作,而不需要涉及外部網路。

內部通訊:應用程式和服務可以使用 loopback 介面進行內部通訊。例如,一個應用程式可以將數據發送到 loopback 地址,然後另一個應用程式可以從同一 loopback 地址接收數據。這在本地主機上的不同進程之間進行通訊時很有用。

迴圈測試:loopback 介面也常用於進行迴圈測試。這種測試可以將流量發送到 loopback 地址,然後檢查是否成功接收到相同的流量。這可用於測試網路堆疊的完整性和性能。

loopback 介面是在本地主機上內部使用的虛擬網路介面,提供了方便的測試、內部通訊和迴圈測試功能,對於開發人員和網路管理人員來說非常有用。

測試 lo 指令

ifconfig lo

ping 127.0.0.1
  • 電腦網路通訊協定: TCP/IP

TCP/IP 也是使用 OSI 七層協定的觀念, 所以同樣具有分層的架構,只是將它簡化為四層,在結構上面比較沒有這麼嚴謹,程式撰寫會比較容易些。 也造就目前我們的網路社會囉!

  • 乙太網路的速度與標準
名稱	                        速度	     網路線等級
乙太網路(Ethernet)	        10Mbps	-
高速乙太網路(Fast Ethernet)	100Mbps	     CAT 5
超高速乙太網路(Gigabit Ethernet)	1000Mbps     CAT 5e/CAT 6
  • MAC 的封裝格式

目的位址與來源位址指的就是網卡卡號(hardware address, 硬體位址)

硬體位址最小由 00:00:00:00:00:00 到 FF:FF:FF:FF:FF:FF (16 進位法), 這 6 bytes 當中,前 3bytes 為廠商的代碼,後 3bytes 則是該廠商自行設定的裝置碼了。

在 Linux 當中,你可以使用 ifconfig 這個指令來查閱你的網路卡卡號喔!特別注意,在這個 MAC 的傳送中,他僅在區域網路內生效,如果跨過不同的網域 (這個後面 IP 的部分時會介紹),那麼來源與目的的硬體位址就會跟著改變了。 這是因為變成不同網路卡之間的交流了嘛!所以卡號當然不同了!如下所示:

例如上面的圖示,我的資料要由電腦 A 通過 B 後才送達 C ,而 B 電腦有兩塊網路卡,其中 MAC-2 與 A 電腦的 MAC-1 互通,至於 MAC-3 則與 C 電腦的 MAC-4 互通。但是 MAC-1 不能與 MAC-3 與 MAC-4 互通,為啥?因為 MAC-1 這塊網路卡並沒有與 MAC-3 及 MAC-4 使用同樣的 switch/hub 相接嘛!所以,資料的流通會變成:

先由 MAC-1 傳送到 MAC-2 ,此時來源是 MAC-1 而目的地是 MAC-2; B 電腦接收後,察看該訊框,發現目標其實是 C 電腦,而為了與 C 電腦溝通, 所以他會將訊框內的來源 MAC 改為 MAC-3 ,而目的改為 MAC-4 ,如此就可以直接傳送到 C 電腦了。 也就是說,只要透過 B (就是路由器) 才將封包送到另一個網域 (IP 部分會講) 去的時候, 那麼訊框內的硬體位址就會被改變,然後才能夠在同一個網域裡面直接進行訊框的流通啊!

  • Tips
由於網路卡卡號是跟著網路卡走的,並不會因為重灌作業系統而改變, 所以防火牆軟體大多也能夠針對網路卡來進行抵擋的工作喔! 
不過抵擋網卡僅能在區域網路內進行而已,因為 MAC 不能跨 router 嘛!!
  • MTU 最大傳輸單位

數據包通常封裝在以太網幀(Ethernet frame)中,而MTU指的是以太網幀的有效數據部分,不包括幀頭和幀尾。

通過上面 MAC 封裝的定義,現在我們知道標準乙太網路訊框所能傳送的資料量最大可以到達 1500 bytes , 這個數值就被我們稱為 MTU (Maximum Transmission Unit, 最大傳輸單位)。 你得要注意的是,每種網路介面的 MTU 都不相同,因此有的時候在某些網路文章上面你會看到 1492 bytes 的 MTU 等等。不過,在乙太網路上,標準的定義就是 1500 bytes

  • Tips
早期某些網路媒體 (例如 IP 分享器) 支援的是 802.2, 802.3 標準所組合成的 MAC 封裝,它的 MTU 就是 1492 , 
而且這些設備可能不會進行封包重組,因此早期網路上面常常有朋友問說,他們連上某些網站時,總是會連線逾時而斷線。 
但透過修改用戶端的 MTU 成為 1492 之後,上網就沒有問題了。原因是什麼呢?讀完上頭的資料,您應該能理解了吧?^_^

集線器、交換器與相關機制

  • 共不共享很重要,集線器還是交換器? (註11)

剛剛我們上面提到了,當一個很忙碌的網路在運作時,集線器 (hub) 這個網路共享媒體就可能會發生碰撞的情況, 這是因為 CSMA/CD 的緣故。那有沒有辦法避免這種莫名其妙的封包碰撞情況呢?有的,那就使用非共享媒體的交換器即可啊!

交換器 (switch) 等級非常多,我們這裡僅探討支援 OSI 第二層的交換器。交換器與集線器最大的差異,在於交換器內有一個特別的記憶體, 這個記憶體可以記錄每個switch port 與其連接的 PC 的 MAC 位址,所以,當來自 switch 兩端的 PC 要互傳資料時,每個訊框將直接透過交換器的記憶體資料而傳送到目標主機上! 所以 switch 不是共享媒體,且 switch 的每個埠口 (port) 都具有獨立的頻寬喔!

舉例來說,10/100 的 Hub 上連結 5 部主機,那麼整個 10/100Mbps 是分給這五部主機的, 所以這五部主機總共只能使用 10/100Mbps 而已。那如果是 switch 呢?由於『每個 port 都具有 10/100Mbps 的頻寬』, 所以就看你當時的傳輸行為是如何囉!舉例來說,如果是底下的狀況時,每個連線都是 10/100 Mbps 的。

A 傳送到 D 與 B 傳送到 C 都獨自擁有 10/100Mbps 的頻寬,兩邊並不會互相影響! 不過,如果是 A 與 D 都傳給 C 時,由於 C port 就僅有 10/100Mbps ,等於 A 與 D 都需要搶 C 節點的 10/100Mbps 來用的意思。 總之,你就是得要記得的是,switch 已經克服了封包碰撞的問題,因為他有個 switch port 對應 MAC 的相關功能, 所以 switch 並非共享媒體喔!同時需要記得的是,現在的 switch 規格很多, 在選購的時候,千萬記得選購可以支援全雙工/半雙工,以及支援 Jumbo frame 的為佳!

  • 什麼是全雙工/半雙工(full-duplex, half-duplex)

前面談到網路線時,我們知道八蕊的網路線實際上僅有兩對被使用,一對是用在傳送,另一對則是在接收

如果兩端的 PC 同時支援全雙工時,那表示 Input/Output 均可達到 10/100Mbps, 亦即資料的傳送與接收同時均可達到 10/100bps的意思,總頻寬則可達到 20/200Mbps 囉 (其實是有點語病的,因為Input 可達 10/100Mbps, output 可達 10/100Mbps而不是 Input 可直接達到 20/200Mbps喔!)如果你的網路環境想要達到全雙工時, 使用共享媒體的 Hub 是不可能的,因為網路線腳位的關係,無法使用共享媒體來達到全雙工的! 如果你的 switch 也支援全雙工模式,那麼在 switch 兩端的 PC 才能達到全雙工喔!

  • 自動協調速度機制 (auto-negotiation):

我們都知道現在的乙太網路卡是可以向下支援的,亦即是 Gigabit 網路卡可以與早期的 10/100Mbps 網路卡連結而不會發生問題。但是,此時的網路速度是怎樣判定呢? 早期的 switch/hub 必須要手動切換速度才行,新的 hub/switch 因為有支援 auto-negotiation 又稱為 N-Way 的功能,他可自動的協調出最高的傳輸速度來溝通喔!如果有 Gigabit 與 10/100Mbps 在 switch 上面, 則 N-Way 會先使用最高的速度 (gigabit) 測試是否能夠全部支援,如果不行的話,就降速到下一個等級亦即 100 Mbps 的速度來運作的!

  • 訊號衰減造成的問題

由於電子訊號是會衰減的,所以當網路線過長導致電子訊號衰減的情況嚴重時, 就會導致連線品質的不良了。因此,連結各個節點的網路線長度是有限制的喔! 不過,一般來說,現今的乙太網路 CAT5 等級的網路線大概都可以支援到 100 公尺的長度, 所以應該無庸擔心才是吶!

但是,造成訊號衰減的情況並非僅有網路線長度而已!如果你的網路線折得太嚴重(例如在門邊常常被門板壓,導致變形) ,或者是自行壓製網路線接頭,但是接頭部分的八蕊蕊線纏繞度不足導致電磁干擾嚴重, 或者是網路線放在戶外風吹日曬導致脆化的情況等等,都會導致電子訊號傳遞的不良而造成連線品質惡劣, 此時常常就會發現偶而可以連線、有時卻又無法連線的問題了!因此,當你需要針對企業內部來架設整體的網路時, 注意結構化佈線可是很重要的喔!

  • 結構化佈線

(模組化)

所謂的結構化佈線指的是將各個網路的元件分別拆開,分別安裝與布置到企業內部, 則未來想要提升網路硬體等級或者是移動某些網路設備時只需要更動類似配線盤的機櫃處以及末端的牆上預留孔與主機設備的連線就能夠達到目的了。例如底下的圖示:

結構化佈線簡易圖示

圖 2.2-6、結構化佈線簡易圖示

在牆內的佈線需要很注意,因為可能一佈線完成後就使用 5-10 年以上喔!那你需要注意的僅有末端牆上的預留孔以及配線端部分。 事實上,光是結構化佈線所需要選擇的網路媒體與網路線的等級,還有機櫃、機架,以及美化與隱藏網路線的材料等等的挑選, 以及實際施工所需要注意的事項,還有所有硬體、施工所需要注意的標準規範等等, 已經可以寫滿厚厚一本書,而鳥哥這裡的文章旨在介紹一個中小企業內部主機數量較少的環境, 所以僅提到最簡單的以一個或兩個交換器 (swtich) 串接所有網路設備的小型星形連線狀態而已

如果你有需要相關硬體結構化佈線的資訊,可以參考風信子兄翻譯的『Swtich and Fast 乙太網路』一書的後半段!至於網路上的高手嗎?你可以前往酷學園請教 ZMAN (http://http://wordpress.morezman.com/) 大哥喔!

TCP/IP 的網路層相關封包與資料

我們現在知道要有網路的話,必須要有網路相關的硬體,而目前最常見的網路硬體介面為乙太網路包括網路線、網路卡、Hub/Switch 等等

乙太網路上面的傳輸使用網路卡卡號為基準的 MAC 訊框配合 CSMA/CD 的標準來傳送訊框這就是硬體部分

軟體部分,我們知道 Internet 其實就是 TCP/IP 這個通訊協定的通稱,Internet 是由 InterNIC(註12) 所統一管理的,

但其實他僅是負責分配 Internet 上面的 IP 以及提供相關的 TCP/IP 技術文件而已。不過 Internet 最重要的就是 IP 啊!

所以, 這個小節就讓我們來講講網路層的 IP 與路由吧!

IP 封包的封裝

IP 位址的組成與分級

IP 的種類與取得方式

IP 位址的組成與分級

2.3.4 Netmask, 子網路與 CIDR (Classless Interdomain Routing)

2.3.5 路由概念

2.3.6 觀察主機路由route

2.3.7 IP 與 MAC:鏈結層的 ARP 與 RARP 協定arp

2.3.8 ICMP 協定