国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 網絡通信 > 正文

TCP/IP指南

2019-11-04 11:00:03
字體:
來源:轉載
供稿:網友

1.緒論

這本教程僅僅包含TCP/它忽略了TCP/IP發展的歷史以及導致它廣泛使用的商業原因,并且忽略它在與ISO
(國際標準化組織)的OSI(開放式系統互連參考模型)相比的發展前景。實際上,
很多技術的信息也被忽略。它所講述的是在TCP/IP環境工作的專業人員必須理解
的最少信息。這些專業人員包括系統治理員,系統程序員,和網絡治理員。

這本教程使用的例子是在UNIXTCP/IP環境下執行的,然而主要方面能在所有
的TCP/IP環境下執行。
這本指南的目的是解釋TCP/IP的基本問題而不是定義它。假如有任何問題關于
協議的具體說明,請參考定義RFC的實際的標準。


.下一節是TCP/IP的概述,然后是各個組成部分的具體描述.

2.TCP/IP概述

術語"TCP/IP"通常意味著任何與TCP(傳輸控制協議)和IP(網際協議)有
聯系的東西,它包括其它的協議,應用軟件,甚至網絡媒介。這些協議的一個示例
是:UDP(用戶數據報協議),ARP(地址解析協議),和ICMP(控制報文協議)。
這些應用的一個示例是:telnet(遠程登錄),FTP(文件傳遞協議),和rcp。更精確的
應該說是"因特網技術"。使用因特網技術的一個網絡被稱為"INTERNET(因特
網)"。

2.1基本結構:

為了理解TCP/IP你必須理解下面的邏輯結構:








----------------------------
network
applications

...//..//...
----------
TCPUDP
----------
//
--------
IP
------*------
ARP
-----
/
------
ENET
---@--
---------------------------

----------------------o---------
EthernetCable(纜線)

圖1.TCP/IP的基本結構

這是TCP/IP協議的分層結構在互連網計算機上的表示,用互連網技術互相通信的每
臺計算機有這樣的分層結構。這樣的分層結構決定了計算機在internet上互相通信的
方式。數據通過這樣的分層結構從上層傳到底層,然后通過網線把數據傳送出去。底
層的水平線代表以太網網線,"O"代表收發器,"*"代表IP地址,"@"代表網址,
理解這樣的分層結構式理解INTERNET技術的基礎。這種分層結構貫川于這本指南的始
終。

2.2相關術語

通過一個internet傳送的數據流的名字由它在協議堆棧的什么地方存在而決定。
總體上來說:假如它在一個以太網上,它被稱為以太網幀;
假如它在以太網與網際協議模塊之間,它就被稱為一個IP包;
假如它在網際協議模塊與UDP模塊之間,它被稱為一個UDP包;
假如它在網際協議模塊和TCP模塊之間,它被稱為一TCP包(更通常
說,傳輸消息包);
并且假如它在網絡應用程序間,它被稱為應用消息包。
這些定義是不很確切的。不同的版本有不同的定義,要看更精確的定義請參
考(RFC1122,section1.3.3.)。

驅動程序是直接與網卡接口硬件通信的軟件。應用程序模塊是與驅動程序`或
與網絡應用軟件`或另一個應用程序模塊通信的軟件

術語:驅動程序,應用程序模塊,以太網幀,TCP包,UDP包,TCP消息,以及
應用程序消息在此指南中經常被使用。

2.3.數據傳送

讓我們看看當它經過如圖1所示的協議堆棧流動時的情況,當應用程序使用TCP
(傳輸控制協議),數據在應用程序與TCP模塊之間傳遞。當應用程序使用UDP(用戶
數據報協議),數據在應用程序與UDP模塊之間傳遞。FTP(文件傳輸協議)是使用TCP
包的典型應用。在這個例子的協議堆棧是FTP/TCP/IP/ENET。SNMP(簡單網絡治理
協議)是使用UDP的應用。在這個例子的協議堆棧是SNMP/UDP/IP/ENET。

TCP模塊,UDP模塊,和以太網驅動程序是n-to-1multiplexers(多路復用
器)。作為multiplexers它們復用許多輸入到一個輸出。它們也是1-to-n
de-multiplexers(分路器),作為分路器,它們通過協議頭從一個輸入產生許多輸出。







123...n123...n
////^
////
-------------flow----------------flow
multiplexerofde-multiplexerof
-------------data----------------data

v
11

圖2.n-to-1multiplexerand1-to-nde-multiplexer

假如以太網幀離開網卡進入以太網驅動程序,包能向上傳遞給ARP(地址解析協議)
模塊或到IP(網間協議)模塊。在以太網幀的字段屬性決定了以太網幀是否被傳遞給
ARP或IP模塊。

假如IP報文進入IP包,它被向上傳遞到TCP或UDP,由在IP頭的字段屬性決定。

假如UDP報文進入UDP,應用消息向上傳遞給網絡應用程序,這是由UDP頭的
端口值決定的。假如TCP消息進入TCP,應用消息向上傳遞給網絡應用程序,這是
由TCP頭的端口值決定的。

向下復用很輕易實現因為從每一個開始點只有一條向下的路徑;每個協議模塊增
加它的頭信息從而使包能在目的計算機上被分開。

從應用程序出來的數據通過TCP或者UDP復合到IP模塊,然后被送到更低層。
盡管因特網技術支持許多網絡媒介,在我們這里使用的例子都是以太網來討論的
因為以太網是基于IP的最常見物理網絡。在圖1中的計算機有唯一的以太網連接。6字
節的物理地址對每一個在以太網的接口是唯一的,它們被存儲在以太網驅動程序的底
層接口中。

計算機同樣有4字節的IP地址,這個地址被存儲在IP模塊的底層,IP地址對在
internet上的每臺計算機必須是唯一的。

每臺計算機知道屬于自己的IP地址和物理地址。

2.4.兩個網絡接口

假如一臺計算機和2個獨立的以太網連接,它的樣子如圖3所示:
----------------------------
networkapplications

...//..//...
----------
TCPUDP
----------
//
--------
IP
------*----*------
ARPARP
----------
//
------------
ENETENET
---@-----@--
--------------------------

---o---------------------------
EthernetCable2
---------------o----------
EthernetCable1

圖3.TCP/IPNetworkNodeon2Ethernets

請注重這臺計算機有兩個物理地址和兩個IP地址。

從圖3的結構中我們發現計算機有多于一個的物理網絡接口,那么IP模塊就是
n_to_m復用器和m_to_n分路器的結合。




123...n123...n
////^
////
-------------flow----------------flow
multiplexerofde-multiplexerof
-------------data----------------data
////
//v//
123...m123...m

圖4.n-to-m復用器andm-to-n分路器

從上面我們可以看出這種多路技術可以從任意的方向接收和發送數據,有一個以
上網絡接口的IP模塊比我們最初的把數據從一個網絡送到另一個網絡的例子要復雜的
多,數據可以從各個網絡接口傳過來也可被送向網絡。

TCPUDP
//
//
--------------
IP

---
//
/v
--------------
//
//
datadata
comesingoesout
herehere

圖5.IP包的發送和接收的例子

發送IP包到另一個網絡的過程叫做傳遞IP包,一臺專門用來傳遞IP包的計算機
計算機叫做"路由器"。

就如你從圖中看到的一樣,在路由器上傳遞的IP包不涉及TCP和UDP模塊,一
些路由器執行時更本就不要TCP或UDP模塊。

2.5.IP產生專一的邏輯網絡

IP模塊是interner技術成功的中心所在,當消息向下通過協議棧時每一個模塊或
驅動程序加上自己的頭到消息中去。每一個模塊或驅動程序從消息中去掉相應的頭當
消息沿協議棧向上傳時,IP頭包含了用以從許多物理網絡中區分唯一的邏輯網絡的IP
地址,互相連接的物理網絡是internet的組成部分,這些互相聯絡的物理網絡就構成
了internet。

2.6.獨立的物理網絡

IP通過網絡應用程序處于網絡硬件之中,假如你發明新的物理網絡,你可以投入
使用只要你用新的驅動程序基于IP。因此,盡管硬件技術在變化網絡應用程序仍然是
完美無缺以及不易受攻擊的。

2.7.互相通信

假如兩臺計算機能夠互相通信,就稱它們是"能互操作的"。假如internet暢通,
就稱它們有"互用性"。有多方面用途計算機的用戶從互連網獲益因為在市場上有的
協同工作能力的計算機。一般地,當你買了一臺計算機,它就能互相通信。假如計算
機沒有互操作性,且互操作性不能加上,則這樣地計算機就沒有市場競爭力。

2.8梗概之后
通過后面地學習,我們將回答以下問題:

當發送一個IP包,目的以太網地地址是這樣知道地?

當發送IP包時,IP協議是怎樣從眾多地底層網絡中選擇的?

客戶端的計算機是怎樣連上服務器的?

為什么TCP和UDP要同時存在,而不只選其中一種?

網絡應用程序的可用性是什么?

這些問題將依次回答。


3.以太網

這一節是以太網技術的簡短復習。

一個以太網幀包含目的地地址,源地址,屬性域,和數據。

物理地址是6字節。每一個裝置有它自己的物理地址和監聽物理幀中的目的地址。
所有的裝置用通配符"FF-FF-FF-FF-FF-FF"(十六進制)的方式監聽目的地址,被
稱為"廣播"地址。

以太網使用CSMA/CD(帶有檢測沖突的載波偵聽多路存取)。CSMA/CD意味著
所有裝置在同一個媒介中通信,在某一個時刻只能有一個在傳送數據,它們能同時
接收數據。假如2個裝置在同一個傳送數據,那么傳送沖突被發覺,在再次發送之前
兩個裝置等隨機(但是很短)的一段時間。

3.1一個類比

一個很好的說明以太網技術的類比:一群人在很小道`很黑的屋里聊天。在這個類
比中:物理的網絡媒介是空氣中的聲波而不是在同一根同軸電纜中的電信號

每一個人能聽見其它人的說話(信號感覺),每一個人有相同的權利說話(多種
可能),但是沒有人會發表長篇大論因為他們懂禮貌。假如有人不懂禮貌,他被要求
離開房間(也就是,被拋離網絡)。

沒有人會說話當有人說話時,但是當兩個人同時開始說話,他們會立即知道因為
他們聽到一些他們自己沒有說過的話(沖突檢出)。當兩個人意識到時,他們等一會,
然后一人開始說話。另一個在開始自己的說話之前聽著別人說一直等著第一個人說完。

每一個人有唯一的名字(唯一的物理地址)以避免混亂。某一個時間一人說話,
他會先通知他將要交談的人以及自己的名字(以太網目的地址,源地址,分別的),
也就是:"Hello,thisisjack,..blahblahblah..",假如他想和所有的人交談,
他會說"everyone"(廣播地址),也就是說:"hello,everyone,thisisjack,
..blahblahblah.."。


4.ARP(地址解析協議)

當發送一個IP包,目的以太網的地址是怎么知道的呢?

ARP(地址解析協議)用來把IP地址翻譯成物理地址。這種翻譯只是在發送IP
包時,因為這時需要產生IP頭和以太網頭地址。

4.1.ARP地址轉換表

翻譯通過查表進行,這表,叫作ARP地址轉換表,放在存儲器里,包含每一臺
計算機的信息。其中有一列是IP地址,一列是物理地址。當要把IP地址翻譯成物理
地址時,計算機從表中搜索IP地址。下面是一個簡單的ARP地址轉換表:

------------------------------------
IPaddressEthernetaddress
------------------------------------
223.1.2.108-00-39-00-2F-C3
223.1.2.308-00-5A-21-A7-22
223.1.2.408-00-10-99-AC-54
------------------------------------
表1.ExampleARPTable
人們的習慣是當寫出4字節的IP地址時每一字節用十進制且用句點把每一字節
分開。當寫出6字節的物理地址時,習慣上是每一字節用十六進制且用冒號或負號
把每一字節分開。

ARP地址轉換協議是必須的因為IP地址和物理地址是互不相干的,你不可能用
一種算法把IP地址翻譯成物理地址。IP地址是由網絡治理員基于internet而選擇的,
當計算機internet的另外一個地方,那么它的IP地址也隨之改變了。物理地址是由制
造商基于以太網地址空間而決定的,當物理硬件接口改變了,它的物理地址也隨之改
變了。

4.2.典型轉化情況

當正常運行一個網絡應用程序,比如:TELNET,發送一個應用程序消息給TCP,
然后TCP發送相應的TCP消息給IP模塊,從而目的IP地址就被應用程序`TCP模塊`IP模塊
知道,這時IP包被建立然后預備傳給以太網驅動程序,但是在這之前必須知道物理地
址,而ARP地址轉換表就是用來找到物理地址的。

4.3.ARP"請求/應答"對

但是ARP地址轉換表最初是怎樣建立的呢?回答是它是由ARP自動根據"必須"的原
則建立的。

當ARP地址轉換表不能翻譯地址時,會發生下面兩件事:
1.一個攜帶物理地址的ARP請求包被發送向網絡上的每一臺計算機。
2.發出的IP包排隊等待。

每一臺計算機的物理接口收到廣播的物理幀。每一個以太網驅動程序檢查物理幀
的屬性域然后傳遞ARP包給ARP模塊。ARP請求包的意思是:"假如你的IP地址和目
標IP地址一樣,那么請你告訴我你的物理地址。"一個ARP請求包的結構是這樣的:

---------------------------------------
SenderIPAddress223.1.2.1
SenderEnetAddress08-00-39-00-2F-C3
---------------------------------------
TargetIPAddress223.1.2.2
TargetEnetAddress<blank>
---------------------------------------
表2.ARP請求包

每一個ARP模塊檢查IP地址,假如目標IP地址和自己的IP地址相同,那么它
直接發一個回答給源以太網。ARP響應包的意思是:"是的,你所說的目標IP地
址就是我的IP地址,讓我把我的物理地址告訴你吧!"ARP響應包把"發包人/收
包人"域交換以不同域ARP請求包,它的結構是這樣的:

---------------------------------------
SenderIPAddress223.1.2.2
SenderEnetAddress08-00-28-00-38-A9
---------------------------------------
TargetIPAddress223.1.2.1
TargetEnetAddress08-00-39-00-2F-C3
---------------------------------------
表3.ARP響應包

發送請求包的計算機會收到響應,這樣以太網驅動程序檢查以太網幀中的
屬性域然后把ARP包送給ARP模塊。ARP模塊檢查ARP包然后把發送ARP響應包
的計算機的IP地址和物理地址寫到其ARP地址轉換表中去。

更新后的ARP地址轉換象下面的樣子:

----------------------------------
IPaddressEthernetaddress
----------------------------------
223.1.2.108-00-39-00-2F-C3
223.1.2.208-00-28-00-38-A9
223.1.2.308-00-5A-21-A7-22
223.1.2.408-00-10-99-AC-54
----------------------------------
表4.更新后的ARP地址轉換表

4.4.方案繼續

新的對應關系被自動加到表中去,得到這些對應關系需要幾個毫秒。在第2步
時,IP包在排隊等候。接著,通過查表把IP地址翻譯成物理地址然后就能把以太
網幀發送出去了。因此,有了第3,4,5步后,可以看出源計算機的轉換步驟依次
為:

1.一個ARP請求包以廣播的形式發送給網上的每一臺計算機。

2.須轉發的IP包在排隊等候。

3.帶著相應的IP地址到物理地址轉化的ARP響應包到達源計算機,用以更新
ARP地址轉換表

4.對于等候的IP包,通過查表把IP地址翻譯成物理地址。

5.最后以太網幀被發送出去。

簡要的說,當ARP表不能翻譯時,IP包就得等候,通過ARP請求包/ARP響應
包得到對應關系,這樣等待的IP包就被發送出去了

每一臺計算機都有對應于它的以太網的ARP地址轉換表,假如目的計算機不
存在,就不會有ARP響應包,在ARP表中就沒有入口。則送給這個地址的IP包被
丟棄。上層協議不能從目的IP地址中分辨出是否是以太網壞了還是計算機沒有工


一些IP協議和ARP在等待ARP響應包時不處理IP包,而是把它丟棄,而丟棄的
IP包的恢復工作由TCP模塊或UDP網絡應用程序來處理。這種恢復由"時和重傳"
來處理。重發的信息會成功的發送因為在這之前被丟棄的包已經使ARP表被更新。

5.internet協議

IP模塊是internet技術的要害,IP的本質是它的路由表。IP協議用存儲器中的路由表
來選擇路由當傳遞IP包時。路由表的內容由網絡治理員定義,錯誤將導致不能通信。

理解路由表是如何工作的就是理解網絡是如何工作的,這種了解是必須的對于治理
和維護一個IP網絡。

為了更好的了解路由表必須先對路由有一個一般的熟悉,然后了解IP網絡地址,最后
才深入細節。

5.1.直接的路徑選擇

下面的圖是一個只有3臺:A,B,C計算機的小型internet。每一臺計算機有相同的
TCP/IP協議就如圖1所示。每一臺計算機的以太網接口都有自己的物理地址。每一臺計
算機都有網絡治理員分配的IP地址,他同樣分配一個網絡號給這個以太網。

ABC

--o------o------o--
Ethernet1
IPnetwork"development"

圖6.一個IP網絡

當A發送一個IP給B,則IP頭包括A的IP地址作為源IP地址,物理幀頭包括A的
物理地址作為源物理地址。同樣,IP頭包括B的IP地址作為目的地址,物理幀頭包
括包括B的物理地址作為目的物理地址。

----------------------------------------
addresssourcedestination
----------------------------------------
IPheaderAB
EthernetheaderAB
----------------------------------------
IP包中的物理幀的地址(A到B)

在這個簡單的例子中,IP在頭上因為IP把很少加到以太網提供的服務中去。然而
IP確實增加了額外的開銷:消耗了CPU和用以產生、傳送、解析IP頭的網絡帶寬。

當B的IP模塊接收到從A來的IP包,然后把其中的目的IP地址和自己的IP地址相比
較,看是否匹配,然后把數據包傳向上層的協議。

A和B的通信用直接的路徑選擇。

5.2.間接的路徑選擇

下面是一個比較接近現實的internet的圖。它由3個以太網和3個IP網絡由一臺叫
做"計算機D"的IP路由器連接而成。每一個IP網絡由4臺計算機組成,每一臺計算機
由自己的IP地址和物理地址。


ABC----D----EFG

--o------o------o------o--o------o------o------o--
Ethernet1Ethernet2
IPnetwork"development"IPnetwork"accounting"


HIJ

--o-----o------o------o--
Ethernet3
IPnetwork"factory"

圖7.3個IP網絡組成的internet

除了計算機D,每一臺計算機都有象圖1所示的TCP/IP協議棧。計算機D是路由器,
它和3網絡相連所以有3個IP地址和3個物理地址。計算機D有和圖3相類似的TCP/IP協
議棧,只不過它用3個ARP模塊和3個以太網驅動程序代替了圖2中所示的2個。請記
住計算機D只有一個IP模塊。

網絡治理員分配了唯一的IP網絡號給每一個以太網。但是IP網絡號沒有在圖中表
示出來,而只給出了網絡名字。

當A發送一個IP包給B時,其過程和上面舉的單一網絡的例子是一樣的。任何處
于一個IP網絡的計算機之間的通信和前面討論的直接路徑選擇相同。

計算機D和A通信,他們是直接通信。計算機D和E通信,是直接的。計算機D
和H通信,是直接的。這是因為每一對都處于同一個IP網絡。

但是,當計算機A和處于路由器另一端的計算機通信時,路徑就不是直接的了。A
必須通過D把IP包傳遞到下一個IP網絡。這種通信是間接的。

按這種路徑走的IP包由IP模塊和TCP,UDP,網絡應用程序處理。

假如A發送一個IP包給E,則源IP地址和源物理地址是A的,目的IP地址是E的,
但是因為A的IP模塊把IP包傳遞給D,所以目的物理地址是D的。


----------------------------------------
addresssourcedestination
----------------------------------------
IPheaderAE
EthernetheaderAD
----------------------------------------
表6.IP包的物理幀中的地址表示
(從A到E(D之前))

D的IP模塊收到IP包然后向上解析目的IP地址,發現:"這不是我的IP地址,"就
直接把IP包傳遞給了E。


----------------------------------------
addresssourcedestination
----------------------------------------
IPheaderAE
EthernetheaderDE
----------------------------------------
表7.IP包的物理幀中的地址表示
(從A到E(D之后))

一言以蔽之,對于直接通信,源IP地址和源物理地址都是發送者的,目的IP
地址和目的物理地址都是接收者的。對于間接通信,IP地址和物理地址不是這樣的。

這個例子是簡化的。實際的網絡是由許多的因素,比如許多的路由器和各種
各樣的物理網絡所組成。象例子一樣的網絡是有可能存在的因為有時網絡治理員想
把一個大的以太網分開為了防止以太網的廣播風暴。

5.3.IP模塊選路原則

這一節的梗概只講如何選路而不講為什么。現在讓我們來看一看IP模塊
的選路原則或者說是算法吧。

對于一個要發的IP包,從上層進入IP,IP模塊必須決定是直接選路還是間接
選路,然后IP模塊要選擇一個低層的網絡接口。這些選擇是通過咨詢路由表后
作出的。

對于一個進來的IP包,從低層接口進入IP模塊,IP模塊必須決定是繼續轉發
還是把IP包往上層傳遞。假如IP包繼續轉發,則它被視為一個要發的IP包。

當一個進來的IP包到達則它不在同一個網絡接口內繼續傳遞。

這些決定是在IP包被送到低層接口以前作出的,也在ARP表被調用之前。

5.4IP地址

網絡治理員根據計算機隸屬于什么IP網絡分配給每一臺計算機一個IP地址。
4字節中的一部分是網絡號,其余部分是主機號。對于表1的計算機有IP地址為:
223.1.2.1,其中網絡號為:223.1.2,主機號是1。

地址的一部分用作網絡號,主機號是由4字節地址的上面的比特決定的。
在這本指南用的例子里的IP地址是類型C,意思是上3比特說明21比特是網絡
號和8比特是主機號。這樣就答應有2097152個類型C的網絡,每個網絡可以
有254臺主機。

IP地址空間是由NIC(網絡信息中心)治理的。所有連到萬維網的的局域
網都必須使用NIC分配的網絡號。假如你建立了你自己的網絡且你不預備連上
因特網,你仍然要從NIC那兒獲得你的網絡號。假如你堅持用你自己的號,那
么你冒著混亂的危險,當你連上另一個網時會使一些不可預料的事情發生。

5.5域名

人們習慣用名字識別計算機,而不是數字。一臺名叫"alpha"的計算機可能
有IP地址:223.1.2.1。對于一些小的網絡,這種"名字到IP地址"的信息經常保
存在每一臺計算機的叫"hosts"文件里。對于一些大的網絡,這種對應關系保存在
服務器上當需要時通過網絡來訪問。這種文件的其中幾行可能是這樣的:

223.1.2.1alpha
223.1.2.2beta
223.1.2.3gamma
223.1.2.4delta
223.1.3.2epsilon
223.1.4.2iota

IP地址在第一列,計算機名字在第二列。

大多數情況下,你可以保存同樣的"hosts"文件在所有的計算機上。你可能
注重到了"delta"只有一個條目盡管它有3個IP地址。因此Delta能夠用3個中的
任意一個IP地址登錄,用哪一個是沒有關系的。當Delta收到一個IP包并檢查它
的目的地址,它會認可3個中的任意一個IP地址。

IP網絡同樣有自己的名字,假如你有3個IP網絡,你的用以存儲這些名字的
"network"文件會是下面的樣子:

223.1.2development
223.1.3accounting
223.1.4factory

網絡號在第一列,對應的名字在第二列。

從這個例子中你可能已經發現了計算機"alpha"是網絡"development"上的
1號計算機,beta是2號計算機諸如此類。你同樣可以說"alpha"是"developme
nt.1",beta是"development.2"諸如此類。

對用戶來說上述的hosts文件就已經足夠了,但是網絡治理員可能用下面的
行代表delta:

223.1.2.4devnetrouterdelta
223.1.3.1facnetrouter
223.1.4.1accnetrouter

hosts文件中的這些新3行給出了每一個delta的IP地址和一個有意義的名。事實
上第一個IP地址的兩個名字:"delta"和"devnetrouter"是同義字。在實踐中,"delta"
代表計算機多種用途的名字,其他三個名字只是在治理IP路由表時會用到。

這些文件用于網絡治理,網絡應用程序給出了一個有意義的名字。其實在操縱int
ernet時他們是不需要的,但是他們給我們帶來了方便。

5.6.路由表

IP模塊是怎樣知道用哪一個網絡接口當發送IP包時?IP模塊用從目的IP地址提取
出來IP網絡號作為索引字查詢路由表。

路由表的每一條路線包含在一行中。路由表的第一列是:IP網絡號,直接路徑選擇
/間接路徑選擇標記,路由器的IP地址,接口號。每一個IP包傳遞時都要用到這張表。

在大多數計算機上路由表可以用"route"命令。路由表的內容是由網絡治理員定
義的,因為是網絡治理員分配IP地址給計算機。

5.7.直接路由選擇細節

為了解釋這個問題,讓我們來看一看路由選擇的位置(前面我們已經學過):

------------------
alphabeta
11
------------------

--------o---------------o-
Ethernet1
IPnetwork"development"

圖8.Close-upViewofOneIPNetwork

在alpha內的路由表可能是這樣的:
--------------------------------------------------------------
networkdirect/indirectflagrouterinterfacenumber
--------------------------------------------------------------
developmentdirect<blank>1
--------------------------------------------------------------
表8.ExampleSimpleRouteTable

這些信息在UNIX系統下可以用"netstar-r"命令得到。在這個簡單的網絡里,所
有的計算機有統一的路由表。

為了討論,這張表再次打印出來(沒有網絡號到網絡名的對應關系):

--------------------------------------------------------------
networkdirect/indirectflagrouterinterfacenumber
--------------------------------------------------------------
223.1.2direct<blank>1
--------------------------------------------------------------
表9.ExampleSimpleRouteTablewithNumbers

5.8.選路步驟

alpha發送一個IP包給beta,IP包在alpha的IP模塊里,目的IP地址是beta或者是
223.1.2.2。IP模塊從IP地址中提取出網絡號然后掃描路由表的第一列,在第一個
條目找到了匹配網絡。

其他信息表明在這個網絡的計算機能夠直接到達通過接口1,ARP地址轉換表
使我們得到了它的物理地址,然后這個物理幀直接經接口1到達了beta。

假如應用程序試圖發數據到一個不在網絡"development"上的IP地址,則IP
模塊不能在路由表中找到匹配條目,IP模塊將丟棄這個IP包。一些計算機會提供
"網絡不可到達"的出錯信息。

5.9.間接路由選擇細節

現在,讓我們來看一看復雜的路由選擇步驟。





---------------------------
alphadeltaepsilon
11231
---------------------------

--------o---------------o--o----------------o--------
Ethernet1Ethernet2
IPnetwork"Development"IPnetwork"accounting"

--------
iota
1
--------

--o--------o--------
Ethernet3
IPnetwork"factory"

圖9.Close-upViewofThreeIPNetworks

在alpha中的路由表是這樣的:

---------------------------------------------------------------------
networkdirect/indirectflagrouterinterfacenumber
---------------------------------------------------------------------
developmentdirect<blank>1
accountingindirectdevnetrouter1
factoryindirectdevnetrouter1
---------------------------------------------------------------------
表10.Alpha路由表

為了討論路由表,用數字代替名字再把表畫一遍:

--------------------------------------------------------------------
networkdirect/indirectflagrouterinterfacenumber
--------------------------------------------------------------------
223.1.2direct<blank>1
223.1.3indirect223.1.2.41
223.1.4indirect223.1.2.41
--------------------------------------------------------------------
表11.Alpha的用數字表示的路由表


在Alpha的路由表中的路由器是delta連到網絡"development"上的IP地址

5.10.間接選路步驟

Alpha發送一個IP包給epsilon.IP包在alpha的IP模塊中,目的IP地址是epsilon
(223.1.3.2)。IP模塊從IP地址中提取出網絡部分(223.1.3)然后掃描路由表的第一
列尋找匹配的網絡,在第二個條目中找到它。

這個條目說明在網絡223.1.3上的計算機通過路由器"devnetrouter"到達。Alpha
的IP模塊通過ARP表把devnetrouter的IP地址翻譯成物理地址,然后直接通過Alpha
的接口1把IP包發給devntrouter。IP包仍然包括epsilon的IP地址

IP包到達delta的網絡"development"然后被傳到delta的IP模塊。目的IP地址被檢
查因為它和delta的任何IP地址都不同,所以delta向前傳遞這個IP包。

Delta的IP模塊從目的IP地址中提取出網絡部分(223.1.3)然后掃描它的路由表尋
找匹配的網絡。Delta的路由表是這樣的:

----------------------------------------------------------------------
networkdirect/indirectflagrouterinterfacenumber
----------------------------------------------------------------------
developmentdirect<blank>1
factorydirect<blank>3
accountingdirect<blank>2
----------------------------------------------------------------------
表12.Delta的路由表

下面是Delta的路由表被再次畫出(用數字表示):

----------------------------------------------------------------------
networkdirect/indirectflagrouterinterfacenumber
----------------------------------------------------------------------
223.1.2direct<blank>1
223.1.3direct<blank>3
223.1.4direct<blank>2
----------------------------------------------------------------------
表13.Delta的用數字表示的路由表

在第二個條目發現了匹配的網絡,IP模塊通過接口3把IP包直接發給epsilon。
IP包包括epsilon的IP地址和物理地址。

IP包到達epsilon然后向上傳到epsilon的IP模塊,目的IP地址被檢查發現和
epsilon的IP地址相同,從而IP包被傳到上面的協議層。

5.11.選路小結

當一個IP包要在一個很大的網上傳遞,在它到達目的地以前它要通過很多的路由
器,它所選擇的路徑不是由中心的資源控制的而是通過路由表的查詢而確定的。每一
臺路由器只決定它傳遞的下一步然后依靠這臺路由器沿這條路徑傳遞。

5.12.路徑選擇的治理

在一個大的網絡上維護所有計算機的路由表正確是一項艱巨的任務,網絡治理員
經常更改網絡配置以適應網絡狀況的變化。路由表中的錯誤會導致中斷通信,這種錯
誤是很難察覺的。

通過簡單的配置使網絡可靠需要不斷的嘗試。舉個例子,分配IP網絡到以太網的
最簡單的方法是分配一個網絡號給每一個以太網。

我們可以從協議和網絡應用程序中得到幫助。ICMP(網間控制報文協議)能夠匯
報出一些路由問題。對于小的網絡的路由表是由網絡治理員加到每一臺計算機上去
的。對于大的網絡,網絡治理員用路由協議通過網絡尋找路由使這種手工的操作變為
自動。

當一臺計算機從一個網絡移到另一個,它的IP地址必須改變,它原來的IP地址就
不正確了。這些變化需要寫到"hosts"文件中去。這個單調的文件變的難以維護即使
對于中等的網絡。域名服務器用來解決這些問題。

6.UDP(用戶數據報協議)

UDP是在IP層之上的兩個主要協議之一。它提供用戶網絡應用程序的服務,用到UDP
的網絡應用程序有:NFS(網絡文件系統)和SNMP(簡單網絡治理協議)。UDP服務只
是在IP的基礎上加了少許一點。

UDP是無連接的數據報服務沒有丟失檢測。UDP不和遠端的UDP模塊保持點到點連接,
,它僅僅把包發送出去而不管有沒有丟失和接收來自外面的數據包。

UDP在IP的基礎上加了兩個屬性,一個是端口號,另一個是檢查數據完整性的校驗和。

6.1.端口

客戶端是怎樣連上服務器端的呢?

UDP和應用程序之間的通信路徑是通過UDP端口。這些端口是用數字表示的,從0開始
。提供服務的應用程序用特定的端口號等待消息的進入。服務器不間斷掃描客戶端的
請求服務。

舉個例子,比如說SNMP,叫做一個SNMP代理,總是在端口161上等待消息。每臺計
算機只能有一個SNMP代理因為只有一個UDP端口號161。這個端口號是眾人皆知的,它
是固定的,是網絡分配的唯一的號。假如SNMP客戶請求服務,則它就發送UDP包到目的
計算機的端口161。

當應用程序發送UDP包,則遠端收到的是一個單元。比如,假如應用程序發了5個UDP
包,則遠端就讀取5次。當然,發的5個包和讀取的5個包大小相等。

UDP保存每一個完整的包,它不把兩個應用程序消息加在一塊,也不把一個包拆成兩
個。

6.2.校驗和

在IP頭域里顯示"UDP"的IP包被送到UDP模塊。當UDP模塊收到UDP包它檢查它的校驗
和。假如它的校驗和為0,則意味著在發送端校驗和沒有被計算,可以忽略。因此發送
端的計算機的UDP模塊產不產生校驗和沒關系。假如物理幀在一個網絡的2個UDP模塊間
通信,則不需要產生校驗和。但是我們推薦使用校驗和因為路由表的改變可能導致數
據通過不可靠的媒介。

假如校驗和是正確的或為0,目的端口就會檢查它。UDP包傳向這個端口,排隊等待
應用程序處理它,否則UDP包就會被丟棄。假如UDP包到達的速度比應用程序能夠處理
的速度快或者等待的UDP包把隊列排滿,UDP包就會被UDP模塊丟棄。UDP模塊會一直丟
棄UDP包直到隊列有多余的空間。

7.TCP(傳輸控制協議)

TCP提供和UDP不同的服務,TCP提供有連接的比特流,不同于無連接的數據報服務。
TCP保證可靠傳輸,而UDP不保證。

TCP被網絡應用程序調用時保證可靠傳輸和不能有超時和誤傳。兩個典型的網絡應用
程序時FTP(文件傳送協議)和TELNET。其他的流行的TCP網絡應用程序包括:X-WINDOW
系統,rcp(遠程復制),和rseriescommands.TCP的強大功能時要代價的:它需要更多
的CPU和網絡帶寬。TCP模塊的內部比UDP模塊要復雜的多。

和UDP相似,網絡應用程序和TCP端口連接。特定的端口號對應特定的應用程序。舉
個例子TELNET服務器使用端口23。TELNET客戶端只能通過連接特定計算機上的端口23
才能成功。

當應用程序通過TCP啟動,在客戶端的TCP模塊和在服務器端的TCP模塊互相通信,這
些兩個端點的TCP模塊構成了虛擬的電路。這個虛擬電路消耗兩端的資源。虛擬電路時
雙向的,數據能夠同時往兩個方向傳。應用程序把數據寫到TCP端口,數據通過網絡由
遠端的應用程序控制。

TCP包可以分成任意大小,包與包之間沒有界限。比如,假如應用程序往TCP端口發
了5次,遠端的應用程序也許要讀10次,或者它就只讀一次。在一端寫的次數和大小與
另一端讀的次數和大小時沒有關聯的。

TCP是一個有超時和重發的滑動窗口協議。發出去的包必須得到遠端的確認。確認信
息可以攜帶在數據包上。兩個接受端能控制遠端,從而防止緩沖器溢出。

對于所有的滑動窗口協議,有一個窗口的大小,窗口的大小決定了在收到確認信息
以前可以發送的總的數據。對于TCP,這個數量不是TCP段的數量而是字節的數量。

8.網絡應用程序

為什么TCP和UDP要同時存在,而不是只有一個?

他們提供不同的服務,大部分的應用程序只用其中的一個。你,程序員,當然選擇
最適合你的協議了。假如你需要可靠的數據傳送,TCP可能是最佳的選擇了。假如你需
要數據包服務,UDP是最佳的。假如你需要高效的長的通路,TCP可能是最佳的。假如
你需要快的網絡反應時間,UDP可能是最佳的。假如你不想把分類,則"最佳"的選擇
就是模糊的。然而,應用程序能夠彌補選擇上的不足。舉個例子,假如你選擇UDP可是
你需要可靠性,則在應用程序上加上可靠性就可以了。假如你選擇TCP可是你需要標記
的服務,那么應用程序必須在字節流里加入標記。

什么樣網絡應用程序是有用的?

這可就有許多可以羅列的。數目是連續增長的。自從internet技術開始就有一些應
用程序了:TELNET和FTP。其他的是較新的:X-WINDOWS和SNMP。下面是在這本指南提
到的網絡應用程序的簡短說明。

8.1.TELNET

TELNET提供遠端登錄服務。它的操作和外型同通過電話撥號是相似的。在命令行上
用戶敲入:"TELNETDELTA"就會收到從"delta"來的登錄提示。

TELNET很好使,它使一個老的應用程序有著廣泛的應用。TELNET通常在不同的操作
系統間工作。舉個例子,TELNET客戶端使VAX/VMS系統,而服務器端是UNIXV系統。

8.2FTP

文件傳送協議(FTP),是和TELNET一樣久遠的網絡應用程序,也有廣泛的應用。從
操作來看好象你登錄上了遠端的計算機。但是你必須用非凡的命令取代你習慣上的命
令。FTP命令答應你在兩臺計算機之間拷貝文件。

8.3RSH

遠端shell(rsh或者remsh)是全部遠端UNIX類型命令族中的一個。UNIX拷貝命令
--CP,變成了RCP。UNIX命令"誰在登陸"WHO變成了RWHO。這個系列都被變成了"R
"系列命令。

R*命令主要工作在UNIX系統和被設計成在互相信任主機間相互操作。安全性很少
被考慮,但是他們提供了方便的用戶環境。

為了在一臺遠端叫做delta的計算機上執行命令"ccfile.c",輸入"rshdelta
ccfile.c",為了拷貝文件到delta上,輸入"rcpfile.cdelta"。為了登陸到
delta上,輸入"rlogindelta",假如你在某種特定的方式上治理這臺計算機,你
將不會有登陸提示。


8.4NFS

網絡文件系統,是由美國SUN公司開發的,使用UDP,它在不同的計算機之間上載
UNIX系統文件是很出色的。一個無磁盤的工作站通過存取服務器的硬盤就好象磁盤是
本地的。在主機"alpha"上的單一的數據庫同樣能被主機"beta"使用只要數據庫文件用
NFS上載在"beta"上。

NFS加入大量的信息給網絡從而使連接的速度很慢,但是它的優點使主要的。NFS客
戶端在內核執行,答應使用NFS的磁盤好象在本地一樣。

8.5.SNMP

簡單網絡治理協議(SNMP)使用UDP,被設計成由中心網絡點來治理。它很知名如
果給它足夠的數據,網絡治理員就能夠發覺和診斷網絡問題。中心點用SNMP從在網上
的計算機收集數據。SNMP定義了這種數據的格式。由中心點或網絡治理員來解釋這種
數據。

8.6.X-WINDOW

X-WINDOW系統使用基于TCP的XWINDOW協議來畫在工作站上的位圖顯示窗口。X
WINDOW不僅僅是畫窗口,它能夠用來設計用戶界面。

9.其他信息

許多有關internet技術的信息沒有被包括在這本指南里。讀者假如想深入學習,請
看下面列出的相關信息:

*網絡治理命令:arp,route,netstat
*ARP;permanententry,publishentry,time-outentry,spoofing
*IP路由表:hostentry,defaultgateway,subnets
*IP:time-to-livecounter,fragmentation,ICMP
*RIP:routingloops
*DNS(域名解析系統)

10.參考書

[1]Comer,D.,"InternetworkingwithTCP/IPPRinciples,Protocols,
andArchitecture",PrenticeHall,EnglewoodCliffs,NewJersey,
U.S.A.,1988.

[2]Feinler,E.,etal,DDNProtocolHandbook,Volume2and3,DDN
NetworkInformationCenter,SRIInternational,333Ravenswood
Avenue,RoomEJ291,MenlowPark,California,U.S.A.,1985.

[3]SpiderSystems,Ltd.,"PacketsandProtocols",SpiderSystems
Ltd.,StanwellStreet,Edinburgh,U.K.EH65NG,1990.


11.和其他RFC的關系

這本RFC是一本指南,它不同與其他任何的RFC。

12.安全問題

在TCP/IP里有一些安全問題需要考慮。對一些人來說安全是一個嚴厲的問題,而
另一些人不這樣認為,這就看用戶的需求了。

這本指南沒有討論這些問題,但是假如你想學習更多的這方面的東西你可以從
ARP-spoofing開始,接著用<<RFC1122>>的"SecurityConsiderations"節了解更多
的信息




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东阿县| 中江县| 延安市| 海口市| 西华县| 三原县| 孟连| 神农架林区| 密山市| 澄江县| 上林县| 延川县| 准格尔旗| 来安县| 长岭县| 丰都县| 扎赉特旗| 报价| 乐安县| 开原市| 河津市| 义马市| 旺苍县| 仪征市| 枞阳县| 会宁县| 泰来县| 新乐市| 鹤庆县| 监利县| 秭归县| 桦甸市| 遵义市| 和平区| 蚌埠市| 乌拉特前旗| 吐鲁番市| 元谋县| 高唐县| 昌图县| 汨罗市|