TCP IP協議新手入門學習二

2021-04-09 00:24:06 字數 3458 閱讀 9566

表5. 從a到b的ip包

在這種情況下,使用ip是多餘的,因為它根本沒有起到什麼作用,用ip只能增加多餘的處理時間,占用了多餘的傳輸頻寬。b接收到這個包後,ip層檢查這個包內的目的位址是不是和自己的ip位址一致,如果一致則將資料返回給上層協議。這稱為直接路由。

5.2 間接路由

下面這個示意圖更接近internet真實的情況。三個小的乙太網,每個網路中有三颱計算機,它們有唯一以太位址,ip位址,這三個網路通過一台路由器 連線,這台路由器有乙個ip位址和三個以太位址,因為它和三個網路連線,當然要三個了。這裡一定要記住,ip位址只有乙個。

計算機d是一台路由器,它的tcp/ip協議棧內可能根本沒有tcp和udp,而可能有多個arp模組和多個以太驅動程式(因為有多個以太介面卡,所以 要多個驅動程式才可以)。網路管理員為每個子網(上圖中有三個子網)指定乙個網路號,是這個網路的名稱,這個名稱在上圖是沒有表示。

如果計算機a希望和計算機b通訊,採用直接路由就可以了。這個過程上面已經說過了。在同乙個子網內均採用直接路由。如果計算機d希望和計算機a通訊,這 也是直接路由,直接通訊就行了,d和其它所有計算機的通訊都是直接通訊。但是如果計算機a希望和非本子網內的計算機通訊就不能採用直接路由了,它傳送的 ip包必須發到計算機d,由計算機d向其它網路傳送,這種通訊就是非直接的。

路由對於ip協議上層的協議來說是透明的,它們根本不知道有什麼路由存在。

請注意下面的圖,源位址是計算機a的,目的ip位址是計算機e,而目的以太位址卻是計算機d的,這是因為計算機a和計算機e不處於同乙個子網內,不能直接通訊,需要由計算機d進行**,因此這包只能發往計算機。

表6. 從計算機a到計算機e以太幀示意圖

表7. 從計算機d到計算機e以太幀示意圖

因為計算機d和計算機e可以直接通訊。我們可以看到,在直接通訊時,目的ip位址和以太位址都是接收者的,而在非直接通訊時,目的ip位址是接收者的, 而目的以太位址卻是路由器的。上面的例子比較簡單,真實的路由要比這個複雜得多,因為現實中的網路十分大,要許多路由器同時工作,這時的情況就比較複雜 了。

5.3 ip路由規則

對於要發出的ip 包,ip必須決定如何傳送,是採用直接傳送還是非直接傳送,這是在路由表的幫助下完成的。對於傳入的ip包,ip模組必須能夠識別它是不是自己需要的包, 如果是自己需要的,就把資料傳送到上一層協議中,如果不需要則進行**。在ip包達到目的位址後,它不再**了。

5.4 ip位址

5.5 名稱

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位址,後一列是計算機名。您可以為乙個計算機名指定多個ip位址,那麼通過哪乙個ip位址都可以訪問這台計算機。這個擁有多個ip位址的計 算機在接收到包後,可以根據目的位址知道是不是發向自己的包,這個目的位址可以是自己的任何乙個位址。名稱也用於網路號,下面就是乙個例子:

223.1.2 development

223.1.3 accounting

223.1.4 factory

前一列是ip位址,後一列是網路名。我們可以這個表上面的表對比一下,看看各個計算機屬於什麼網路。

5.6 ip路由表

我們上面已經提到過路由表這個名詞,下面我們就仔細看一下這張表。它通常是由下面幾列構成的:ip網路號,直接/非直接標記,路由器ip位址和介面號。這張表一般由管理員負責維護,因為是他為你的計算機指定了ip位址。

5.7 直接路由

下面我們仔細看一下我們上面看過的直接路由的例子。

在計算機alpha內的路由表如下所示:

表8. 路由表範例

我們可能通過unix下的"netstat -r"命令看到類似這樣的結果。

5.8 例項

alpha傳送ip包到beta,alpha中的ip包的目的位址是beta的位址(223.1.2.2)。ip取得網路號部分,查詢路由表中的第一部 分,看這個包應該包到什麼地方,它發現這個網路和表中的第乙個專案一致。而這個專案中的其它資訊表示,目的計算機可以直接通訊,於是直接進行arp翻譯 (解析),通過介面1傳送資料。

5.9 非直接路由

下面我們仔細看一下我們上面看過的非直接路由的例子。

計算機alpha內的路由表如下所示:

表10. alpha內的路由表

5.10 例項

alpha傳送ip包到epsilon,ip包內的目的位址是epsilon的(223.1.3.2)。ip分析目的位址的網路號部分,查詢路由表中的 第一列,發現第二個專案符合條件。此專案中的資訊表示計算機可以由路由器devnetrouter達到,alpha的ip模組進行arp解析,將資料通過 介面1傳送到devnetrouter的ip位址上。這個包仍然包括著目的機ip位址223.1.3.2。這個包到達development網路介面,傳 送到delta計算機的ip模組,delta計算機發現這個包不是給它的,於是決定**。delta的ip模組從目的位址中解析出網路號,查詢路由表, delta的路由表如下所示:

表11. delta的路由表

5.11 路由總結

在乙個大型網路中,ip包在到達目的計算機前一般需要經過多個路由器,它前進的路線不是事先定好的,而是在各個路由器上一步步查詢出來的,每個計算機只管一段,只保證把資料傳送到下一站,至於下一站怎麼辦,它就不管了。

5.12 管理路由

在大型網路的每台機器上支援一張路由表可不是件容易事,路由器如果出了問題會對網路傳輸不能進行。我們也可以使用icmp協議對網路進行監控。一台機器 從乙個地方移到另乙個地方必須更改計算機的ip位址,如果要更新主機位址檔案,這簡單是不可能的,而dns幫助解決這個問題。

6. 使用者資料報協議(udp)

udp是在ip上的兩個重要協議之一,它為使用者的網路應用程式提供服務,我們經常使用的nfs,snmp就是使用udp協議的。udp協議不是面向連線的。這一點是和tcp協議不同的。udp在ip包上加上了埠號和校驗碼兩個引數。

6.1 埠

一台計算機上的客戶程式如何達到伺服器呢?應用程式和udp的通訊線路是通過udp埠一樣的,這些埠是數字的,以0開始,乙個埠一般和乙個服務對 應。伺服器和客戶就在這個埠等待對方的請求(或應答)。udp保留由應用程式定義的訊息邊界。它決不把兩個訊息連線起來,或把乙個訊息分成兩部分。

6.2 校驗碼

如果接收到的ip包內有乙個標記「udp」,ip模組就把資料傳送到udp,udp檢查校驗碼,如果運算得出的結果為0,資料是正確的。udp的校驗碼 可以產生也可以不產生。傳送來的udp包如果超過了上層應用程式的處理能力,就會暫時儲存起來,如果儲存的資料已經超過一定限制,則把udp丟棄。

7. 傳輸控制協議(tcp)

tcp提供的服務不同於udp,它們的最大區別在於tcp是面向連線的,tcp保證資料一定傳送到接收者,而udp可不保證。tcp用於一定要保證資料 傳輸的場合,我們通常知道的ftp,telnet是基於tcp協議的,而其它的一些tcp網路應用程式包括x-window系統,rcp(遠端複製)和r 系列命令也是使用tcp的,tcp提供這樣好的服務也是有代價的,它需要更多的c

ubuntu新手入門

ubuntu使用設定之介面篇 ubuntu系統裝好了,不過怎麼看上則呢麼醜醜的?好像mr徐的介面和我的不一樣呢,怎麼設定的呢?首先,讓我們來設定工具條。ubuntu預設2條工具條,讓我們來把他設定成和windows下一樣的吧。先讓我們在上面的工具條的空白的地方,選擇刪除面板。然後,讓我們在底下的面板...

XML新手入門

ibm的xml教程 xml是什麼?xml,或稱為可擴充套件標記語言 extensible markup language 是一種您可以用來建立自己的標記的標記語言。它由全球資訊網協會 w3c 建立,用來克服 html 即超文字標記語言 hypertext markup language 它是所有網頁...

SOA新手入門

什麼是soa 我們可能應該回答的第乙個問題也是最基本的問題。什麼是面向服務的體系結構 service oriented architecture,soa 這個問題的答案實際上涉及與開發相關的若干不同方面。soa 是一種 it 體系結構樣式,支援將您的業務作為鏈結服務或可重複業務任務進行整合,可在需要...