目錄
摘要
Linux 提供所有必要的網路工具及功能,以整合到所有類型的網路結構。自定的 Linux 通訊協定、TCP/IP,具有各種服務與特殊功能,將會在這裏討論。使用網路卡、數據機或其他設備進行網路存取可以使用 YaST 來設定。也可使用手動方式來設定組態。本章節僅討論基本機制及相關的網路組態檔。
Linux 及其他 Unix 作業系統使用 TCP/IP 通訊協定。它不是單一網路通訊協定,而是能夠提供各種服務的網路通訊協定家族的一員。表格 30.1 「TCP/IP 通訊協定家族中的數種通訊協定」中列示的通訊協定,提供透過 TCP/IP 在兩個機器之間交換資料的用途。由 TCP/IP、全球網路所結合而成的網路,整體上就是指「網際網路」。
RFC 代表 要求建議 (Request for Comments)。RFC 是描述作業系統及其應用程式的各種網際網路通訊協定和執行程序的文件。RFC 文件描述網際網路通訊協定的設定。若要擴展您對於任何通訊協定的知識,請參閱適當的 RFC 文件。這些文件可從 http://www.ietf.org/rfc.html 線上取得。
表格 30.1. TCP/IP 通訊協定家族中的數種通訊協定
協定 |
描述 |
---|---|
傳輸控制通訊協定:連接導向的安全性通訊協定。傳輸的資料首先由應用程式當做資料流傳送出去,然後再由作業系統轉換為適當格式。資料以最初傳送的原始資料流格式,抵達到目的地主機的相關應用程式。TCP 會決定傳輸期間是否遺失任何資料,且沒有混亂。只要是資料順序很重要的地方,就會執行 TCP。 | |
使用者資料包通訊協定:無連接、不安全的通訊協定。要傳送的資料以應用程式產生的封包形式加以傳送。不會保證資料在收件者端抵達的順序,而且可能遺失資料。UDP 適用以記錄為導向的應用程式。它的特點是延遲時間比 TCP 短。 | |
網際網路控制訊息通訊協定:基本上,這不是適用一般使用者的通訊協定,而是發佈錯誤報表的特殊控制通訊協定,能夠控制參與 TCP/IP 資料傳送之機器的行為。此外,它還提供特殊的回音模式,可以使用 ping 程式檢視。 | |
網際網路群組管理通訊協定:此通訊協定在實做 IP 多點廣播時控制機器行為。 |
如 圖形 30.1 「TCP/IP 的簡化層模型」 中所顯示,資料交換發生在不同層。實際的網路層是透過 IP (網際網路通訊協定,Internet Protocol) 進行不安全的資料傳輸。在 IP 的上方,TCP (傳輸控制通訊協定,Transmission Control Protocol) 可以保證資料傳輸某種程度的安全性。IP 層是由基本的硬體相依通訊協定所支援,例如乙太網路。
圖表提供每層的一或兩個範例。層的順序是依據抽象階層 (abstraction level)。最低層非常靠近硬體。不過,最上層對硬體而言幾乎是完全抽象的。每層都有自己的特殊功能。這些特殊功能通常隱含於其描述中。資料連結及實體層代表使用的實體網路 (如乙太網路)。
幾乎所有的硬體通訊協定都是採用封包導向模式。要傳輸的資料是裝在封包中,因為無法一次傳送它。TCP/IP 封包的大小上限約為 64 KB。封包一般而言較小,因為可能受限於網路硬體的關係。乙太網路上資料封包的最大上限約為 1500 個位元組。在乙太網路上傳送資料時,TCP/IP 封包的大小受限於此數量。如果傳送更多資料,則需要由作業系統傳送更多資料封包。
因為每層有自己指定的功能,關於每層的其他資訊必須儲存於資料封包中。這些資訊放在封包的「標頭」中。每層皆在產生的封包前端附加小的資料區塊,稱為通訊協定標頭。在乙太網路纜線上傳送的 TCP/IP 資料封包範例,可參閱在 圖形 30.2 「TCP/IP 乙太網路封包」 中的說明。proof sum 位於封包結尾,不在開頭處。這樣可幫助網路硬體簡化程序。
當應用程式在網路上傳送資料時,資料會經過每一層,除實體層外,全部在 Linux 核心執行。每層都負責準備資料使其能夠傳送到下一層。最底層最後要負責傳送資料。接收到資料時則反轉執行整個程序。就如同洋蔥的層級一般,在每層中,會從已傳輸的資料上移除通訊協定標頭。最後,傳輸層負責讓目的地端的應用程式可以使用資料。以這種方式,每層僅直接與上下兩層通訊。對於應用程式而言,無論資料是透過 100 MBit/s FDDI 網路或 56-Kbit/s 數據線進行傳輸,都沒有關係。同樣地,對於資料線而言,只要封包的格式正確,無論傳送的是哪種類型的資料也是無關的。
在此節中的討論僅限於 IPv4 網路。如需有關 IPv6 通訊協定 (IPv4 的後繼者) 的資訊,請參閱第 30.2 節「IPv6—下一代的網際網路」。
網際網路上的每台電腦都有唯一的 32 位元位址。這些 32 位元 (或 4 位元組) 一般所寫入的格式,如 範例 30.1 「寫入 IP 位址」 中的第二列所述。
範例 30.1. 寫入 IP 位址
IP Address (binary): 11000000 10101000 00000000 00010100 IP Address (decimal): 192. 168. 0. 20
採用十進位格式,四位元組以十進位數字系統撰寫,以句號分隔。IP 位址是指定給主機或網路介面。其他地方無法使用。此規則有例外狀況,但是與下文中並無關聯。
IP 位址中的點表示階層系統。直到 1990 年代,IP 位址仍嚴格地以類別加以分類。然而,此系統已證明太過死板而已停止採用。現在,則是使用無類別路由 (classless routing),即 CIDR (無類別網域間路由,classless interdomain routing)。
網路遮罩是用來定義子網路的位址範圍。如果兩台主機位於相同的子網路遮罩,他們可以直接相互連結,如果他們不在同一個子網路遮罩,則需要閘道位址,以處理子網路和其他網路的通訊。若要檢查兩個 IP 位址是否位於同一子網路,只要使用網路遮罩 「AND」 兩個位址。如果結果相同,兩個 IP 位址位於同一個網路。如果不同,遠端的 IP 位址,即為遠端介面,只能透過閘道來通訊。
若要瞭解網路遮罩如何作用,請參閱範例 30.2 「連結 IP 位址到網路遮罩」。網路遮罩由 32 位元組成,可辨認 IP 位址屬於哪個網路。這些位元為 1
標示 IP 位址中的對應位元,即表示為同屬一個網路。所有位元為 0
標示位元在子網路內。這表示愈多位元為 1
,子網路就愈小。因為網路遮罩永遠由多個連續的 1
組成,也可以計算網路遮罩內的位元數。範例 30.2 「連結 IP 位址到網路遮罩」中,第一個 24 位元的網路也可寫成 192.168.0.0/24
。
範例 30.2. 連結 IP 位址到網路遮罩
IP address (192.168.0.20): 11000000 10101000 00000000 00010100 Netmask (255.255.255.0): 11111111 11111111 11111111 00000000 --------------------------------------------------------------- Result of the link: 11000000 10101000 00000000 00000000 In the decimal system: 192. 168. 0. 0 IP address (213.95.15.200): 11010101 10111111 00001111 11001000 Netmask (255.255.255.0): 11111111 11111111 11111111 00000000 --------------------------------------------------------------- Result of the link: 11010101 10111111 00001111 00000000 In the decimal system: 213. 95. 15. 0
舉另外一個例子:使用相同乙太網路纜線連接的所有機器,通常位於同一個子網路中,而且可以直接存取。即使以交換器或橋接器實際分配子網路時,仍然可以直接連接這些主機。
位於本地子網路外的 IP 位址只能在設定目標網路的閘道時,才能與本地通訊。在大部分的狀況下,只能有一個閘道來處理所有對外的通訊。但是,您也可以為不同的子網路,設定多個閘道。
如果已經設定閘道,所有的外部 IP 封包會傳送到適當的閘道。然後此閘道會試圖以同樣方式傳送封包--主機對主機—直到連結到目標主機或封包 TTL (持續時間) 過期。
表格 30.2. 特定位址
位址類型 |
描述 |
---|---|
這是網路遮罩「及」網路中的任何位址,如 | |
基本來說,即為「存取此子網路的所有主機」。若要產生此位址,網路遮罩會以二進位格式反轉,連結到具有邏輯 OR 的基本網路位址。因此以上範例會得到 192.168.0.255。此位址無法指派給任何主機。 | |
位址 |
因為 IP 位址在全世界必須是唯一的,您不能只選取隨機位址。如果要設立私人 IP 結構的網路,有三種位址網域可以使用。這些將無法從其他網際網路取得連結,因為他們無法透過網路傳送。這些位址網域在 RFC 1597 指定並列於 表格 30.3 「私人 IP 位址網域」 中。
表格 30.3. 私人 IP 位址網域
網路/網路遮罩 |
網域 |
---|---|
|
|
|
|
|
|