網絡層概述
網絡層的目的是實現兩個端系統之間的數據透明傳送,具體功能包括尋址和路由選擇、連接的建立、保持和終止等。它提供的服務使傳輸層不需要了解網絡中的數據傳輸和交換技術。如果您想用盡量少的詞來記住網絡層,那就是”路徑選擇、路由及邏輯尋址”。
網絡層中涉及眾多的協議,其中包括最重要的協議,也是TCP/IP的核心協議——IP協議。IP協議非常簡單,僅僅提供不可靠、無連接的傳送服務。IP協議的主要功能有:無連接數據報傳輸、數據報路由選擇和差錯控制。與IP協議配套使用實現其功能的還有地址解析協議ARP、逆地址解析協議RARP、因特網報文協議ICMP、因特網組管理協議IGMP。
IP協議詳解
虛擬互連網絡
實際的計算機網絡是錯綜複雜的,物理設備通過使用IP協議,屏蔽了物理網絡之間的差異,當網絡中的主機使用IP協議連接時,則無需關注網絡細節。IP協議使得複雜的實際網絡變為一個虛擬互連的網絡,還使得網絡層可以屏蔽底層細節而專註網絡層的數據轉發,IP協議解決了在虛擬網絡中數據報傳輸路徑的問題。
IP地址長度為32位,常分成4個8位,IP地址常使用點分十進制來表示(0~255.0~255.0~255.0~255),也就是共有\(2^{32} = 4294961296\)個IP地址。下圖是IP協議的格式:
我們來看看IP協議的首部:
4位版本 | 4位首部長度 | 8位服務類型(TOS) | 16位總長度(字節) | ||||
16位標識 | 3位標誌 | 13位片偏移 | |||||
8位生存時間(TTL) | 8位協議 | 16位首部校驗和 | |||||
32位源IP地址 | |||||||
32位目的IP地址 | |||||||
選項options(若有) | |||||||
IP數據 |
版本:佔4位,指的是IP協議的版本,通信雙方的版本必須一致,當前主流版本是4,即IPv4,也有IPv6
首部位長度:佔4位,最大數值為15,表示的是IP首部長度,單位是“32位字”(4個字節),也即是IP首部最大長度為60字節
總長度:佔16位,最大數值為65535,表示的是IP數據報總長度(IP首部+IP數據)
TTL:佔8位,表明IP數據報文在網絡中的壽命,每經過一個設備,TTL減1,當TTL=0時,網絡設備必須丟棄該報文。作用:避免數據在網絡中無限傳輸,當這個網絡報文找不到目的機器時,而進行無限傳輸,來浪費帶寬資源
協議:佔8位,表明IP數據所攜帶的具體數據是什麼協議的(如:TCP、UDP等)
協議名 | ICMP | IGMP | IP | TCP | UDP | OSPF | … |
---|---|---|---|---|---|---|---|
字段值 | 1 | 2 | 4 | 6 | 17 | 89 | … |
首部校驗和:佔16位,校驗IP首部是否有出錯
IP協議的轉發流程
在數據鏈路層的學習中我們知道了MAC地址表,由於IP協議的轉發是通過逐跳(hop-by-hop)來實現的,所以在網絡層中,存在一個類似於MAC地址表的路由表,路由表是存儲的目的IP地址和下一跳IP地址的映射,計算機或者路由器都擁有路由表。路由表如下:
目的IP地址 | 下一跳IP地址 |
---|---|
IP1 | IP4 |
IP2 | IP5 |
IP3 | IP6 |
… | … |
A設備是如何跨設備將數據發送給C設備的呢?
A設備向C設備在網絡層中傳輸數據的過程如下:
- A發出目的地為C的IP數據報,查詢路由表發現下一跳為E
- A將數據報發送給E
- E查詢路由表發現下一跳為F,將數據報發送給F
- F查詢路由表發現目的地C直接連接,將數據報發送給C
現在結合數據鏈路層和網絡層,再來看一下跨設備傳輸數據的過程:
- A發出目的地為C的IP數據報,查詢路由表發現下一跳為E
- A將IP數據報交給數據鏈路層,並告知目的MAC地址是E
- 數據鏈路層填充源MAC地址A和目的MAC地址E
- 數據鏈路層通過物理層將數據發送給E
- E的數據鏈路層接收到數據幀,把幀數據交給網絡層
- E查詢路由表,發現下一跳為F
- E把數據報交給數據鏈路層,並告知目的MAC地址為F
- E的數據鏈路層封裝數據幀併發送
- F的數據鏈路層接收到數據幀,把幀數據交給網絡層
- F查詢路由表,發現下一跳為C
- F把數據報交給數據鏈路層,並告知目的MAC地址為C
- F的數據鏈路層F封裝數據幀併發送
從IP協議的轉發流程中我們可以看到:數據幀每一跳的MAC地址都在變化,但IP數據報每一跳的IP地址始終不變。但我們會發現一個問題,在網絡層中將數據報交給數據鏈路層,並且需要告知目的MAC地址,但是在網絡層中只知道IP地址,我們是如何知道目的MAC地址的呢?這就是ARP協議做的事情了。
ARP協議
ARP(Address Resolution Protocol)地址解析協議,將網絡層中的32位IP地址,通過ARP協議解析為數據鏈路層中的48位MAC地址。這個映射關係是存儲在ARP緩存表中的。arp -a命令:查看ARP緩存表
IP地址 | MAC地址 |
---|---|
192.168.83.254 | 00-50-56-e0-33-40 |
192.168.83.255 | 01-00-5e-00-00-16 |
224.0.0.251 | 01-00-5e-00-00-fc |
239.1.2.3 | 01-00-5e-40-98-8f |
255.255.255.255 | 01-00-5e-7f-ff-fa |
ARP緩存表是ARP協議和RARP協議運行的關鍵,ARP緩存表緩存了IP地址到硬件地址之間的映射關係,ARP緩存表中的記錄並不是永久有效的,有一定的期限。這是因為當你的網絡設備,換個網絡環境,網絡設備的IP地址就可能會發生改變,ARP緩存表中的原來的記錄就失效了。當ARP緩存表中有映射關係,就直接查詢ARP緩存表;如果沒有這個映射關係,ARP協議就會廣播,並記錄回應得地址信息。
RARP(Reverse Address Resolution Protocol)逆地址解析協議,其作用與ARP協議相反,即把數據鏈路層中48位MAC地址,解析位網絡層中的32位IP地址。(R)ARP協議是TCP/IP協議棧裏面基礎的協議,ARP和RARP的操作對程序員是透明的,理解(R)ARP協議有助於理解網絡分層的細節。
IP地址的子網劃分
分類的IP地址
最小網絡號 | 最大網絡號 | 子網數量 | 最小主機號 | 最大主機號 | 主機數量 | |
---|---|---|---|---|---|---|
A | 0(00000000) | 127(01111111) | \(2^7\) | 0.0.0 | 255.255.255 | \(2^{24}\) |
B | 128.0 | 191.255 | \(2^{14}\) | 0.0 | 255.255 | \(2^{16}\) |
C | 192.0.0 | 223.255.255 | \(2^{21}\) | 0 | 255 | \(2^{8}\) |
特殊的主機號:主機號全0表示當前網絡段,不可分配為特定主機;主機號為全1表示廣播地址,向當前網絡段所有主機發消息
- A類地址網絡段全0(00000000)表示特殊網絡
- A類地址網絡段后7位全1(01111111:127)表示迴環地址
- B類地址網絡段(10000000.00000000:128.0)是不可使用的
- C類地址網絡段(192.0.0)是不可使用的
實際可使用各類IP地址如下:
最小網絡號 | 最大網絡號 | 子網數量 | 最小主機號 | 最大主機號 | 主機數量 | |
---|---|---|---|---|---|---|
A | 1 | 127(01111111) | \(2^7\)-2 | 0.0.1 | 255.255.254 | \(2^{24}\)-2 |
B | 128.1 | 191.255 | \(2^{14}\)-1 | 0.1 | 255.254 | \(2^{16}\)-2 |
C | 192.0.1 | 223.255.255 | \(2^{21}\)-1 | 1 | 254 | \(2^{8}\)-2 |
127.0.0.1,通常被稱為本地迴環地址(Loopback Address),不屬於任何一個有類別地址類。它代表設備的本地虛擬接口,所以默認被看作是永遠不會宕掉的接口。在Windows操作系統中也有相似的定義,所以通常在安裝網卡前就可以ping通這個本地迴環地址。一般都會用來檢查本地網絡協議、基本數據接口等是否正常的。
劃分子網
隨着互連網應用的不斷擴大,原先的IPv4的弊端也逐漸暴露出來,即網絡號佔位太多,而主機號位太少,所以其能提供的主機地址也越來越稀缺,目前除了使用NAT在企業內部利用保留地址自行分配以外,通常都對一個高類別的IP地址進行再劃分,以形成多個子網,提供給不同規模的用戶群使用。這裏主要是為了在網絡分段情況下有效地利用IP地址,通過對主機號的高位部分取作為子網號,從通常的網絡位界限中擴展或壓縮子網掩碼,用來創建某類地址的更多子網。但創建更多的子網時,在每個子網上的可用主機地址數目會比原先減少。
上圖就把原來的C類地址劃分成了兩個子網。
但子網號這麼多,有沒有辦法快速判斷某個IP的網絡號?這就是子網掩碼的作用了,子網掩碼是標誌兩個IP地址是否同屬於一個子網的,也是32位二進制地址,其每一個為1代表該位是網絡位,為0代表主機位。它和IP地址一樣也是使用點式十進制來表示的。如果兩個IP地址在子網掩碼的按位與的計算下所得結果相同,即表明它們共屬於同一子網中。
子網掩碼由連續的1和連續的0組成,某一個子網的子網掩碼具備網絡號位數個連續的1
在計算子網掩碼時,我們要注意IP地址中的保留地址,即” 0″地址和廣播地址,它們是指主機地址或網絡地址全為” 0″或” 1″時的IP地址,它們代表着本網絡地址和廣播地址,一般是不能被計算在內的。
無分類編址CIDR
CIDR中沒有A、B、C類網絡號、和子網劃分的概念,CIDR將網絡前綴相同的IP地址稱為一個“CIDR地址塊”,注意網絡前綴是任意位數的。
網絡前綴 | 主機號 |
---|
斜線記法:193.10.10.129/25 使用二進製表示:11000001.00001010.00001010.10000001
無分類地址CIDR相比原來的子網劃分更加 靈活:
CIDR前綴長度 | 掩碼點分十進制 | 地址數 |
---|---|---|
/13 | 255.248.0.0 | 512K |
/14 | 255.252.0.0 | 256K |
/15 | 255.254.0.0 | 128K |
/16 | 255.255.0.0 | 64K |
/17 | 255.255.128.0 | 32K |
/18 | 255.255.192.0 | 16K |
/19 | 255.255.224.0 | 8K |
網絡地址轉換NAT技術
IPv4最多只有40+億個IP地址,早期IP地址的不合理規劃導致IP號浪費。在介紹NAT技術之前,首先要知道內網地址和外網地址。
- 內網地址:內部機構使用,避免與外網地址重複。三類內網地址如下:
- 10.0.0.0~10.255.255.255(支持千萬數量級設備)
- 172.16.0.0~172.31.255.255(支持百萬數量級設備)
- 192.168.0.0~192.168.255.255(支持萬數量級設備)
- 外網地址:全球範圍使用,全球公網唯一
網絡地址轉換技術是發生在本地路由器的,主要功能就是把內網的IP地址轉成外網的IP地址來進行外部的通信,並且在接收到數據之後,再把外網IP地址映射成內網IP地址,轉發到具體的某個設備上面去。
內網多個設備使用同一個外網IP請求外網的服務,外部怎麼知道具體是哪個設備在請求的?網絡地址轉換NAT的英文全稱是Network Address Translation,NAT技術用於多個主機通過一個公有IP訪問互聯網的私有網絡中,外部主要是通過端口號來區分到底是內網的哪一個設備進行請求的,這其中有一個NA(P)T表表:示例如下:
方向 | 舊的地址和端口號 | 新的地址與端口號 |
---|---|---|
出 | 192.168.2.11:6666 | 173.21.59.10:16666 |
出 | 192.168.2.10:7777 | 173.21.59.10:17777 |
入 | 173.21.59.10:16666 | 192.168.2.11:6666 |
入 | 173.21.59.10:17777 | 192.168.2.10:7777 |
NAT減緩了IP地址的消耗,但是增加了網絡通信的複雜度
ICMP協議
ICMP協議全稱是網際控制報文協議(Internet Control Message Protocol),ICMP協議可以報告錯誤信息或者異常情況
ICMP協議首部:
8位類型 | 8位代碼 | 16位校驗和 |
ICMP報文數據 |
ICMP報文分為:差錯報告報文和詢問報文:
ICMP報文種類 | 類型的值 | 報文類型 | 具體代碼 |
差錯報告報文 | 3(終點不可達) | 網絡不可達 | 0 |
主機不可達 | 1 | ||
5(重定向) | 對網絡重定向 | 0 | |
對主機重定向 | 1 | ||
11 | 傳輸超時 | – | |
12 | 壞的IP頭 | 0 | |
缺少其他必要參數 | 1 | ||
詢問報文 | 0或8 | 回送(Echo)請求或應答 | – |
13或14 | 時間戳(Timestamp)請求或應答 | – |
ICMP協議的應用
ping應用:我們可以通過ping命令進行簡單的網絡故障排查:
- ping本地迴環地址,一般情況下,都會得到返回的,如果得不到返回,則說明你的計算機的協議棧出現了問題,這個時候就可能需要重裝系統,或者是重新安裝這個協議棧
- ping網關地址,即路由器地址,如果能得到返回的話,則說明本機到路由器的通路是通的,如果沒有返回的話,則說明你的wifi,或者你的網線連接是有問題的
- ping遠端地址,如果不通的話,則說明你的家到ISP之間的網絡是故障的,此時就需要聯繫網絡服務商(移動、電信、聯通)進行排查。
Traceroute應用:Traceroute可以探測IP數據報在網絡中走過的路徑
路由概述
思考:路由表中的下一跳地址是怎麼來的?下一跳地址是唯一的嗎?下一跳地址是最佳的嗎?路由器怎麼多,他們是怎麼協同工作的?為了解決這些問題,路由表需要一個好的算法去解決這些事情。路由算法實際上是圖論的算法,由於網絡環境複雜,使得路由算法要比圖論的算法更複雜。
由於互聯網的規模是非常大的,互聯網環境是非常複雜的,所以我們需要對互聯網進行劃分。自治系統(Autonomous System)是指處於一個管理機構下的網絡設備群,AS內部網絡自行管理,AS對外提供一個或者多個出(入)口。自治系統內部路由的協議稱為:內部網關協議(RIP、OSPF), 自治系統外部路由的協議稱為:外部網關協議(BGP)。
路由算法
路由算法的本質是距離矢量(DV)算法, 距離矢量(DV)算法介紹如下:
- 每一個節點使用兩個向量\(D_i\)和\(S_i\)
- \(D_i\)描述的是當前節點到別的節點的距離
- \(S_i\)描述的是當前節點到別的節點的下一節點
- 每一個節點與相鄰的節點交換向量\(D_i\)和\(S_i\)的信息
- 每一個節點根據交換的信息更新自己的節點信息
現在假設有A的距離矢量信息,收到的距離矢量信息如下圖:
A通過B到各個節點得距離矢量信息如下:
A通過C到各個節點得距離矢量:並更新下一條的節點
A通過D到各個節點得距離矢量:並更新下一條的節點
A通過F到各個節點得距離矢量:並更新下一條的節點
RIP協議
RIP(Routing Information Protocol)協議,RIP協議是使用DV算法的一種路由協議。RIP協議把網絡的跳數(hop)作為DV算法的距離,每隔30s交換一次路由信息,認為跳數>15的路由則為不可達路由。
RIP協議的過程
- 路由器初始化路由信息(兩個向量\(D_i\)和\(S_i\))
- 對相鄰路由器X發過來的信息,對信息的內容進行修改(下一跳地址設置為X,所有距離加1)
- 檢索本地路由,將信息中新的路由插入到路由表裡面
- 檢索本地路由,對於下一跳為X的,更新為修改后的信息
- 檢索本地路由,對比相同目的的距離,如果新信息的距離更小,則更新本地路由表
- 如果3分鐘沒有收到相鄰的路由信息,則把相鄰路由設置為不可達(16跳)
RIP協議的優缺點:
- 優點:實現簡單,開銷很小。
- 缺點:故障信息傳遞慢。也就是隨便相信“隔壁老王”,“自己不思考” “視野不夠”。因為RIP協議每一個路由器它只看到相鄰路由器的信息,而看不到更遠的路由器信息,這也限制了網絡的規模。
內部網關路由協議之OSPF協議
鏈路狀態(LS)協議
鏈路狀態(LS)協議:向所有的路由器發送消息,也就是一傳十、十傳百,只和相鄰的路由器交換信息。消息描述該路由器與相鄰路由器的鏈路狀態,每隔30s交換路由信息,只有鏈路狀態發生變化時,才發送更新信息。
Dijkstra(迪傑斯特拉)算法
Dijkstra算法是著名的圖算法,Dijkstra算法解決有權圖從一個節點到其他節點的最短路徑問題,“以起始點為中心,向外層層擴展”。
Dijkstra(迪傑斯特拉)算法定義:
- 初始化兩個集合(S, U)(S為只有初始頂點點A的集合,U為其他頂點集合)
- 如果U不為空, 對U集合頂點進行距離的排序,並取出距離A最近的一個頂點D
i. 將頂點D的納入S集合
ii. 更新通過頂點D到達U集合所有點的距離(如果距離更小則更新,否則不更新)
iii. 重複2步驟 - 直到U集合為空,算法完成
OSPF協議的過程
OSPF(Open Shortest Path First:開放最短路徑優先),OSPF協議的核心是Dijkstra算法。OSPF協議的過程:路由器接入網絡,路由器向鄰居發出問候信息,與鄰居交流鏈路狀態數據庫,廣播和更新未知路由。
RIP協議 | OSPF協議 |
---|---|
從鄰居看網絡 | 整個網絡的拓撲 |
在路由器之間累加距離 | Dijkstra算法計算最短路徑 |
頻繁、周期更新,收斂很慢 | 狀態變化更新,收斂很快 |
路由間拷貝路由信息 | 路由間傳遞鏈路狀態,自行計算路徑 |
外部網關路由協議之BGP協議
BGP(Border Gateway Protocol: 邊際網關協議),BGP協議是運行在AS之間的一種協議。由於互聯網的規模很大,AS內部使用不同的路由協議。
AS之間需要考慮除網絡特性以外的一些因素(政治、安全…),BGP(Border Gateway Protocol,邊界網關協議),BGP協議能夠找到一條到達目的比較好的路由,AS之間通過BGP發言人來進行路由信息的交換。BGP發言人(speaker):BGP並不關心內部網絡拓撲,AS之間通過BGP發言人交流信息,BGP Speaker可以人為配置策略。
總結:網絡層負責對子網間的數據包進行路由選擇。此外,網絡層還可以實現擁塞控制、網際互連等功能;網絡層的基本數據單位為IP數據報;包含的主要協議:IP協議(Internet Protocol,因特網互聯協議)、ICMP協議(Internet Control Message Protocol,因特網控制報文協議)、ARP協議(Address Resolution Protocol,地址解析協議)以及RARP協議(Reverse Address Resolution Protocol,逆地址解析協議)。網絡層重要的設備是路由器。常見的路由選擇協議有:RIP協議、OSPF協議。RIP協議 :底層是貝爾曼福特算法,它選擇路由的度量標準(metric)是跳數,最大跳數是15跳,如果大於15跳,它就會丟棄數據包;OSPF協議 :Open Shortest Path First開放式最短路徑優先,底層是迪傑斯特拉算法,是鏈路狀態路由選擇協議,它選擇路由的度量標準是帶寬,延遲。
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※網頁設計公司推薦不同的風格,搶佔消費者視覺第一線
※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益
※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面
※南投搬家公司費用需注意的眉眉角角,別等搬了再說!
※教你寫出一流的銷售文案?
※回頭車貨運收費標準
※別再煩惱如何寫文案,掌握八大原則!