計算機網絡基礎知識總結及思維導圖(四)網絡層

四、網絡層

4.1 基礎概念

1)協議數據單元: IP數據報

2)網絡層使用的中間設備:路由器

3)網絡層提供的兩種服務:虛電路服務(面向連接)、數據報服務(無連接)

4)直接交付和間接交付

  • 直接交付:主機或路由器不需要再經過其它路由器,而是直接把數據報交付給相鄰網絡上的主機。
  • 間接交付:主機或路由器查找路由表後,發現到達目的網絡需要經過其它路由器,所以接着把數據報交付給下一跳所在路由器。

5)IP地址和硬件地址:IP地址(源地址和目的地址)是在IP數據報的首部,有32位。硬件地址(源地址和目的地址)是在MAC幀的首部,有48位。在數據傳輸過程中,往往會經過多個路由器,從始至終IP地址(源地址和目的地址)都不會改變;而硬件地址(源地址和目的地址)會不斷改變,是相鄰兩個主機/路由器接口的硬件地址。


4.2 網際協議IP

4.2.1 IP數據報的格式

Snipaste_2020-01-19_17-02-10

  • 版本:佔4位,指IP協議的版本

  • 首部長度:佔4位,表示多少個32位(4字節)。首部長度爲最大值1111時(即十進制數的15),就表明首部長度達到最大值15個32位字長,即60字節。IP數據報的首部長度範圍爲20~60字節。

  • 區分服務:佔8位,用來獲得更好的服務。

  • 總長度:佔16位,總長度指首部和數據之和的長度,單位爲字節。

  • 標識(identification):佔16位。相同的標識字段的值使分片後的各數據報片最後能正確地重裝成爲原來的數據報。

  • 標誌(flag):佔3位,但目前只有兩位有意義。

    標誌字段中的最低位記爲MF(More Fragment)。MF=1即表示後面“還有分片”的數據報。MF=0表示這已是若干數據報片中的最後一個。
    標誌字段中間的一位記爲DF(Don’t Fragment),意思是“不能分片”。只有當DF=0時才允許分片。

  • 片偏移:佔13位。片偏移指出:較長的分組在分片後,某片在原分組中的相對位置。片偏移以8個字節爲偏移單位。

  • 生存時間 佔8位,生存時間字段常用的英文縮寫是TTL(Time ToLive),現在把TTL字段的功能改爲“跳數限制”,路由器在每次轉發數據報之前就把TTL值減1。

  • 協議:佔8位,協議字段指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給哪個協議進行處理。

  • 首部檢驗和 佔16位。這個字段只檢驗數據報的首部,但不包括數據部分。不使用循環冗餘檢驗CRC,而是使用如下方法:
    Snipaste_2020-01-19_17-17-52

  • 源地址:佔32位。

  • 目的地址:佔32位。

4.2.2 分類的IP地址

介紹

所謂“分類的IP地址”就是將IP地址劃分爲若干個固定類,每一類地址都由兩個固定長度的字段組成,其中第一個字段是網絡號(net-id),它標誌主機(或路由器)所連接到的網絡。一個網絡號在整個互聯網範圍內必須是唯一的。第二個字段是主機號(host-id),它標誌該主機(或路由器)。

IP地址中的網絡號字段和主機號字段

Snipaste_2020-01-19_16-26-24

IP地址的指派範圍

Snipaste_2020-01-19_16-29-05

一般不使用的特殊IP地址

Snipaste_2020-01-19_16-31-04

轉發分組流程

(1)從數據報的首部提取目的主機的IP地址D,得出目的網絡地址爲N。

(2)若N就是與此路由器直接相連的某個網絡地址,則進行直接交付,不需要再經過其他的路由器,直接把數據報交付目的主機(這裏包括把目的主機地址D轉換爲具體的硬件地址,把數據報封裝爲MAC幀,再發送此幀);否則就是間接交付,執行(3)。

(3)若路由表中有目的地址爲D的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器;否則,執行(4)。

(4)若路由表中有到達網絡N的路由,則把數據報傳送給路由表中所指明的下一跳路由器;否則,執行(5)。

(5)若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;否則,執行(6)。

(6)報告轉發分組出錯。

4.2.3 劃分子網

介紹

劃分子網的方法是從網絡的主機號借用若干位作爲子網號(subnet-id),當然主機號也就相應減少了同樣的位數。於是兩級IP地址在本單位內部就變爲三級IP地址:網絡號、子網號和主機號。

子網掩碼

用劃分子網後的IP地址和子網掩碼做與運算後,可以得出子網號。

A類地址的默認子網掩碼是255.0.0.0,或0xFF000000。
B類地址的默認子網掩碼是255.255.0.0,或0xFFFF0000。
C類地址的默認子網掩碼是255.255.255.0,或0xFFFFFF00。

轉發分組流程

(1)從收到的數據報的首部提取目的IP地址D。

(2)先判斷是否爲直接交付。對路由器直接相連的網絡逐個進行檢查:用各網絡的子網掩碼和D逐位相“與”(AND操作),看結果是否和相應的網絡地址匹配。若匹配,則把分組進行直接交付(當然還需要把D轉換成物理地址,把數據報封裝成幀發送出去),轉發任務結束。否則就是間接交付,執行(3)。

(3)若路由表中有目的地址爲D的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器;否則,執行(4)。

(4)對路由表中的每一行(目的網絡地址,子網掩碼,下一跳地址),用其中的子網掩碼和D逐位相“與”(AND操作),其結果爲N。若N與該行的目的網絡地址匹配,則把數據報傳送給該行指明的下一跳路由器;否則,執行(5)。

(5)若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;否則,執行(6)。

(6)報告轉發分組出錯。

4.2.4 無分類編址CIDR

介紹

CIDR消除了傳統的A類、B類和C類地址以及劃分子網的概念,把32位的IP地址劃分爲前後兩個部分。前面部分是“網絡前綴”(network-prefix),用來指明網絡,後面部分則用來指明主機。

要點

1)地址聚合:對於當前網絡前綴以及在此基礎上劃分的子網,路由器只添加當前網絡前綴。

2)最長前綴匹配:在查找路由表時得到不止一個匹配結果,應當從匹配結果中選擇具有最長網絡前綴的路由。


4.3 地址解析協議ARP

4.3.1 作用

進行IP地址到硬件地址的轉換。

4.3.2 地址解析流程

Snipaste_2020-01-19_16-48-20
(1)發送方是主機(如H1),要把IP數據報發送到同一個網絡上的另一臺主機(如H2)。這時H1 發送ARP請求分組(在網1上廣播),找到目的主機H2 的硬件地址。

(2)發送方是主機(如H1),要把IP數據報發送到另一個網絡上的一臺主機(如H3 或H4)。這時H1 發送ARP請求分組(在網1上廣播),找到網1上的一個路由器R1的硬件地址。剩下的工作由路由器R1 來完成。R1 要做的事情是下面的(3)或(4)。

(3)發送方是路由器(如R1),要把IP數據報轉發到與R1連接在同一個網絡(網2)上的主機(如H3)。這時R1發送ARP請求分組(在網2上廣播),找到目的主機H3的硬件地址。

(4)發送方是路由器(如R1),要把IP數據報轉發到網3上的一臺主機(如H4)。H4與R1不是連接在同一個網絡上。這時R1發送ARP請求分組(在網2上廣播),找到連接在網2上的一個路由器R2的硬件地址。剩下的工作由這個路由器R2來完成。

4.3.3 要點

1)每臺主機都有一個ARP高速緩存,裏面有本局域網上的各主機和路由器的IP地址到硬件地址的映射表。找不到目的硬件地址時才需要發送ARP請求分組。

2)ARP請求分組(包含源IP地址、源硬件地址和目的IP地址,想知道目的硬件地址)是廣播形式,ARP響應分組(包含目的IP地址、目的硬件地址)是單播形式。

3)發送ARP響應分組的站點也會把收到的ARP請求分組的源IP地址、源硬件地址映射寫進自己的ARP緩存中。


4.4 網際控制報文協議ICMP

4.4.1 介紹

ICMP允許主機或路由器報告差錯情況和提供有關異常情況的報告。ICMP報文作爲IP層數據報的數據,加上數據報的首部,組成IP數據報發送出去。

4.4.2 ICMP報文的種類

ICMP報文的種類有兩種,即ICMP差錯報告報文和ICMP詢問報文。

1)ICMP差錯報告報文

  • 終點不可達:當路由器或主機不能交付數據報時就向源點發送終點不可達報文。
  • 時間超過:當路由器收到生存時間爲零的數據報時,除丟棄該數據報外,還要向源點發送時間超過報文。
  • 參數問題:當路由器或目的主機收到的數據報的首部中有的字段的值不正確時,就丟棄該數據報,並向源點發送參數問題報文。
  • 改變路由(重定向):路由器把改變路由報文發送給主機,讓主機知道下次應將數據報發送給另外的路由器(可通過更好的路由)

2)ICMP詢問報文

  • 回送請求和回答:ICMP回送請求報文是由主機或路由器向一個特定的目的主機發出的詢問。收到此報文的主機必須給源主機或路由器發送ICMP回送回答報文。這種詢問報文用來測試目的站是否可達以及瞭解其有關狀態。
  • 時間戳請求和回答:ICMP時間戳請求報文是請某臺主機或路由器回答當前的日期和時間。

4.4.3 應用

1)PING

PING使用了ICMP回送請求與回送回答報文。PING是應用層直接使用網絡層ICMP的一個例子。它沒有通過運輸層的TCP或UDP。

用於測試發送到哪個機器(IP地址),發送的、收到的和丟失的分組數(但不給出分組丟失的原因),以及往返時間的最小值、最大值和平均值。

2)tracert(Windows下)

Traceroute從源主機向目的主機發送一連串的IP數據報,數據報中封裝的是無法交付的UDP用戶數據報。第一個數據報P1的生存時間TTL設置爲1。當P1到達路徑上的第一個路由器R1時,路由器R1先收下它,接着把TTL的值減1。由於TTL等於零了,R1就把P1丟棄了,並向源主機發送一個ICMP時間超過差錯報告報文。源主機接着發送第二個數據報P2,並把TTL設置爲2。以此類推。最後目的主機因IP數據報中封裝的是無法交付的運輸層的UDP用戶數據報,因此目的主機要向源主機發送ICMP終點不可達差錯報告報文。(注意:對應於每一個TTL值,源主機要發送三次同樣的IP數據報)

用於測試到達目的主機所經過的路由器的IP地址,以及到達其中的每一個路由器的往返時間。


4.5 互聯網的路由選擇協議

4.5.1 內部網關協議RIP

要點

基於距離向量,封裝在UDP用戶數據報的數據部分,支持變長子網劃分和無分類域間路由選擇CIDR,適用於規模較小的網絡。

特點

(1)僅和相鄰路由器交換信息。

(2)路由器交換的信息是當前本路由器所知道的全部信息,即自己現在的路由表。也就是說,交換的信息是:“我到本自治系統中所有網絡的(最短)距離,以及到每個網絡應經過的下一跳路由器”。

(3)按固定的時間間隔交換路由信息,例如,每隔30秒。

注意:路由器在剛剛開始工作時,它的路由表是空的

距離向量算法

對每一個相鄰路由器發送過來的RIP報文,進行以下步驟:

(1)對地址爲X的相鄰路由器發來的RIP報文,先修改此報文中的所有項目:把“下一跳”字段中的地址都改爲X,並把所有的“距離”字段的值加1。每一個項目都有三個關鍵數據,即:到目的網絡N,距離是d,下一跳路由器是X。

(2)對修改後的RIP報文中的每一個項目,進行以下步驟:

若原來的路由表中沒有目的網絡N,則把該項目添加到路由表中。
否則(即在路由表中有目的網絡N,這時就再查看下一跳路由器地址)
若下一跳路由器地址是X,則把收到的項目替換原路由表中的項目。
否則(即這個項目是:到目的網絡N,但下一跳路由器不是X)
若收到的項目中的距離d小於路由表中的距離,則進行更新,
否則什麼也不做。

(3)若3分鐘還沒有收到相鄰路由器的更新路由表,則把此相鄰路由器記爲不可達的路由器,即把距離置爲16(距離爲16表示不可達)。

(4)返回。

4.5.2 內部網關協議OSPF

要點

基於鏈路狀態,封裝在IP數據報的數據部分,支持變長子網劃分和無分類域間路由選擇CIDR,適用於規模較大的網絡。

特點

(1)向本自治系統中所有路由器發送信息。這裏使用的方法是洪泛法(flooding),這就是路由器通過所有輸出端口向所有相鄰的路由器發送信息。

(2)發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態,但這只是路由器所知道的部分信息。

(3)只有當鏈路狀態發生變化時,路由器才向所有路由器用洪泛法發送此信息。而不像RIP那樣,不管網絡拓撲有無發生變化,路由器之間都要定期交換路由表的信息。

4.5.3 外部網關協議BGP

要點

基於路徑向量,封裝在TCP報文段的數據部分,支持無分類域間路由選擇CIDR。

4.5.4 路由器的構成

Snipaste_2020-01-21_16-28-37
整個的路由器結構可劃分爲兩大部分:路由選擇部分和分組轉發部分。

1)路由選擇部分:路由選擇部分也叫做控制部分,其核心構件是路由選擇處理機。路由選擇處理機的任務是根據所選定的路由選擇協議構造出路由表,同時經常或定期地和相鄰路由器交換路由信息而不斷地更新和維護路由表。路由表一般僅包含從目的網絡到下一跳(用IP地址表示)的映射。

2)分組轉發部分

  • 交換結構(switching fabric)又稱爲交換組織,它的作用就是根據轉發表(forwarding table)對分組進行處理,將某個輸入端口進入的分組從一個合適的輸出端口轉發出去。轉發表是從路由表得出的,在轉發表的每一行必須包含從要到達的目的網絡到輸出端口和某些MAC地址信息(如下一跳的以太網地址)的映射。
  • 一組輸入端口(請注意:這裏的端口就是硬件接口)
  • 一組輸出端口

4.6 IPv6(128位)

4.6.1 IPv6的格式

Snipaste_2020-01-21_16-36-28

  • 版本(version):佔4位。它指明瞭協議的版本,對IPv6該字段是6。
  • 通信量類(traffic class):佔8位。這是爲了區分不同的IPv6數據報的類別或優先級。
  • 流標號(flow label):佔20位。
  • 有效載荷長度(payload length):佔16位。它指明IPv6數據報除基本首部以外的字節數(所有擴展首部都算在有效載荷之內)。這個字段的最大值是64KB(65535字節)。
  • 下一個首部(next header):佔8位。它相當於IPv4的協議字段或可選字段。
    • 當IPv6數據報沒有擴展首部時,下一個首部字段的作用和IPv4的協議字段一樣,它的值指出了基本首部後面的數據應交付IP層上面的哪一個高層協議
    • 當出現擴展首部時,下一個首部字段的值就標識後面第一個擴展首部的類型。
  • 跳數限制(hop limit):佔8位。用來防止數據報在網絡中無限期地存在。源點在每個數據報發出時即設定某個跳數限制(最大爲255跳)。
  • 源地址:佔128位。是數據報的發送端的IP地址。
  • 目的地址:佔128位。是數據報的接收端的IP地址。

六種擴展首部:(1)逐跳選項;(2)路由選擇;(3)分片;(4)鑑別;(5)封裝安全有效載荷;(6)目的站選項。

4.6.2 IPv6的地址

1)一個IPv6數據報的目的地址可以是以下三種基本類型地址之一

  • 單播(unicast):單播就是傳統的點對點通信。

  • 多播(multicast):多播是一點對多點的通信,數據報發送到一組計算機中的每一個。IPv6沒有采用廣播的術語,而是將廣播看作多播的一個特例。

  • 任播(anycast):這是IPv6增加的一種類型。任播的終點是一組計算機,但數據報只交付其中的一個,通常是距離最近的一個。

2)地址縮寫

  • 點分十進制記法爲:104.230.140.100.255.255.255.255.0.0.17.128.150.10.255.255。
  • 冒號十六進制記法:68E6 : 8C64 : 0FFF : 0000 : 0000 : 0000 : 960A : 0FFF。
    • 允許把數字前面的0省略:68E6 : 8C64 : FFF : 0 : 0 : 0 : 960A : FFF。
    • 零壓縮:68E6 : 8C64 : FFF : : 960A : FFF。爲避免混淆,只允許一次零壓縮。
  • 點分十進制記法和冒號十六進制記法結合:0 : 0 : 0 : 0 : 0 : 0 : 128.10.2.1。

3)地址分類
Snipaste_2020-01-21_16-54-04

4.6.3 從IPv4向IPv6過渡

1)雙協議棧:雙協議棧(dual stack)是指在完全過渡到IPv6之前,使一部分主機(或路由器)裝有雙協議棧:一個IPv4和一個IPv6。它同時具有兩種IP地址:一個IPv6地址和一個IPv4地址。

2)隧道技術:在IPv6數據報要進入IPv4網絡時,把IPv6數據報封裝成爲IPv4數據報。


4.7 虛擬專用網VPN和網絡地址轉換NAT

4.7.1 虛擬專用網VPN

介紹

1)專用地址塊

  • 10.0.0.0到10.255.255.255 (或記爲10.0.0.0/8,它又稱爲24位塊)

  • 172.16.0.0到172.31.255.255 (或記爲172.16.0.0/12,它又稱爲20位塊)

  • 192.168.0.0到192.168.255.255 (或記爲192.168.0.0/16,它又稱爲16位塊)

2)專用網:採用這樣的專用IP地址的互連網絡稱爲專用互聯網或本地互聯網,或更簡單些,就叫做專用網。

3)虛擬專用網VPN(Virtual Private Network):利用公用的互聯網作爲本機構各專用網之間的通信載體,這樣的專用網又稱爲虛擬專用網VPN。

4)使用IP隧道技術實現虛擬專用網 (需要加密)
Snipaste_2020-01-21_17-03-01

4.7.2 網絡地址轉換NAT

介紹

在專用網內部的一些主機本來已經分配到了本地IP地址(即僅在本專用網內使用的專用地址),但現在又想和互聯網上的主機通信(並不需要加密)。

需要在專用網連接到互聯網的路由器上安裝NAT軟件。裝有NAT軟件的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通信時,都要在NAT路由器上將其本地地址轉換成全球IP地址,才能和互聯網連接。

NAT路由器的工作原理

Snipaste_2020-01-21_17-06-43

NAT地址轉換表舉例

前兩行表示專用網內的一主機192.168.0.3向互聯網發送了IP數據報,而NAT路由器有一個全球IP地址172.38.1.5。

後兩行專用網內的另一主機192.168.0.7向互聯網發送了IP數據報,而NAT路由器還有另外一個全球IP地址172.38.1.6。
Snipaste_2020-01-21_17-08-07

NAPT地址轉換表舉例

使用端口號的NAT也叫做網絡地址與端口號轉換NAPT(Network Address andPort Translation),而上賣面不使用端口號的NAT就叫做傳統的NAT(traditionalNAT)。
Snipaste_2020-01-21_17-12-08
現在NAPT把專用網內不同的源IP地址都轉換爲同樣的全球IP地址。但對源主機所採用的TCP端口號(不管相同或不同),則轉換爲不同的新的端口號。


思維導圖

第四章 網絡層

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章