挑戰408 一周網路 網路層(1)

2021-09-28 18:36:14 字數 3951 閱讀 3892

網路層應該向運輸層提供什麼樣的服務?網際網路採用的思路是這樣的:網路層向上只提供簡單靈活的,無連線的,盡最大努力交付的資料報(這裡的資料報就是ip分組)服務。網路層不提供服務質量的承諾,也就是說,所傳送的分組可能出錯,可能丟失也可能重複或者失序。

網際協議ip是是tcp/ip協議中最重要的兩個協議之一,與ip協議配套的還有三個協議:

虛擬互連網

從一般的概念上來講,將網路互連起來需要一定的中間裝置,根據中間裝置所在的位置,可以大致分成下面四種:

所謂虛擬互連網路,也就是邏輯網際網路絡,如果參加的計算機網路都使用相同的網際協議ip,我們利用ip協議就可以使這些效能各異的網路在網路層看起來像是乙個統一的網路。如果在這樣的ip網的上層使用tcp協議,那麼就是我們如今的網際網路。根據分組**的概念,同乙個網路下的資料報是進行直接交付的,因為塔不需要經過任何路由器,不同的網路下的資料報是間接互動的嗎,因為資料報需要**到路由器中送到其他網路

ip位址

ip位址就是給網際網路的每一台主機(或路由器)的每乙個介面分配乙個在全球範圍內是唯一的32位的識別符號(注意ip位址是由軟體生成的,不是硬體位址!),ip位址現在由icann進行分配。

ip位址的編碼方式經歷了下面的三個階段:

分類的ip位址

子網的劃分

構成超網

分類的ip位址(重點)

所謂分類的ip位址,就是將ip位址分成若干的類,每一類的位址由兩個字段組成,分別為網路號,主機號。乙個網路號在網際網路範圍內是唯一的,而主機號在該網路號的範圍內必須是唯一的。

這樣的兩級ip位址可以記為:

下圖是abcde類位址的分布情況(要很熟悉):

分類ip位址結構分析

這裡暫時只分析其中的乙個類別的位址,拿a類位址說。網路位址前面都有個類別位,分別為0,10 ,110, 1110,1111。其中最常使用的是abc三類的位址。ip位址都是32位的二進位制數,為了方便分析,提高可讀性,我們常常把32位二進位制數分成每8位一組,每組的二進位制數轉換成十進位制數,這樣就便於觀察了,這樣的記法稱為點分十進位制法

下面分析a類位址

網路號

由於前面的8位網路號已經固定了一位,所以,網路號能表示的範圍為(二進位制表示):0 (7個0) - 0 (7個1)。

轉換成十進位制就是 0 - 127.通常,全0或者全1的位址我們不用,全1的位址是個保留位址,意思是本網路。而網路號為127的位址,用作環迴位址,用於本主機本地通訊(也就是本地位址)。如127.0.0.1,這就是當我們連線本地資料庫的時候,你可以輸入主機名可以輸入local,也可以輸入127.0.0.1。所以a類可以表示 (2^7) - 2 個網路

主機號

主機號中,由於32位的ip位址中前面的8位已經被網路號占用,剩下的32 -8 = 24位可以用作主機號,一般的全0全1不用,所以最大主機數為(2^24) -2.

其他型別的位址可以按上述的辦法分析,但是這裡注意,在網路號上,由於前面被固定了至少兩個值,所以怎麼都不可能出現網路號全0或者全1的情況,因此不存在減2的問題,但實際上除開固定位,全0的網路號我們也是通常不指派的,因此表示的網路號要減1(比如b類的位址,(2^14)-1 )。

整個a類位址的ip空間為(2^31)個位址,佔總ip位址的50%。

整個b類位址的ip空間為(2^30)個位址,佔總ip位址的25%。

整個a類位址的ip空間為(2^29)個位址,佔總ip位址的12.5%。

特點

arp協議

路由器把分組送到指定的網路後,就需要將該網路的資料送到指定的主機。arp協議就是將網路層中的ip位址轉換成資料鏈路層中的mac位址

arp協議在主機的arp快取記憶體中存放乙個從ip位址到硬體位址的對映表,並且這個表經常動態的更新,以應付區域網中主機的增加和減少。arp的主要工作原理為:

arp向區域網內的主機廣播一條arp請求分組,內容大致是,「本機的ip,mac位址分別是***,現在想知道ip位址為yyy的主機,其mac位址是多少?」

區域網內的所有主機都將收到這個資訊,但是只有對應ip位址為yyy的主機會響應,且該主機向發起方返回乙個響應報文(此時為單播,因為1的時候已經知道了發起方的ip和mac位址),告知其本主機的mac位址。

如果要找的主機跟源主機(也就是發起方),不在同乙個網路,那麼傳送方仍然是廣播乙個請求,但是尋找的是區域網內路由器的mac位址,由路由器將此請求**到下乙個網路進行arp廣播。直至找到目的主機的mac位址。

下圖包括了上述的幾種情況,自行分析:

注意,這裡apr協議只是解決同一區域網上的主機或者路由器的ip位址到mac位址的對映問題,並且主機使用者對這種解析過程是透明的。

ip資料報格式

我們之前已經學過了tcp協議的資料報頭部,這裡直接拿ip協議的頭部來學習:

乙個ip資料報由兩部分組成,首部跟資料部分。其中首部有20位元組部分內容是固定長度的。

各字段長度分析

下面解釋一下分片的概念:

ip下的資料鏈路層是以幀為單位進行傳輸的,它們規定了每乙個資料幀的最大長度,即最大傳送單元(mtu,通常是1500位元組),若傳輸的資料報長度大於1500位元組,就要將多出的位元組進行分片。ip協議規定,所有網際網路路由器以及主機都要能接受不超過576位元組的資料報。分片後的每段資料報都應該加上首部,其中分片後資料報的長度字段應當是此分片的首部加上資料部分的總長度

分組**

我們前面知道,要將網路互連起來,在網路層要使用到的裝置是路由器。網路層中的路由器通過路由表來**分組。路由表指出某個主機到某個網路應該怎麼**。也就是在網際網路上**分組實際上是從乙個路由器**到下乙個路由器

路由表中,最重要的兩條資訊:

下圖的路由表說明了路由表中的**過程:

這樣資料報就可以根據路由表的下一跳位址,交付其資料。比如10.0.0.7,從網3的資料報要傳送到網一,那麼下一跳是到20.0.0.7,路由器把資料報送到10.0.0.7所在的網路後(也就是間接交付),由本網路進行資料交付到目的主機(即直接交付)。由此可知,網際網路中的分組**都是基於目的主機所在的網路的,經過**(可能多次間接交付),最終資料報一定可以找到目的主機所在的路由器。

當乙個網路很少對外連線的時候,預設路由可以減少路由表的空間和搜尋路由表所用的時間。(事實上,很多企業,單位的內網就是這麼做的)。這個時候,路由表中除了指明的幾個已知的網路(即內網),其他的所有目的網路都交付給預設路由(即網際網路)。當然有時候,對於一些比較特殊的主機(比如伺服器),就可以直接在路由表中指明下一跳的ip位址,這種路由稱為特定主機路由

分組**演算法如下

從資料報首部提出目的主機的ip位址d,得出網路位址n。

如果n就是與路由器直連的某個網路位址,便進行直接交付,否則轉3

如果路由表中有設定預設路由,那麼將資料交付給指明的預設路由器位址。否則轉6

分組**出錯。

挑戰408 一周網路 網路層(2)

ip位址空間利用率低。試想a類位址能表示 2 31 個網路位址,全球的主機數遠不止如此。每個物理網路都分配乙個網路號,會使得路由表過大。二級位址不夠靈活。劃分子網就是為了解決這些問題的。具體的思路如下 注意 劃分子網是在原來的ip位址的主機號進行劃分,而不改變ip位址原有的網路號。子網掩碼 那麼資料...

挑戰408 一周網路 應用層(1)

c s模式 c s模式,即所謂的客戶端 伺服器模式。伺服器是乙個總是開啟著的主機,它服務於許多來自其他稱為客戶機的主機請求。c s的工作模式非常簡單。伺服器處於開啟狀態。客戶機放出服務請求,並等待接收結果 伺服器接收到請求後處進行處理,然後返回結果給客戶機。對此,客戶機一定要知道伺服器的位址,而伺服...

挑戰408 一周網路 運輸層(3)

tcp協議的主要特點 對比udp協議,tcp協議就要複雜很多了。對比udp協議,tcp協議有以下幾點不同 tcp是面向連線的傳輸層協議。也就是說,使用tcp協議的通訊雙方事先就要建立連線,在整個連線過程當中控制個管理連線,並在通訊之後釋放整個連線。tcp連線只能是一對一的。也就是每一條tcp連線只能...