在Linux下配置TCP/IP
本教程首先回顧 TCP/IP 的起源,然后闡述 TCP/IP 發展所依據的模型,還討論 TCP/IP 是如何工作的 — 包括 IP 地址、子網以及路由。打好這些理論基礎之后,我們將討論 Linux 所需要的各種網絡配置文件以及如何初始化網絡接口和如何編輯系統路由表。在本教程的,我們將簡要看一下如何分析網絡以及如何確保數據準確無誤地到達應到之處。
TCP/IP 簡史
近年來,隨著“傳輸控制協議/網際協議(TCP/IP)”套件的廣泛使用,它已經成為網絡通信中事實上的標準。這絕大部分要歸功于因特網的迅猛發展以及對在不同平臺、設備和操作系統中以它們都理解的“語言”來共享數據的需要。讓我們首先了解 TCP/IP 的歷史。
在 20 世紀 60 年代后期,美國國防部(DOD)意識到其內部日漸突出的通信問題。在 DOD 工作人員、研究實驗室、大學以及承包商之間日益增長的電子信息通信量遇到了嚴重的障礙。組成 DOD 的不同實體和組織擁有來自不同計算機制造商的計算機系統,這些計算機系統運行不同的操作系統并使用不同網絡拓撲結構和協議。
研究項目局(Advanced Research Projects Agency,ARPA)被授命提出一種解決這個問題的方案。ARPA 與各大學和計算機制造商結盟來開發一組通信標準。該聯盟確定并構建了 4 節點的網絡,這就成為當今因特網的基礎。在 20 世紀 70 年代,該網絡移植到一個新的、核心的協議設計中,這個協議就成為 TCP/IP 的基礎。
開放系統互連(Open System Interconnection,OSI)模型
現在,我們使用許多不同類型的計算機,它們有著不同的操作系統、CPU 和網絡接口等等。這些不同使得計算機系統間的通信出現問題。在 1997 年,國際標準化組織(ISO)創建了一個小組委員會來開發數據通信標準以促進多供應商的互操作性。其結果就是開放系統互連(OSI)模型。
OSI 模型并未確定任何通信標準或協議;相反,它只是提供了通信任務應該遵循的一些指導性建議。
注:OSI 模型只是一種模型或框架,它確定了要執行的功能,理解這一點很重要。它并未詳細說明如何執行這些功能。但是,對于部分 OSI 模型,ISO 也確實接納了某些符合 OSI 標準的具體協議。例如,ISO 接受 CCITT X.25 協議,該協議作為一種實現提供了 OSI 模型中網絡層的大部分服務。
7 個 OSI 層
為簡單起見,ISO 小組委員會采用分而治之的方法。將復雜的通信過程分為較小的子任務,問題就變得更容易處理,每個子任務可以分別優化。OSI 模型由 7 層組成:
· 應用層
· 表示層
· 會話層
· 傳輸層
· 網絡層
· 數據鏈路層
· 物理層
給每一層都分配了一組特定的功能。每一層都使用下層的服務并為其上層提供服務。例如,網絡層使用數據鏈路層的服務并為傳輸層提供與網絡相關的服務。
OSI 層
利用相鄰層的服務和為其相鄰層提供服務,這種層的概念很簡單。考慮公司是如何運做的:秘書寫備忘錄來向總裁(相鄰的上一層)提供秘書服務。秘書使用信使的服務(相鄰的下一層)來發送消息。通過將這些服務分開,秘書(應用程序)就不必知道消息實際上是如何傳遞到接收者手中。秘書只需要求信使(網絡)發送消息即可。正如許多秘書通過使用這種標準的信使服務來發送備忘錄一樣,分層的網絡可以通過將信息包交給網絡層來發送這些信息包。
注:不要將應用層與在計算機上執行的應用程序混淆(在英文中都是一個詞 — application)。請記住,應用層是 OSI 模型的一部分,它并未具體指定用戶和通信路徑之間的接口是如何工作的,應用程序是這個接口的具體實現。實際的應用程序通常執行應用層、會話層和表示層的服務,而將傳輸層、網絡層、數據鏈接層和物理層服務留給網絡操作系統來處理。
跨層通信
每一層都與其它計算機中的同一層通信。例如,一個系統中的第 3 層與另一個計算機系統的第 3 層通信。
當信息從一層傳到下一層時,會在數據前面加一個頭,以指出該信息的來源和目的地。來自某一層的由數據和頭所組成的信息塊又成為下一層的數據。例如,當第 4 層將數據傳遞到第 3 層時,它會添加自己的頭。當第 3 層將該信息傳遞到第 2 層時,第 3 層會將來自第 4 層的頭加數據作為它的數據,并在該數據前添加第 3 層的頭,然后才將這個“頭 + 數據”組合傳給下一層。
每一層信息單元的名稱都不同:
應用層 -->; 消息
傳輸層-->; 段
網絡層 -->; 數據報
數據鏈路層 -->; 幀(也稱做信息包)
物理層 -->; 位
在 OSI 模型出現前,美國國防部定義了它自己的網絡模型,即 DOD 模型。DOD 模型與 TCP/IP 協議套件有緊密的聯系,這將在下一節說明。
TCP/IP 協議棧(TCP)
TCP/IP 協議棧表示了與 OSI 模型類似的網絡體系結構。
但 TCP/IP 不象 OSI 模型那樣詳細區分協議棧的上面幾層。OSI 上面的 3 層大致與 TCP/IP 的網際處理協議相當。處理協議的一些示例有 Telnet、FTP、SMTP、NFS、SNMP 和 DNS。
OSI 模型的傳輸層負責可靠數據的發送。在網際協議棧中,這對應于主機到主機協議。這方面的示例 TCP 和 UDP。TCP 用來轉換來自上層協議的不定長消息以及提供遠程系統間必要的確認和面向連接的流控制。
UDP 與 TCP 相似,但它不是面向連接的,而且不對數據接收進行確認。UDP 僅接收消息并將其傳遞給上層協議。因為 UDP 沒有與 TCP 有關的那些開銷,所以它為如遠程磁盤服務等操作提供更高效的接口。
TCP/IP 協議棧(IP)
網際協議(IP)負責系統間無連接方式的通信。它相當于 OSI 模型中網絡層的一部分,它負責網絡間的信息移動。通過檢查網絡層地址來完成這種通信,該地址確定了發送消息的系統和路徑。
IP 提供與網絡層相同的功能并幫助獲取系統間的消息,但是它不保證這些消息能夠成功傳送。IP 還可以將這些消息分成多個段,然后在目的地重組這些段。另外,每一段可以采用不同的網絡路徑在系統間傳送。如果這些段到達時亂了次序,IP 則會在目的地將這些信息包重組成正確的序列。
IP 地址
網際協議要求為網絡上的每個設備分配一個地址。這個地址就是 IP 地址,它由 4 個八位元組成。這些八位元每個都定義的地址,這個地址的一部分表示網絡(有時也可以表示子網),而另一部分則表示網絡上特定的節點。
在 TCP/IP 網絡中有幾個地址具有特殊含義:
· 以零開頭的地址表示當前網絡中的本地節點。例如,0.0.0.23 指當前網絡中的 23 號工作站。地址 0.0.0.0 指當前工作站。
· 在進行故障排除和網絡診斷時,以 127 開頭的地址非常重要。形式上將網絡地址塊 127.x.x.x 定義為 A 類地址,保留了該地址塊以用于內部回送(loopback)。
· 將地址上所有位全置為 1(也就是值 255)代表"所有"地址。所以,192.18.255.255 意味著將消息發送給 192.18. 網絡上的所有節點;類似的,255.255.255.255 意味著將消息發送給因特網上的每個節點。這些地址用于多點廣播消息和服務公告。
注意:給系統分配節點號時,不要使用 0 或 255,它們都是保留數字,具有特殊含義。
IP 地址類型
將 IP 地址按一定范圍分配,稱為將 IP 地址分類,這取決于應用和組織的規模。三種常見的類型地址是 A 類地址,B 類地址和 C 類地址。這三種分類表示了可為本地網絡分配的 IP 地址中位的數目。
A 類地址用于非常大的網絡或相關網絡的集合。B 類地址用于超過 256 個節點(但少于 65536 個節點)的大型網絡。而大多數組織采用 C 類地址。一個組織采用幾個 C 類地址的做法是一個好主意,因為 B 類地址的數量是有限的。 D 類地址被保留用于網絡上消息的多點廣播,E 類地址則被保留用于實驗和開發。
類 地址
A 從 0.x.x.x 到 126.x.x.x
B 從 128.0.x.x 到 191.255.x.x
C 從 192.0.0.x 到 223.255.255.x
D 從 224.0.0.1 到 239.255.255.255
E 從 240.x.x.x 到 255.255.255.255
“專用”IP 地址
如果您的網絡沒有連接到因特網而且近也不會連接的話,則可以自由選擇任何合法的網絡地址。只是要確保您內部網絡信息包不會跑到實際的因特網中即可。要確保即便信息包確實跑出也不會有任何危害,應該使用為專用而保留的那些網絡地址的某個號碼。因特網賦號管理局(Internet Assigned Numbers Authorit,IANA) 已經在 A、B 和 C 類地址中保留了一些網絡號,您無需注冊就可以使用這些地址。這些地址只有在專用網絡中才有效,而且(理論上)不會路由到實際的因特網站點中。
A 10.0.0.0
B 172.16.0.0 - 172.31.0.0
C 192.168.0.0 - 192.168.255.0
請注意第二塊和第三塊分別包含 16 個和 256 個網絡。
從這些網絡號碼中選擇一個地址對于那些完全沒有連接到因特網的網絡是十分有用的。通過將單個主機用做網關,仍然可以實現訪問另一個網絡(如因特網)。對于本地網絡而言,可以通過內部專用 IP 地址來訪問該網關,而外部世界則通過正式注冊的地址(由帶寬供應商分配)知道該網關。
子網和子網掩碼
劃分子網是將大型的、實際的網絡分成較小的邏輯網絡的過程。劃分網絡的原因有以下幾點:聯網技術的電氣(物理層)限制;為簡便起見,希望在建筑物的每一層(或每個部門或針對每個應用)放置一個獨立的網絡而劃分網絡;減少網絡段負載;或需要用高速線路連接遠程位置。
劃分網段的結果是使整個網絡變成由一些小型子網塊組成的網絡,從而易于管理。這些較小的子網之間的通信通過網關和路由器進行。同樣,一個組織可以有幾個物理上在同一個網絡中的子網,以便將網絡功能邏輯地分成多個工作組。
單獨的子網是整個網絡的分支。假使將一個 B 類網絡分成 64 個單獨的子網。要完成這種子網劃分,需要將 IP 地址視為兩部分:網絡和主機。網絡部分由所分配的 IP 地址和子網信息位組成。實際上,這些位是借用主機的地址部分。分配給 B 類網絡來表示網絡部分的位數是 16,再加上子網部分的 6 位,共有 22 位來區分子網。這種劃分的結果是有 64 個網絡,每個網絡 1024 個節點。IP 地址中的網絡部分可大可小,這取決于所希望的網絡數目或每個網絡的節點數。
子網,第二部分
設置子網掩碼實際上就是確定網絡地址在何處結束以及主機地址在何處開始。子網掩碼是由全為 1 的網絡部分和全為零的主機部信息包成。
假使一個 C 類網由下列部信息包成:
N = 網絡
H = 主機
NNNNNNNN.NNNNNNNN.NNNNNNNN.HHHHHHHH
每一位置表示 32 位地址空間中的一位。如果將這個 C 類網分成四個 C 類網絡,其表示形式如下:
NNNNNNNN.NNNNNNNN.NNNNNNNN.NNHHHHHH
子網掩碼如下:
11111111.11111111.11111111.11000000
如果用十進制數和點符號表示(即點分四組(dotted quad))這個地址,則子網掩碼是 255.255.255.192。該掩碼用于這個特定網絡中所有子網上的節點之間的通信。
相反,如果從 IP 地址的主機部分取出三位,則可以形成八個網絡,其網絡掩碼如下:
11111111.11111111.11111111.11100000
該子網掩碼是 255.255.255.224。這八個網絡中的每一個可有 30 個節點,因為有 5 個地址位可以使用。(本應該是 32 個,但由于全為 1 和全為 0 是不合法的主機地址,所以不能使用)。
網絡 主機地址范圍 廣播
192.168.1.0 192.168.1.0 to 192.168.1.30 192.168.1.30
192.168.1.32 192.168.1.32 to 192.168.1.63 192.168.1.63
192.168.1.64 192.168.1.64 to 192.168.1.95 192.168.1.95
192.168.1.96 192.168.1.96 to 192.168.1.127 192.168.1.127
192.168.1.128 192.168.1.128 to 192.168.1.159 192.168.1.159
192.168.1.160 192.168.1.160 to 192.168.1.191 192.168.1.191
192.168.1.192 192.168.1.192 to 192.168.1.223 192.168.1.223
192.168.1.224 192.168.1.224 to 192.168.1.254 192.168.1.254
提示:如果需要一些計算子網方面的幫助,可以在 www.cotse.com/networkcalculator.html 上查找在線子網計算器。
跨網絡通信:網關和路由
由于 IP 尋址具有這種結構,所以主機只能與同一網絡上的其它主機通信。為克服這種限制,我們給網絡添加了路由和網關。路由是確定信息包從源到目的地所采用的路徑的機制。通過在路由表中查找目的地的 IP 地址來建立路徑或路由。如果找到該地址,則將信息包發送到那個網絡;如沒有找到,則將信息包轉發到稱為缺省路由的項,這就是所有“未知”地址的信息包轉發到的機器或設備的 IP 地址。
執行路由和/或轉發功能的機器或設備稱做網關或路由器。有時這兩個術語也可以互換使用。從技術角度講,網關描述這樣的系統或設備,它在不同類型網絡之間發送消息;而路由器在相同類型網絡之間發送消息。因為我們只討論使用 TCP/IP 協議的聯網,所以不考慮這點細微差別,但是要意識到二者之間是有區別的。
還值得注意的是,通過定義,我們知道網關裝配了不止一個網絡接口(即 A 和 B),每一個網絡接口都配置了不同的 IP 或 IP/子網。這就是“網絡橋接”得以實現的原因。信息包到達接口 A,然后根據充當網關的這臺設備上路由表中的各項,執行下列四個操作之一。可以將信息包:
· 發送到網絡 A 上的主機
· 傳遞到網絡 A 上的“上游”缺省路由設備
· 發送到網絡 B 上的主機
· 傳遞到網絡 B 上的“上游”缺省路由設備
路由配置
有四種常見的路由配置:
· 小 — 完全與其它所有網絡隔離開的網絡僅需要小的路由。通常在初始化網絡接口時,建立小的路由表。如果不需要與其它的 TCP/IP 網絡通信,而且不用劃分子網,則這就是系統所需的所有路由信息。
· 靜態 — 網絡有一個或兩個網關時,通常使用靜態路由來配置網絡。靜態路由表由網絡配置腳本(使用用戶提供的 IP)自動地創建或者由系統管理員手工創建(使用第五節中討論的 /sbin/route 命令)。該表正如其名稱所指的那樣 — 是靜態的。它不隨網絡的變化而做調整。當網絡變化時,必須手工重新配置該路由表。
· 動態 — 大型網絡通常都安裝了多個路由器和/或網關,出于冗余/故障恢復的目的,它們可能指向同一遠程網絡。這就是動態路由的用武之地。動態路由允許使用一種協議 — 是的,您猜對了 — 稱作路由協議,根據路由設備之間所交換的信息動態地構造(并不斷地更新)路由表。這種持續不斷的信息交換提供了一種機制,利用這種機制可以自動調節路由來適應不斷變化的網絡條件 — 譬如,通信量過大或運行中斷。動態路由的缺點是設備間的路由信息交換會消耗相當大的帶寬。
· 第四個選項是使用靜態和動態路由的組合。每個子網上的機器都使用靜態路由以到達緊鄰它們的機器。缺省路由 — 那些沒有由路由表分配特定路由的信息包所使用的路由 — 被設置通向一臺網關機器,該機器被配置成可以提供動態路由,因此也就了解其子網以外的網絡。
動態路由是基于這幾個路由協議(內部協議,如 RIP、Hello 和 OSPF 等等;外部協議,如 EGP 和 BGP)之一,通過網關路由守護程序 gated 來啟用動態路由。動態路由不是本教程所討論的范圍。想要了解有關這方面的更多信息,請參閱本教程結束部分的“結束語,參考資料和反饋意見”中所列出的 Craig Hunt 的 TCP/IP Network Administration 一書。
結束語
在本教程中,我們已經討論了 TCP/IP 的歷史、OSI 模型和它與 TCP/IP 設計的關系、IP 尋址、子網劃分和路由 — 所有這些都是從理論角度來闡述的。然后我們著手研究了如何在 Red Hat 7.0 下初始化 TCP/IP 網絡,以及講述了 Red Hat 下的一些文件是做什么用的。接下來,我們探討了如何配置網絡接口以及如何指定本地局域網和“外部世界”間的路由。,本教程探討了 netstat 程序以及如何使用該程序來檢查網絡是否正常。
確實,需要汲取許多知識,但是 TCP/IP 是一個很大的主題,有數百條的分支,一個人不可能在兩三天內完全掌握它。事實仍然是:TCP/IP 是因特網的主干,路由是將所有主機和網絡“粘”在一起的“粘合劑”,而 IP 地址代表我們在這個世界里“沖浪”時所要訪問的地方。當您想到這一點,并考慮到過去三、四年人們對計算機領域,特別是因特網的需求飛速增長時,您會覺得這些基礎設施確實在非常好地支撐這些。
在網上有:
· Linux System Administrator's Guide
· 學習如何 Easily configure TCP/IP on your AIX system
· IBM 提供了一些用于網絡監控的工具,譬如 Tivoli NetView Performance Monitor for TCP/IP
· 訪問 TCP/IP for OS/40O 的主頁
· 請閱讀關于實現 iSeries 和 AS/400 的 TCP/IP 和因特網訪問
· 如果您可以在線搜索和參考,則我強烈向您推薦 O'Reilly 新的 Safari 訂閱服務。您可以完全搜索并選擇一些曾經出版過的有關網絡方面的書籍。
出版的書籍有:
· TCP/IP Network Administration, 2nd Edition,Craig Hunt(O'Reilly)ISBN:1-56592-322-7
· Linux in a Nutshell, 3rd Edition,Siever, Spainhour, Figgins, and Hekman(O'Reilly)ISBN:0-596-00025-1
· Running Linux, 3rd Edition, Welsh, Dalheimer, and Kaufman(O'Reilly)ISBN:1-56592-469-X
在Linux下配置TCP/IP
更新時間: 2007-04-21 15:26:05來源: 粵嵌教育瀏覽量:942