LT-0807奈籽,2018.03.11翻譯,@成都
聲明
本文是一篇關(guān)于TCP/IP協(xié)議組件的RFC辆影,聚焦于一個IP數(shù)據(jù)包經(jīng)過一個路由器從源主機發(fā)送到目標主機的具體步驟昭卓。本文沒有定義任何新的互聯(lián)網(wǎng)標準。你可以不受限制的發(fā)行本RFC(Request for Comments 1180)触创。
目錄
- 01 簡介
- 02 TCP/IP概要
- 03 以太網(wǎng)
- 04 ARP
- 05 IP
- 06 UDP
- 07 TCP
- 08 上層應(yīng)用
- 09 補充信息
- 10 參考文獻
- 11 與其他RFC的關(guān)系
- 12 安全建議
- 13 聯(lián)系作者
01 簡介
本文闡述了一個TCP/IP最顯著的特點坎藐,它也是TCP/IP技術(shù)的本質(zhì)。本文忽略了TCP/IP的發(fā)展歷程哼绑、商業(yè)案例岩馍、未來路線圖以及與ISO/OSI參考模型之間的比較,事實上許多的技術(shù)細節(jié)也被忽略掉了凌那,僅最低限度地保留了在TCP/IP環(huán)境中工作的專業(yè)人士必須要了解的知識兼雄,這些專業(yè)人士包括系統(tǒng)管理員吟逝、程序員以及網(wǎng)絡(luò)管理員帽蝶。
本文使用的樣例來自Unix環(huán)境,但是TCP/IP是通用的块攒。
注意:本文的目的是解釋励稳,而非定義。如果你對文中某個協(xié)議的說明有任何的質(zhì)疑囱井,請查閱相關(guān)的RFC并以事實標準為準驹尼。
下一節(jié)是TCP/IP的概覽,接下來再單獨對每一個組件進行詳細講解庞呕。
02 TCP/IP概要
術(shù)語“TCP/IP”常常意味著每一樣與TCP新翎、IP技術(shù)相關(guān)的,甚至不屬于TCP住练、IP范疇的東西地啰。它指的可能是其它一些協(xié)議,也有可能是上層應(yīng)用甚至網(wǎng)絡(luò)媒介讲逛。例如常見的UDP亏吝、ARP以及ICMP協(xié)議,常見的應(yīng)用:Telnet盏混、FTP以及RCP蔚鸥。有一個更準確的叫法:“互聯(lián)網(wǎng)技術(shù)(internet technology)”。一個網(wǎng)絡(luò)如果使用了互聯(lián)網(wǎng)技術(shù)則可以稱之為互聯(lián)網(wǎng)许赃。
02.01 基礎(chǔ)結(jié)構(gòu)
想要理解這門技術(shù)止喷,你首先要理解下圖的邏輯結(jié)構(gòu)。
這就是互聯(lián)網(wǎng)中一臺主機的內(nèi)部網(wǎng)絡(luò)協(xié)議的層狀邏輯結(jié)構(gòu)圖混聊。每一臺使用互聯(lián)網(wǎng)技術(shù)相連的主機內(nèi)部都有這樣的邏輯結(jié)構(gòu)弹谁。也正是這樣的邏輯結(jié)構(gòu)決定了主機在互聯(lián)網(wǎng)上的表現(xiàn)行為。圖中的矩形框代表數(shù)據(jù)經(jīng)過主機時的處理過程,連接矩形框的線條代表數(shù)據(jù)通過的路徑僵闯。最底端的水平線條代表連接網(wǎng)絡(luò)的物理線纜卧抗,符號“o
”代表調(diào)制解調(diào)器,“*
”代表IP地址鳖粟,“@
”代表Mac地址社裆。理解這個邏輯結(jié)構(gòu)是理解互聯(lián)網(wǎng)技術(shù)的關(guān)鍵,它也自始至終地貫穿于本文向图。
02.02 術(shù)語
在網(wǎng)絡(luò)中傳輸?shù)拿總€單元的數(shù)據(jù)叫什么名字取決于它存在于哪一層協(xié)議棧泳秀。簡單的來講,數(shù)據(jù)如果在網(wǎng)卡以下可以稱之為以太幀榄攀,如果在網(wǎng)卡與IP模塊之間可以稱之為IP包嗜傅,如果在IP模塊與UDP模塊之間可以稱之為UDP數(shù)據(jù)報,如果在IP模塊與TCP模塊之間可以稱之為TCP段(通常叫TCP消息)檩赢,數(shù)據(jù)如果在上層應(yīng)用中則稱之為應(yīng)用消息吕嘀。
這些定義并不完美,事實上在不同的版本中定義是千變?nèi)f化的贞瞒。更具體的定義可以參考RFC1122的1.3.3節(jié)偶房。
本文中,驅(qū)動是指可以直接與網(wǎng)絡(luò)硬件進行通信的軟件军浆,模塊是指可以與驅(qū)動或應(yīng)用或其他模塊進行通信的軟件棕洋。
術(shù)語“驅(qū)動、模塊乒融、以太幀掰盘、IP包、UDP數(shù)據(jù)報赞季、TCP消息愧捕、應(yīng)用消息”會根據(jù)需要適時使用于本文。
02.03 數(shù)據(jù)流
讓我們化身為數(shù)據(jù)向著圖1所示的各層協(xié)議棧穿流而下吧碟摆!一個應(yīng)用如果使用TCP協(xié)議(傳輸控制協(xié)議“Transmission Control Protocol”)晃财,數(shù)據(jù)會經(jīng)過應(yīng)用與TCP模塊;如果使用UDP協(xié)議(用戶數(shù)據(jù)報協(xié)議“User Datagram Protocol”)典蜕,則經(jīng)過應(yīng)用與UDP模塊断盛。FTP(文件傳輸協(xié)議“File Transfer Protocol”)就是一個典型的使用TCP的應(yīng)用,從上往下它依次用到FTP/TCP/IP/ENET愉舔。SNMP(簡單網(wǎng)絡(luò)管理協(xié)議“Simple Network Management Protocol”)則是一個常見的使用UDP的應(yīng)用钢猛,從上往下它依次用到SNMP/UDP/IP/ENET。
TCP模塊轩缤、UDP模塊以及以太網(wǎng)卡都是多對一的多路復用器命迈,多路復用器可以把多路輸入整合為一路輸出贩绕;此外它們還是一對多的逆向多路復用器,可以根據(jù)協(xié)議頭的類型字段把一路輸入發(fā)散為多路輸出壶愤。
一個以太幀經(jīng)網(wǎng)卡驅(qū)動向上傳遞的時候淑倾,數(shù)據(jù)可以同時發(fā)往ARP和IP,此時以太幀的類型字段的值決定了該數(shù)據(jù)應(yīng)該發(fā)往ARP還是IP模塊征椒。
一個IP包經(jīng)IP模塊向上傳遞的時候娇哆,可以同時發(fā)往TCP和UDP,IP包頭部的協(xié)議字段的值決定了該數(shù)據(jù)應(yīng)該發(fā)往TCP還是UDP模塊勃救。
UDP數(shù)據(jù)報經(jīng)UDP模塊向上傳遞的時候碍讨,數(shù)據(jù)發(fā)往上層應(yīng)用則基于UDP數(shù)據(jù)報頭部的端口字段的值;TCP消息經(jīng)TCP模塊向上傳遞的時候蒙秒,數(shù)據(jù)發(fā)往上層應(yīng)用則基于TCP消息頭部的端口字段的值勃黍。
多路復用向下傳輸數(shù)據(jù)的實現(xiàn)非常簡單,因為對于任何一個開始的節(jié)點晕讲,往下走都只有一條路覆获。數(shù)據(jù)每流經(jīng)一層都會被添加上該層的協(xié)議頭,這樣目標主機也可以方便的反向解碼數(shù)據(jù)益兄。
不管是TCP還是UDP锻梳,數(shù)據(jù)都會匯聚到IP模塊箭券,再往下净捅,發(fā)送給底層的網(wǎng)卡驅(qū)動。
盡管互聯(lián)網(wǎng)技術(shù)支持諸多的網(wǎng)絡(luò)媒介辩块,以太網(wǎng)卻是IP使用的最廣泛蛔六、最普及的物理網(wǎng)絡(luò),這也是本文采用以太網(wǎng)作為樣例的原因废亭。圖1的主機只連接到一個網(wǎng)絡(luò)国章,在一個以太網(wǎng)中,每個網(wǎng)絡(luò)接口都有一個唯一的6字節(jié)的Mac地址豆村,它位于網(wǎng)卡驅(qū)動底部的接口上液兽。
該主機還有一個4字節(jié)的IP地址,位于IP模塊底部的接口上掌动。在同一個網(wǎng)絡(luò)中四啰,每一個IP地址都是唯一的。
一臺運行中的主機總是清楚的知道自己的IP地址與Mac地址粗恢。
02.04 兩張網(wǎng)卡
一臺主機可以同時連接到兩個獨立的網(wǎng)絡(luò)柑晒,如圖3:
注意,該主機有兩個Mac地址和兩個IP地址眷射。
從上圖的邏輯結(jié)構(gòu)中匙赞,我們可以看到:這臺主機有兩張網(wǎng)卡佛掖,而IP模塊則變成了多對多的多路復用器/逆向多路復用器。
IP模塊自動調(diào)節(jié)輸入數(shù)據(jù)與輸出數(shù)據(jù),這樣就實現(xiàn)了兩個方向上的多路復用。一個IP模塊連接多個網(wǎng)絡(luò)要比我們第一個樣例復雜逻谦,因為它能夠在不同的網(wǎng)絡(luò)間轉(zhuǎn)發(fā)數(shù)據(jù)拔鹰。數(shù)據(jù)可以從任一網(wǎng)絡(luò)入站,再轉(zhuǎn)發(fā)到另一個網(wǎng)絡(luò)须肆。
IP包從一個網(wǎng)絡(luò)發(fā)往另一個網(wǎng)絡(luò)的過程叫做轉(zhuǎn)發(fā)IP包。一臺主機如果專注于轉(zhuǎn)發(fā)IP包的工作,可以稱之為IP路由器羹铅。
我們可以從圖5中看到:通過IP路由器轉(zhuǎn)發(fā)的IP包是到達不了TCP或者UDP模塊的,有些IP路由器甚至壓根就沒有TCP和UDP模塊愉昆。
02.05 IP創(chuàng)造了互聯(lián)網(wǎng)
IP模塊是互聯(lián)網(wǎng)技術(shù)取得成功的關(guān)鍵职员。當數(shù)據(jù)往下層流轉(zhuǎn)時,每一層的模塊/驅(qū)動把自己的相關(guān)信息添加到數(shù)據(jù)形成消息頭跛溉。當數(shù)據(jù)向上流轉(zhuǎn)發(fā)往上層應(yīng)用時焊切,每一層的模塊/驅(qū)動則會剝?nèi)ハ鄳?yīng)的消息頭。IP消息頭包含有IP地址芳室,它從眾多的物理網(wǎng)絡(luò)中創(chuàng)建了一個單獨的邏輯網(wǎng)絡(luò)专肪。內(nèi)部相互連接的物理網(wǎng)絡(luò)就是名稱“互聯(lián)網(wǎng)(internet)”的由來。限制在一個IP包范圍以內(nèi)的一個連接著的物理網(wǎng)絡(luò)的集合堪侯,就叫做“互聯(lián)網(wǎng)(internet)”嚎尤;
02.06 物理網(wǎng)絡(luò)的獨立性
IP向上層應(yīng)用隱藏了底部的網(wǎng)絡(luò)硬件設(shè)施。如果你發(fā)明了一個新的物理網(wǎng)絡(luò)伍宦,只需要新開發(fā)一個可以連接到IP的底層驅(qū)動芽死,就可以讓它運轉(zhuǎn)起來。上層應(yīng)用原封不動也不會因為硬件的改變而變得脆弱次洼。
02.07 聯(lián)網(wǎng)
網(wǎng)絡(luò)中的兩臺主機可以相互通信关贵,我們就說它“聯(lián)網(wǎng)”了÷艋伲互聯(lián)網(wǎng)技術(shù)在主機上得到了很好的實現(xiàn)揖曾,我們就說它“可聯(lián)網(wǎng)”。通常我們的聯(lián)網(wǎng)需求都得到了很好的滿足亥啦,因為市場上幾乎所有的主機都具備聯(lián)網(wǎng)能力炭剪。如果一臺主機無法聯(lián)網(wǎng),又無法添加聯(lián)網(wǎng)組件禁悠,它很有可能就賣不掉了念祭。
02.08 概覽小結(jié)
有了以上的知識,我們還需要回答以下問題:
- 當我們發(fā)送一個出站的IP包時碍侦,目標主機的Mac地址是如何確定的呢粱坤?
- 在發(fā)送出站IP包時隶糕,底層有多個網(wǎng)絡(luò)接口,IP是如何確定應(yīng)該使用哪一個的呢站玄?
- 為什么既有TCP又有UDP枚驻,只要一個不行嗎?
- 上層應(yīng)用具備哪些特性才算是可靠應(yīng)用株旷?
所有這些疑問再登,在我們學習了以太網(wǎng)之后都會一一解答。
03 以太網(wǎng)
這一節(jié)是以太網(wǎng)技術(shù)的簡介
一個以太幀包含有目標主機Mac地址晾剖、源主機Mac地址锉矢、類型字段以及數(shù)據(jù)。
Mac地址有6字節(jié)長齿尽。每一臺網(wǎng)絡(luò)設(shè)備都有自己的Mac地址沽损,并且監(jiān)聽目標地址是自己Mac地址的以太幀。所有的網(wǎng)絡(luò)設(shè)備還監(jiān)聽一個目標地址是“FF-FF-FF-FF-FF-FF”(16進制)的以太幀循头,這個地址叫做廣播地址绵估。
以太網(wǎng)使用的是載波監(jiān)聽多點接入/碰撞檢測(CSMA/CD“Carrier Sense and Multiple Access with Collision Detection”)技術(shù)。載波監(jiān)聽多點接入/碰撞檢測意味著所有的設(shè)備都在同一個媒介上通信卡骂,因此同一時間只有一個設(shè)備能夠進行數(shù)據(jù)發(fā)送国裳,而其余的設(shè)備此時只能接收數(shù)據(jù)。如果同一時間兩臺設(shè)備都試圖發(fā)送數(shù)據(jù)全跨,那么傳輸沖突就會被檢測到缝左,此時兩臺設(shè)備在嘗試再次發(fā)送數(shù)據(jù)之前都會等待隨機(短暫的)一段時間。
03.01 把CSMA/CD類比到人
以太網(wǎng)技術(shù)的一個很好的類比就是一群人在一個狹小螟蒸、漆黑的屋子里談話盒使。在這個類比中,網(wǎng)絡(luò)媒介由網(wǎng)絡(luò)線纜中傳輸?shù)碾娦盘栕兂蔀榱丝諝庵袀鞑サ穆曇簟?/p>
屋子里每一個人都能聽到其他人說的話(載波監(jiān)聽“Carrier Sense”)七嫌;每一個人都有相同的說話能力(多點接入“Multiple Access”),但是他們都不會發(fā)表冗長的苞慢、啰嗦的演講诵原,因為他們都特別有禮貌;要是誰沒有禮貌挽放,他就會被請出這間屋子(關(guān)閉設(shè)備)绍赛。
其他人在說話的時候,沒有人會插嘴辑畦。但是同一時間如果有兩個人都開口說話吗蚌,這兩人都是能夠覺察到的,因為他們聽到了不是自己說的話(碰撞檢測“Collision Detection”)纯出。當這兩人意識到這個情況后蚯妇,他們就會停下來等待一段時間敷燎,然后其中一人會再說,另一個人聽到談話后他會等待其把話說完再開始自己的講話箩言。
屋子中硬贯,每一個人都有一個唯一的名字(Mac地址唯一)以避免給大家?guī)砝_。每一次談話陨收,發(fā)言人都會給自己的談話內(nèi)容加上前言:我是誰饭豹,這話是對誰講的(源主機Mac地址、目標主機Mac地址)务漩,即:“你好Jane拄衰,我是Jack,吧啦吧啦……”饵骨。如果發(fā)言人想對所有人談話肾砂,他就會說“大家好(廣播地址)!我是Jack宏悦,吧啦吧啦……”镐确。
04 ARP
當發(fā)送一個出站IP包的時候,它是如何確定目標主機的Mac地址的呢饼煞?
地址解析協(xié)議“ARP (Address Resolution Protocol)”負責把IP地址翻譯成為Mac地址源葫。只有IP包出站的時候需要進行IP地址-->Mac地址的翻譯,此時也是構(gòu)建IP頭和以太幀頭的時候砖瞧。
04.01 ARP翻譯表
翻譯其實就是一個表的查詢操作息堂。該表的表名叫ARP表,它存在于每臺主機的內(nèi)存中块促。表中有一個列存有IP地址荣堰,還有一個列存有Mac地址,把一個IP地址翻譯成為Mac地址竭翠,實質(zhì)就是在表中檢索目標IP地址振坚,取其對應(yīng)的Mac地址。下面是一張簡化的ARP表:
第一列按照人們的習慣斋扰,用十進制數(shù)字表示4字節(jié)的IP地址渡八,中間用句點分隔;第二列Mac地址传货,6字節(jié)屎鳍,十六進制表示,中間用減號或冒號分隔问裕。
ARP表必須要有逮壁。因為IP地址和Mac地址是兩個獨立的存在,你無法通過一個算法或者公式把IP地址翻譯成為Mac地址粮宛。IP地址是網(wǎng)絡(luò)管理員根據(jù)主機在網(wǎng)絡(luò)中的位置指派的窥淆,當主機在網(wǎng)絡(luò)中的位置發(fā)生變化卖宠,IP地址隨之改變。Mac地址是網(wǎng)絡(luò)硬件制造商根據(jù)以太網(wǎng)地址空間使用許可來確定的祖乳,Mac地址隨硬件接口的改變而改變逗堵。
04.02 典型的ARP翻譯場景
網(wǎng)絡(luò)上一個普通的主機間通信,比如Telnet遠程主機:Telnet消息傳遞到TCP眷昆,TCP傳遞相應(yīng)的TCP消息到IP蜒秤。在這個過程中,Telnet亚斋、TCP作媚、IP都是知道目標主機IP地址的。這個節(jié)點上帅刊,IP包已經(jīng)構(gòu)造完畢并且準備發(fā)往下一層(網(wǎng)卡驅(qū)動)纸泡,但是首先,必須把目標主機的Mac地址確定下來赖瞒。
ARP表就是被用作查找與目標主機IP地址相匹配的Mac地址的女揭。
04.03 ARP請求/響應(yīng)對
那么最開始的時候ARP表中的數(shù)據(jù)又是從哪里來的呢?答案就是ARP模塊根據(jù)需要自動插入的栏饮。
當ARP表無法翻譯一個IP地址時吧兔,會發(fā)生兩件事情:
- 一個ARP的請求包會通過廣播地址發(fā)給網(wǎng)絡(luò)上的所有主機;
- 出站的IP包進入暫存隊列袍嬉。
其他主機收到廣播幀以后境蔼,檢查其類型字段并發(fā)往ARP模塊。ARP請求包含有提問“你的IP地址與我目標主機的IP地址相同嗎伺通?如果相同請告訴我你的Mac地址”箍土。ARP請求包看起來就像這樣:
各主機的ARP模塊檢查自己的IP地址是否與ARP請求包中的目標地址相同,如果相同罐监,它便會做出響應(yīng)“是的吴藻,我就是你要找的。請記錄我的Mac地址”笑诅。ARP響應(yīng)包與ARP請求包有相似的結(jié)構(gòu)调缨,只是發(fā)送主機和目標主機的位置對調(diào)了:
發(fā)送廣播的主機收到響應(yīng)以后,檢查其類型字段并發(fā)往ARP模塊吆你。ARP模塊根據(jù)ARP響應(yīng)包中的內(nèi)容添加一條記錄到ARP表當中。
更新后的ARP看起來就像這樣:
04.04 尾聲
毫秒之間ARP請求/響應(yīng)對就完成了ARP表中新的IP地址到Mac地址映射關(guān)系的自動插入俊犯。剛才第二步我們提到妇多,出站的IP包進入了暫存隊列。接下來燕侠,通過查詢ARP表便實現(xiàn)了從IP地址到Mac地址的翻譯者祖,最后以太幀發(fā)至網(wǎng)卡立莉。因此,一個新的翻譯七问,還有步驟3蜓耻、4、5械巡,對發(fā)送主機而言:
- 一個ARP請求包通過廣播地址發(fā)給網(wǎng)絡(luò)上的每臺主機刹淌;
- 出站IP包進入暫存隊列;
- ARP響應(yīng)包返回讥耗,發(fā)送主機更新ARP表有勾;
- 完成暫存隊列中IP包的翻譯;
- 以太幀發(fā)至網(wǎng)卡古程。
簡而言之蔼卡,當ARP不能完成一個翻譯時,讓IP包進入暫存隊列挣磨,通過ARP請求/響應(yīng)迅速實現(xiàn)ARP表更新雇逞,最后完成隊列中待發(fā)送IP包的翻譯。
每一臺主機的每張網(wǎng)卡都有獨立的ARP表茁裙。如果目標主機不存在塘砸,便不會有ARP響應(yīng)返回,因此發(fā)送ARP請求的主機不會更新ARP表呜达。這時IP就會忽略掉這個出站的IP包谣蠢。上層協(xié)議是區(qū)分不了一張壞掉的網(wǎng)卡和一臺不存在的主機之間的差別的。
有些IP和ARP不會在等待ARP響應(yīng)的時候暫存待發(fā)送的IP包查近,而是采用忽略/恢復策略:忽略IP包眉踱,TCP模塊或者采用UDP協(xié)議的上層應(yīng)用意識到有丟包,重發(fā)該IP包霜威。這個策略是通過超時與重發(fā)來實現(xiàn)的谈喳。重發(fā)的數(shù)據(jù)總會發(fā)送成功,因為第一次的出站消息已經(jīng)觸發(fā)廣播戈泼,ARP請求/響應(yīng)會完成ARP表更新婿禽。
05 IP(Internet Protocol)
IP模塊是互聯(lián)網(wǎng)技術(shù)的核心,而IP模塊的核心是IP路由表大猛,IP模塊就是使用這張運行在內(nèi)存中的表來確定IP包的去向應(yīng)該經(jīng)由哪條路線扭倾。IP路由表的內(nèi)容是網(wǎng)絡(luò)管理員設(shè)置的,如果設(shè)置不當會阻塞網(wǎng)絡(luò)通信挽绩。
理解路由表的使用實質(zhì)就是理解互聯(lián)網(wǎng)是如何工作的膛壹,想要很好地管理和維護網(wǎng)絡(luò),就必須強化對它的理解。
學習路由表模聋,我們分三步走:先看路由概要肩民,再學習IP地址,最后研究其中的細節(jié)链方。
05.01 直接路由
下圖展示了一個簡單的互聯(lián)網(wǎng):有3臺主機(A持痰、B、C)祟蚀,使用了圖1中的TCP/IP協(xié)議棧工窍。每臺主機的網(wǎng)卡都有自己的Mac地址,網(wǎng)絡(luò)管理員還為每臺主機指派了相應(yīng)的IP地址和網(wǎng)絡(luò)號暂题。
當主機A發(fā)送一個IP包到主機B時移剪,IP包頭含有源主機的Mac地址、IP地址(A的Mac地址和IP地址)以及目標主機的Mac地址薪者、IP地址(B的Mac地址和IP地址)纵苛。
在這個樣例中,IP包的組裝過程屬于常規(guī)開銷:它本身對以太網(wǎng)服務(wù)沒有什么幫助言津,但是生成攻人、傳輸和解析報文頭卻增加了CPU和網(wǎng)絡(luò)寬帶的開銷。
當B主機的IP模塊收到來自A的IP包悬槽,它會檢查目標IP地址是否跟自己的匹配怀吻,如果是,便向上一層協(xié)議棧傳遞該數(shù)據(jù)初婆。
這就是A蓬坡、B兩臺主機直連的路由過程。
05.02 非直接路由
下圖更加貼近實際的互聯(lián)網(wǎng):它有3個以太網(wǎng)和3個互聯(lián)網(wǎng)并通過名為D的IP路由器相連磅叛。每個互聯(lián)網(wǎng)中都包含有4臺主機屑咳,每臺主機都有自己的IP地址和Mac地址。
除了D以外弊琴,每臺主機都使用了圖1中的TCP/IP協(xié)議棧兆龙。D是一臺IP路由器,它有3個IP地址敲董、3個Mac地址紫皇、同時連接到了3個網(wǎng)絡(luò),它使用了圖3中的協(xié)議棧腋寨,只不過它有3張網(wǎng)卡和3個ARP模塊聪铺。注意:D只有一個IP模塊。
網(wǎng)絡(luò)管理員已經(jīng)為每一個網(wǎng)絡(luò)定義了網(wǎng)絡(luò)號:一個唯一的數(shù)字萄窜。上圖只展示了網(wǎng)絡(luò)名稱沒有展示網(wǎng)絡(luò)號计寇。
當主機A發(fā)送一個IP包給主機B時,路由過程跟之前的直接路由完全是一樣的脂倦。任何一個單獨的網(wǎng)絡(luò)上的主機間通信都跟之前討論的直接路由樣例相同番宁。
主機D與A、D與E赖阻、D與H都是直接通信蝶押,因為他們每一組主機(DA、DE火欧、DH)都在一個網(wǎng)絡(luò)上棋电。
但是當主機A需要與IP路由器D另一端的主機通信時,就無法直接通信了苇侵。A必須通過D來轉(zhuǎn)發(fā)赶盔,IP包才能到達另一個網(wǎng)絡(luò)。這樣的通信過程就叫做非直接路由榆浓。
IP包的路由選擇是由IP模塊完成的于未,這個操作對TCP、UDP以及上層應(yīng)用是透明的陡鹃。
當主機A發(fā)送一個IP包給主機E時烘浦,源主機的IP地址、Mac地址就是A的IP地址和Mac地址萍鲸,目標主機IP地址是E的IP地址闷叉,但是由于需要通過D來轉(zhuǎn)發(fā),此時目標主機的Mac地址是D的Mac地址脊阴。
D的IP模塊收到這個IP包以后握侧,檢查其目標主機IP地址,發(fā)現(xiàn)不是發(fā)給自己的嘿期,于是直接轉(zhuǎn)發(fā)給了E品擎。
簡單的說,直接通信中源主機IP地址秽五、Mac地址就是發(fā)送者的IP地址和Mac地址孽查,目標主機的IP地址和Mac地址就是接收者的IP地址和Mac地址。非直接通信就不完全是這樣的了坦喘。
這個樣例非常簡單盲再,現(xiàn)實生活中的網(wǎng)絡(luò)要復雜得多:N個IP路由器,各種類型的物理網(wǎng)絡(luò)……這個樣例中的網(wǎng)絡(luò)劃分適用于把一個大的網(wǎng)絡(luò)切割為幾個小的網(wǎng)絡(luò)以避免全網(wǎng)廣播瓣铣。
05.03 路由規(guī)則
前一節(jié)已經(jīng)揭示了路由的大體過程答朋,接下來我們繼續(xù)研究IP模塊用到的規(guī)則或算法。
- 對于一個出站的IP包棠笑,當數(shù)據(jù)從上層協(xié)議到達以后梦碗,IP模塊必須判斷它是直發(fā)還是非直發(fā)才能進一步確定應(yīng)該走哪一個底層網(wǎng)絡(luò)。這一系列操作是通過查詢路由表來實現(xiàn)的。
- 對于一個從底層網(wǎng)絡(luò)來的入站IP包洪规,IP模塊則須判斷它是轉(zhuǎn)發(fā)還是向上層協(xié)議傳遞印屁。如果是轉(zhuǎn)發(fā),就視它為一個出站的IP包斩例。
- 一個入站的IP包到達以后雄人,它就不會再發(fā)回它原來的網(wǎng)絡(luò)了。
這些操作在IP包往下一層協(xié)議傳遞和查詢ARP表之前就必須完成念赶。
05.04 IP地址
網(wǎng)絡(luò)管理員根據(jù)主機所在的網(wǎng)絡(luò)指派其IP地址础钠。4字節(jié)的IP地址由網(wǎng)絡(luò)位和地址位構(gòu)成。例如表1中叉谜,主機IP地址是223.1.2.1
旗吁,其中網(wǎng)絡(luò)位是223.1.2
,主機地址位是1
停局。
4字節(jié)的IP地址中很钓,哪些用作網(wǎng)絡(luò)位,哪些用作地址位是由高位地址(第一字節(jié)的前幾位)來確定的翻具。本文樣例中IP地址都是C類地址履怯,C類地址第一字節(jié)的前三位一定是110,接下來的21位是網(wǎng)絡(luò)位裆泳,最末8位是主機地址位叹洲。C類地址可以至多含有2,097,152個網(wǎng)絡(luò),每個網(wǎng)絡(luò)中至多可以有254臺主機工禾。
IP地址是由NIC(網(wǎng)絡(luò)信息中心“Network Information Center”)來管理的运提。所有接入因特網(wǎng)的互聯(lián)網(wǎng)都必須使用NIC指派的網(wǎng)絡(luò)號。如果你組建了一個自己的互聯(lián)網(wǎng)闻葵,即便不打算接入因特網(wǎng)民泵,你還是應(yīng)該從NIC中獲取自己的網(wǎng)絡(luò)號。因為如果你隨意指定網(wǎng)絡(luò)號槽畔,萬一某天你的網(wǎng)絡(luò)要與其他網(wǎng)絡(luò)相連栈妆,就會有混亂和干擾的風險。
05.05 主機名與網(wǎng)絡(luò)名
人們常常通過名稱而非號碼來區(qū)分主機厢钧。假設(shè)一臺名為alpha的主機鳞尔,IP地址是223.1.2.1。在小型網(wǎng)絡(luò)中早直,各主機上的host文件保存了主機名稱與主機地址間的映射關(guān)系寥假。在大型網(wǎng)絡(luò)中有專門的文件存儲在特定的服務(wù)器上方便客戶機隨時調(diào)用。摘錄幾行這個文件的數(shù)據(jù)如下:
223.1.2.1 alpha
223.1.2.2 beta
223.1.2.3 gamma
223.1.2.4 delta
223.1.3.2 epsilon
223.1.4.2 iota
IP地址為第一列霞扬,主機名稱為第二列糕韧。
正常情況下枫振,同一個網(wǎng)絡(luò)中的所有主機都可以使用同一個host文件。你可能注意到了萤彩,為何主機delta有3個IP地址卻只有一條記錄粪滤?因為delta可以通過3個地址中的任意一個來訪問。當delta收到一個IP包時乒疏,它會用它的每一個IP地址與IP包的目標地址進行匹配额衙。
網(wǎng)絡(luò)也是有名字的。如果你有3個網(wǎng)絡(luò)怕吴,那么保存網(wǎng)絡(luò)名字的networks文件看起來就像這樣:
223.1.2 development
223.1.3 accounting
223.1.4 factory
網(wǎng)絡(luò)號為第一列,網(wǎng)絡(luò)名稱為第二列县踢。
從上面可以看出转绷,alpha是development網(wǎng)絡(luò)上的1號主機,beta是development網(wǎng)絡(luò)上的2號主機硼啤,因此你還可以稱之為:development.1
议经、development.2
。
對于普通用戶而言谴返,前面的host文件已經(jīng)夠用了煞肾。但是對于網(wǎng)絡(luò)管理員,delta那一行可能會被替換為三行:
223.1.2.4 devnetrouter delta
223.1.3.1 facnetrouter
223.1.4.1 accnetrouter
host文件中的三行新記錄嗓袱,為delta的每一個IP地址都添加了一個直觀的名字籍救。事實上,第一個IP地址有兩個名字(devnetrouter
渠抹、delta
)蝙昙,這兩個名字指同一臺主機。按照慣例梧却,delta是針對普通用戶的主機名奇颠,另外3個名字是給管理員維護路由表用的。
這些文件被網(wǎng)絡(luò)命令和上層應(yīng)用用到放航,可以返回直觀的網(wǎng)絡(luò)名/主機名烈拒,不用過多的操作網(wǎng)絡(luò),但極大的方便了人們的工作广鳍。
05.06 IP路由表
在發(fā)送一個出站IP包的時候荆几,IP是如何確定應(yīng)該走哪一個底層網(wǎng)絡(luò)的呢?IP模塊會從IP包中獲取目標主機IP地址搜锰,并以此為關(guān)鍵字在路由表中檢索相應(yīng)的網(wǎng)絡(luò)號伴郁。
每一條路由在路由表中都存有一條記錄腥光。路由表的前幾列分別是:網(wǎng)絡(luò)號簇秒,直發(fā)標記,路由器IP地址摊唇,網(wǎng)絡(luò)接口號。IP模塊使用此表來確定每一個出站IP包的去向狐胎。
大部分主機上的路由表都可以使用route
命令進行修改鸭栖。路由表的內(nèi)容由網(wǎng)絡(luò)管理員維護,因為網(wǎng)絡(luò)管理員負責指派主機的IP地址握巢。
05.07 直接路由的細節(jié)
為了解釋路由過程具體是怎樣的晕鹊,以前面講的直接路由為例,我們再來詳細探討一下其中的細節(jié)暴浦。
alpha內(nèi)部的路由表看起來就像這樣:
在Unix操作系統(tǒng)中溅话,可以使用命令netstat -r
查詢這張視圖。樣例中這樣簡單的網(wǎng)絡(luò)歌焦,所有的主機都使用相同的路由表飞几。
為了便于討論,我們把視圖中的網(wǎng)絡(luò)名稱替換為網(wǎng)絡(luò)號:
05.08 直接路由場景
當alpha發(fā)送一個IP包到beta時独撇,IP包在alpha的IP模塊屑墨,目標地址是beta或者223.1.2.2。IP模塊從目標地址網(wǎng)絡(luò)位中取出網(wǎng)絡(luò)號纷铣,并在路由表的第一列中檢索這個網(wǎng)絡(luò)卵史,再返回第一條匹配的記錄。
另外搜立,我們還可以從這條記錄中得知:這個網(wǎng)絡(luò)中的主機都可以通過網(wǎng)卡1直接通信以躯。alpha查詢ARP表得到beta的Mac地址,這樣以太幀就通過網(wǎng)卡1直接發(fā)往了beta主機儒拂。
如果一個上層應(yīng)用發(fā)送數(shù)據(jù)的目標地址不在development
網(wǎng)絡(luò)上寸潦,在路由表中找不到能夠匹配的記錄,那么IP會忽略掉這個IP包社痛。有些主機會返回“目標主機不可達”的錯誤信息见转。
05.09 非直接路由的細節(jié)
現(xiàn)在,我們再近距離地觀察一下之前提到的更復雜的非直接路由過程蒜哀。
alpha內(nèi)部的路由表看起來就像這樣:
為了方便討論斩箫,我們還是把網(wǎng)絡(luò)名稱替換為網(wǎng)絡(luò)號:
alpha的路由表中路由器指向了delta連接“development”網(wǎng)絡(luò)的IP地址。
05.10 非直接路由場景
當alpha發(fā)送一個IP包到epsilon時撵儿。IP包在alpha的IP模塊乘客,目標地址是223.1.3.2。IP從目標地址網(wǎng)絡(luò)位中取出網(wǎng)絡(luò)號(223.1.3)淀歇,并在路由表的第一列檢索這個網(wǎng)絡(luò)易核,表中第二條記錄匹配上了,故返回此條記錄浪默。
這條記錄表明牡直,網(wǎng)絡(luò)223.1.3上的主機都可以通過路由器devnetrouter訪問缀匕。故alpha的IP模塊查詢ARP表得到路由器devnetrouter的Mac地址,IP包便通過網(wǎng)卡1直接發(fā)往devnetrouter碰逸,此時IP包中目標主機的IP地址仍然是epsilon的IP乡小。
IP包穿過delta的development網(wǎng)絡(luò)接口后,向上傳遞給delta的IP模塊饵史。檢查其目標IP地址满钟,由于不能跟自己的任意一個IP匹配上,delta便會轉(zhuǎn)發(fā)該IP包胳喷。
delta的IP模塊從目標地址網(wǎng)絡(luò)位中取出網(wǎng)絡(luò)號湃番,在路由表中檢索這個網(wǎng)絡(luò)。delta的路由表看起來就像這樣:
同樣把網(wǎng)絡(luò)名替換為網(wǎng)絡(luò)號:
表中第二條記錄匹配上了厌蔽,返回牵辣。delta的IP模塊便通過網(wǎng)卡3直接發(fā)送IP包至epsilon。此時IP包目標主機IP地址與Mac地址都是epsilon奴饮。
IP包到達epsilon以后向上傳遞,IP模塊進行目標IP地址檢查择浊,發(fā)現(xiàn)正好匹配上自己的地址戴卜,便再傳遞給上層協(xié)議。
05.11 小結(jié)
當一個IP包穿過一個大型網(wǎng)絡(luò)琢岩,到達目標主機之前投剥,它可能會經(jīng)過許多的路由器。路徑的選擇不是由某個中央服務(wù)器來決定的担孔,而是不斷的查詢途經(jīng)的各個路由器的路由表江锨。每一臺路由器都只決定下一個躍點的位置,并且依賴下一個躍點按照同樣的方式來發(fā)送IP包糕篇。
05.12 管理網(wǎng)絡(luò)
在大型網(wǎng)絡(luò)中啄育,保證每一臺主機的路由表都正確是一項艱巨的任務(wù),由于需求不斷的變化拌消,網(wǎng)絡(luò)管理員可能會不停的修改網(wǎng)絡(luò)配置挑豌。路由表出錯就會阻塞網(wǎng)絡(luò)通信,而排錯又極其的痛苦墩崩、乏味氓英。
所以保持一個簡單的網(wǎng)絡(luò)配置對構(gòu)建一個可靠的網(wǎng)絡(luò)是大有裨益的。例如鹦筹,給以太網(wǎng)分配網(wǎng)絡(luò)號最直觀的方法就是給每一個以太網(wǎng)單獨分配一個網(wǎng)絡(luò)號铝阐。
某些協(xié)議或應(yīng)用的幫助信息也是非常有用的。ICMP(“Internet控制報文協(xié)議”Internet Control Message Protocol)就會反饋某些路由問題铐拐。在小型網(wǎng)絡(luò)中徘键,各主機上的路由表是由網(wǎng)絡(luò)管理員手動添加的练对;在大型網(wǎng)絡(luò)中這個手工操作,可以使用路由協(xié)議自動分發(fā)路由信息到整個網(wǎng)絡(luò)啊鸭。
當一臺主機從一個網(wǎng)絡(luò)遷移到另一個網(wǎng)絡(luò)時锹淌,其IP地址必須重新分配;當一臺主機從一個網(wǎng)絡(luò)上撤走時赠制,它的IP地址也必然不可用了赂摆。這些變化需要頻繁的更新host文件,即便是在中等規(guī)模的網(wǎng)絡(luò)中钟些,維護這個文件也是很困難的烟号。DNS便應(yīng)運而生了。
06 UDP(用戶數(shù)據(jù)報協(xié)議“User Datagram Protocol”)
UDP是IP協(xié)議棧上層的兩個主要協(xié)議之一政恍。它直接為上層應(yīng)用提供服務(wù)汪拥。常見使用UDP的應(yīng)用有:網(wǎng)絡(luò)文件系統(tǒng)(NFS “Network File System”),簡單網(wǎng)絡(luò)管理協(xié)議(SNMP “Simple Network Management Protocol”)篙耗。UDP可以看作IP的一個接口迫筑。
UDP屬于無連接協(xié)議,因此它無法保證數(shù)據(jù)報一定能發(fā)送成功宗弯。相互通信的主機其UDP模塊并不會建立端到端的連接脯燃,它只負責推送出站的數(shù)據(jù)報和接收入站的數(shù)據(jù)報。
UDP為IP添加了兩個新的特性:一是不同的應(yīng)用使用不同的端口蒙保,實現(xiàn)了信道充分利用辕棚;二是使用校驗碼實現(xiàn)了數(shù)據(jù)的完整性校驗。
06.01 端口
數(shù)據(jù)是怎么從客戶端到達服務(wù)器的呢邓厕?
應(yīng)用與UDP模塊間的通信是通過端口建立起來的逝嚎。端口是從〇開始的一個有限整數(shù)(0 ~ 65535)。一個應(yīng)用要對外提供服務(wù)详恼,它便會監(jiān)聽一個指定的端口补君,它會在該端口耐心的等待客戶端發(fā)起請求。
例如单雾,SNMP服務(wù)器赚哗,又叫SNMP代理。它的監(jiān)聽端口是161硅堆。一臺主機上只可能有一個SNMP代理屿储,因為一臺主機只有一個161端口。161是一個保留端口渐逃,一個在互聯(lián)網(wǎng)內(nèi)部已指定用途的端口够掠,這是眾所周知的。當一個SNMP客戶端想要連接服務(wù)器時茄菊,它便會把請求發(fā)往SNMP代理的161號端口疯潭。
遠端主機收到應(yīng)用通過UDP發(fā)送的數(shù)據(jù)都是一個個獨立的數(shù)據(jù)包赊堪。例如,一個應(yīng)用通過UDP發(fā)送了5個數(shù)據(jù)包竖哩,那么遠端主機上的應(yīng)用也要從UDP中接收5個數(shù)據(jù)包哭廉。發(fā)送方與接收方的每個數(shù)據(jù)包大小完全是一樣的。
UDP會保存應(yīng)用定義的消息邊界相叁。UDP不會把兩個不同應(yīng)用的消息合并為一個數(shù)據(jù)包遵绰,也不會把一個應(yīng)用的消息拆分為幾個。
06.02 校驗碼
一個入站的IP包增淹,IP頭的類型字段會指明它采用了哪種協(xié)議椿访,如果是UDP,IP便會把它傳遞給UDP模塊虑润。當UDP模塊收到來自IP的數(shù)據(jù)報以后成玫,它會檢查其校驗碼。如果校驗碼為〇拳喻,意味著這個校驗碼不是發(fā)送者的計算結(jié)果哭当,這個數(shù)據(jù)報可以忽略掉。發(fā)送主機的UDP模塊可以開啟或關(guān)閉生成校驗碼冗澈。如果一個網(wǎng)絡(luò)上只有兩臺主機通過UDP通信荣病,這時你可以不用校驗數(shù)據(jù),但還是建議你總是啟用校驗渗柿,因為誰也不知道何時路由表會改變,網(wǎng)絡(luò)會變得不可靠脖岛。
如果校驗碼是有效的朵栖,UDP會檢查是否有應(yīng)用綁定在目標端口上。如果有柴梆,一個應(yīng)用消息便進入隊列等待應(yīng)用讀取陨溅,否則忽略這個數(shù)據(jù)報。如果UDP數(shù)據(jù)報的入站速度超過了應(yīng)用讀取消息的速度绍在、隊列中待讀取的消息也達到了最大值门扇,那么直到隊列中有空間為止,后來的UDP數(shù)據(jù)報都會被忽略掉偿渡。
07 TCP(傳輸控制協(xié)議“Transmission Control Protocol”)
TCP提供了與UDP完全不同的另一種服務(wù)臼寄。TCP是面向連接的,字節(jié)流的溜宽,保證交付(可靠)的一種協(xié)議吉拳。
對可靠性要求較高(不能有超時或重發(fā))的應(yīng)用常選用TCP協(xié)議。最常見的兩個使用TCP的應(yīng)用是FTP(文件傳輸協(xié)議“File Transfer Protocol”)和Telnet适揉。還有不少受歡迎的應(yīng)用諸如X-Window圖形化界面(X-Window System)留攒,rcp (remote copy)以及r家族命令(r-series commands)也是采用TCP煤惩。TCP的高可靠性也是有代價的:它需要更多的CPU開銷和更大的網(wǎng)絡(luò)帶寬。TCP的內(nèi)部構(gòu)造要比UDP復雜得多炼邀。
跟UDP一樣魄揉,TCP也通過端口與應(yīng)用通信。不同的應(yīng)用對應(yīng)不同的端口拭宁,例如:Telnet服務(wù)對應(yīng)的端口是23洛退。Telnet客戶端通過TCP協(xié)議連接指定主機的23號端口可以輕松地訪問服務(wù)器。
當應(yīng)用第一次使用TCP發(fā)消息時红淡,客戶端與服務(wù)器端的TCP模塊便開始建立通信了不狮。這一對端到端的TCP模塊通過定義虛擬電路來維持連接狀態(tài)。這個虛擬電路會同時給兩臺主機帶來開銷在旱。虛擬電路采用全雙工模式工作摇零,即數(shù)據(jù)可以在兩個方向上同時進行傳輸操作。本地應(yīng)用往端口中寫入數(shù)據(jù)桶蝎,數(shù)據(jù)穿過網(wǎng)絡(luò)被遠端應(yīng)用讀取驻仅。
TCP對字節(jié)流的封包是任意的,它不會記錄兩次寫操作間的邊界登渣。例如:一個應(yīng)用在指定的TCP端口執(zhí)行了5次寫操作噪服,遠端應(yīng)用有可能需要10次讀操作才能取完所有數(shù)據(jù),也有可能只用1次讀操作就把所有數(shù)據(jù)取完了胜茧。兩端的讀操作與寫操作的次數(shù)粘优、大小都沒有直接聯(lián)系。
TCP使用滑動窗口機制呻顽,自帶超時與重發(fā)功能雹顺。遠端主機TCP必須發(fā)送回執(zhí)確認收到的出站數(shù)據(jù)±缺椋回執(zhí)由傳輸數(shù)據(jù)捎帶過來嬉愧。兩端都能控制對端的數(shù)據(jù)流量,這樣可以防止緩沖區(qū)溢出喉前。
跟所有采用滑動窗口機制的協(xié)議一樣没酣,TCP也有窗口大小。窗口大小決定了在要求一次確認回執(zhí)之前可以傳輸多少數(shù)據(jù)卵迂。對TCP而言裕便,窗口數(shù)據(jù)的大小不是以TCP消息為單位,而是以字節(jié)為單位狭握。
08 上層應(yīng)用
為什么既有TCP又有UDP闪金,只要一個不行嗎?
答案是它們各自滿足了不同的需求。許多上層應(yīng)用都只采用了TCP/UDP中的一種協(xié)議哎垦。在編程的時候你也只需要選取一種能滿足自己需求的協(xié)議就行了囱嫩。如果你需要可靠的數(shù)據(jù)流服務(wù),TCP是最好的選擇漏设;如果需要數(shù)據(jù)報服務(wù)墨闲,UDP是最好的選擇;如果需要建立長連接郑口,TCP是最好的選擇鸳碧;如果需要低延遲傳輸數(shù)據(jù),UDP是最好的選擇犬性。如果你的需求不在以上范圍以內(nèi)瞻离,那該選哪種協(xié)議還真不好說。但是應(yīng)用可以通過優(yōu)化編程來彌補協(xié)議上的不足乒裆。例如套利,你的應(yīng)用采用UDP協(xié)議,又想擁有高可靠性鹤耍,那么在編程的時候就應(yīng)該足夠健壯肉迫;如果你選擇了TCP協(xié)議,又想要優(yōu)化寫速度稿黄,那么在傳輸數(shù)據(jù)時就應(yīng)往比特流中插入標記以拆分數(shù)據(jù)喊衫。
什么樣的應(yīng)用才算是可靠應(yīng)用呢?
可靠的應(yīng)用有太多的特點了杆怕,而且這些特點還在不斷的增長中族购。
有些應(yīng)用在創(chuàng)世紀之初就已經(jīng)存在了:TELNET、FTP陵珍;還有一些是后來誕生的:X-Window联四、SNMP。下面簡單地介紹一下文中提到的那些應(yīng)用撑教。
08.01 TELNET
TELNET通過TCP實現(xiàn)了遠程登錄。TELNET操作有點像通過電話交換系統(tǒng)進行鍵盤撥號醉拓。用戶在命令行中輸入“TELNET delta”時會收到主機delta的一個登錄提示符伟姐。
TELNET雖然古老,但尚未被淘汰亿卤,今天它也仍然廣泛存在于各種網(wǎng)絡(luò)中愤兵。使用TELNET的場合往往是跨平臺的登錄,例如排吴,TELNET客戶端可能在VAX/VMS上秆乳,而TELNET服務(wù)端卻在UNIX System V上。
08.02 FTP
文件傳輸協(xié)議(FTP“File Transfer Protocol”),跟Telnet一樣古老屹堰,也是采用TCP協(xié)議肛冶,也還廣泛地活躍在各種網(wǎng)絡(luò)中。FTP有點像Telnet到遠程主機之后執(zhí)行的操作扯键,只不過不是敲入常用的命令睦袖,而必須使用如顯示目錄(DIR/LS
)之類的FTP的一系列簡短的命令。FTP方便我們在不同的主機間傳輸文件荣刑。
08.03 rsh
遠程shell(rsh
或 remsh
)是Unix下r家族命令中的一員馅笙。Unix下的復制命令cp
演化為rcp
,登錄查詢命令who
演化為rwho
厉亏。r家族命令又叫r系列
命令或r*
命令董习,該家族命令還在不斷的增長中。
r家族命令主要工作在Unix環(huán)境爱只,設(shè)計的初衷是方便受信任的主機間通信皿淋。它對安全因素考慮較少,但是對用戶非常友好虱颗。
想在遠程主機delta執(zhí)行命令cc file.c
沥匈,只需要輸入rsh delta cc file.c
;想復制文件file.c
到主機delta忘渔,只需要輸入rcp file.c delta:
高帖;想登陸到delta,只需要輸入rlogin delta
畦粮。如果你配置得當散址,使用這些命令甚至無需輸入密碼。
08.04 NFS
網(wǎng)絡(luò)文件系統(tǒng)(NFS“Network File System”)宣赔,最初由Sun公司開發(fā)预麸,使用UDP協(xié)議,在多個主機掛載Unix文件系統(tǒng)上有著極好的性能儒将。無硬盤工作站可以通過NFS連接到服務(wù)器分配給自己的硬盤上吏祸。主機alpha上數(shù)據(jù)庫的一個單獨的備份硬盤,可以供主機beta使用钩蚊,如果beta的數(shù)據(jù)庫文件系統(tǒng)采用的是NFS的話贡翘。
NFS會占用海量的網(wǎng)絡(luò)帶寬,在低網(wǎng)速環(huán)境中性能也很低砰逻,好在它帶來的裨益也不少鸣驱。NFS客戶端已經(jīng)集成到了操作系統(tǒng)核心當中,允許上層應(yīng)用或者命令像掛載本地磁盤一樣調(diào)用NFS掛載硬盤蝠咆。
08.05 SNMP
簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)使用UDP踊东,主要用作核心網(wǎng)絡(luò)設(shè)備的管理北滥。它被人們所熟知的特點就是只要有足夠的信息,網(wǎng)絡(luò)管理員就能夠診斷網(wǎng)絡(luò)故障闸翅。核心交換機/路由器通過SNMP從網(wǎng)絡(luò)上的其他主機收集該信息再芋。SNMP僅定義數(shù)據(jù)格式,數(shù)據(jù)內(nèi)容由核心網(wǎng)絡(luò)設(shè)備或者網(wǎng)絡(luò)管理員定義缎脾。
08.06 X-Window
圖形化界面使用基于TCP的X-Window協(xié)議祝闻。X-Window不僅僅是一個圖形化界面的組件,它還有一套完整的用戶接口設(shè)計理念遗菠。
09 補充信息
互聯(lián)網(wǎng)技術(shù)的許多內(nèi)容在本文中都沒有提到联喘,對于那些想要了解更多知識的讀者,下面的清單列出了下一階段需要學習的內(nèi)容:
- 管理命令:arp, route, netstat
- ARP:permanent entry, publish entry, time-out entry, ARP欺騙(spoofing)
- IP路由表:host entry, 默認網(wǎng)關(guān)(default gateway), 子網(wǎng)(subnets)
- IP:TTL(time-to-live counter), IP段(fragmentation), ICMP
- RIP辙纬,路由環(huán)路(routing loops)
- 域名系統(tǒng)(Domain Name System)
10 參考文獻
- [1] Comer, D., "Internetworking with TCP/IP Principles, Protocols,
and Architecture", Prentice Hall, Englewood Cliffs, New Jersey,
U.S.A., 1988. - [2] Feinler, E., et al, DDN Protocol Handbook, Volume 2 and 3, DDN
Network Information Center, SRI International, 333 Ravenswood
Avenue, Room EJ291, Menlow Park, California, U.S.A., 1985. - [3] Spider Systems, Ltd., "Packets and Protocols", Spider Systems
Ltd., Stanwell Street, Edinburgh, U.K. EH6 5NG, 1990.
11 與其他RFC的關(guān)系
本文并未更新或者淘汰任何其他的RFC豁遭!
12 安全建議
這里有一些關(guān)于TCP/IP協(xié)議組件的安全建議,對某些用戶而言至關(guān)重要贺拣;對其他用戶而言可能無關(guān)緊要蓖谢,這完全取決于用戶的需求。
本文并未對這些問題展開討論譬涡,如果你想了解更多的知識闪幽,建議從ARP欺騙開始,再到RFC1122-“安全建議”對各章節(jié)進行系統(tǒng)學習涡匀。
13 聯(lián)系作者
Theodore John Socolofsky
Spider Systems Limited
Spider Park
Stanwell Street
Edinburgh EH6 5NG
United Kingdom
Phone:
- from UK 031-554-9424
- from USA 011-44-31-554-9424
Fax:
- from UK 031-554-0649
- from USA 011-44-31-554-0649
EMail: TEDS@SPIDER.CO.UK
Claudia Jeanne Kale
12 Gosford Place
Edinburgh EH6 4BJ
United Kingdom
Phone:
- from UK 031-554-7432
- from USA 011-44-31-554-7432
EMail: CLAUDIAK@SPIDER.CO.UK