❶ 計算機網路_網路層
在計算機網路領域,網路層應該向運輸層提供怎樣的服務(面向連接還是無連接)曾引起了長期的爭論,爭論焦點的實質就是:在計算機通信中,可靠交付應當由誰來負責?是 網路 還是 端系統
只是一條 邏輯上的連接 ,分組都沿著這條邏輯連接按照存儲轉發方式傳送,並不是真正建立了一條物理連接。
請注意,電路交換的 電話通信 是先建立了一條 真正的連接 。因此分組交換的虛連接和電路交換的連接只是類似,但並不完全一樣。
數據報服務
網際協議IP是TCP/IP體系中兩個最主要的協議之一,與IP協議配套使用的還有三個協議
互連在一起的網路要進行通信,會遇到許多問題要解決
網路互連要使用一些中間設備
中間設備 又稱為 中間系統 或 中繼 系統
如果我們只從網路層考慮問題,那麼IP數據報就可以想像是在網路層中傳送。
每一類地址都由兩個固定長度的欄位組成,其中一個 欄位是 網路號 net-id ,它標志主機(或路由器)所連接到的網路,而另一個欄位則是**主機號 host-id
**,它標志該主機(或路由器)
可以記為
觀察上圖
比較重要的一點是要區別IP地址與 硬體地址 的區別
從層次的角度來看, 物理地址是數據鏈路層和物理層使用的地址,而IP地址是網路層和以上使用的地址,是一種邏輯地址(稱IP地址是邏輯地址是因為IP地址是用 軟體實現的)
有 四個A類網路 通過三個路由器連接在一起,每個網路上都可能有成千上萬個主機。可以想像,若按目的主機號來製作路由表,則所得出的路由表就會過於龐大。丹若按主機所在的 網路地址 來製作路由表,那麼每一個路由器中的路由表就只包含 四個項目 。這樣可以大大簡化路由表。
使用這樣的簡化圖,我們可以不用關心某個網路內部的具體拓撲結構及連接在該網路上有多少台計算機,他還強調了在互聯網上轉發分組時,是 從一個路由器轉發到下一個路由器 。
根據目的網路地址就能確定下一跳路由器,這一點做的結果是:
雖然網際網路所有分組轉發都是 基於目的主機所在的網路 ,但在大多數情況下都允許有這樣的特例,即對特定的目的主機指明一個路由。這種路由叫做 特定主機路由 ,採用特定主機路由可使網路管理人員能更方便地控制網路和測試網路,同時也可在需要考慮某種安全問題時採用這種特定主機路由。
IP 數據報的首部中 沒有地方 可以用來指明「下一跳路由器的 IP 地址」,當路由器收到待轉發的數據報, 不是 將下一跳路由器的 IP 地址填入 IP 數據報,而是 送交下層的網路介面軟體 。網路介面軟體使用 ARP 負責將下一跳路由器的 IP 地址轉換成 硬體地址 ,並將此硬體地址放在鏈路層的** MAC 幀 的首部,然後根據這個 硬體地址**找到下一跳路由器。
(1) 從數據報的首部提取目的主機的 IP 地址 D, 得出目的網路地址為 N。
(2) 若網路 N 與此路由器直接相連,則把數據報直接交付目的主機 D;否則是間接交付,執行(3)。
(3) 若路由表中有目的地址為 D 的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器;否則,執行(4)。
(4) 若路由表中有到達網路 N 的路由,則把數據報傳送給路由表指明的下一跳路由器;否則,執行(5)。
(5) 若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;否則,執行(6)。
(6) 報告轉發分組出錯。
在 ARPANET 的早期,IP 地址的設計確實不夠合理。
從 1985 年起在 IP 地址中又增加了一個「子網號欄位」,使兩級的 IP 地址變成為三級的 IP 地址。這種做法叫作劃分子網(subnetting) 。劃分子網已成為網際網路的正式標准協議。
請注意現在子網號為3的網路的 網路地址 是145.13.3.0(既不是原來兩級的IP地址的網路地址145.13.0.0,也不是簡單的子網號3),為了使路由器能很方便的從數據報中的目的IP地址中提取所要找的子網的網路地址,路由器就要使用三級IP地址的子網掩碼(如上圖,三級IP地址的子網掩碼),它也是32位,由一串1和跟隨的一串0組成。子網掩碼中的1對應於IP地址中原來二級地址中的16位網路號加上新增加的8位子網號,而子網掩碼中的0對應於現在的8位主機號。 雖然RFC文檔中沒有規定子網掩碼中的一串1必須是連續的,但卻極力推薦在子網掩碼中選用連續的1,以避免發生錯誤
不管有沒有劃分子網,只要把子網掩碼和IP地址進行逐位相 與 運算,就立即得出網路地址來,這樣路由器處理到來的分組時可以採用相同的演算法。
歸納下上述的要點,從網路145.13.0.0外面看,這就是一個普通的B類網路,但進入這個網路後(即到了路由器),就看到了還有許多網路(即劃分了子網後的許多網路),其網路地址為145.13.x.0(這里x可以表示不同的數值),而這些網路的子網掩碼都是24個連1跟上8個連0。總之,在這個網路的內外,看到的網路是不同的
為了更便於查路由表,現在網際網路的標准規定:所有的網路都必須使用子網掩碼,同時在路由器的路由表中也必須有子網掩碼這一欄。如果一個網路不劃分子網,那麼該網路的子網掩碼就使用默認子網掩碼,默認子網掩碼中1的位置和IP地址中的網路號欄位正好相對應。因此,若用默認子網掩碼和某個不劃分子網的IP地址逐位相與,就應當能夠得出該IP地址的網路地址來,這樣做可以不用查找該地址的類別位就能知道這是哪一類的IP地址 (書上原話 沒懂 !!!!)
P137有一個表格寫B類子網劃分選擇(使用固定長度子網)
有一個例題請見教材P139
劃分子網在一定程度上緩解了網際網路在發展中遇到的困難。然而在 1992 年網際網路仍然面臨三個必須盡早解決的問題,這就是:
無分類的兩級編址的記法是:
CIDR 還使用 斜線記法 (slash notation),它又稱為 CIDR記法 ,即在 IP 地址後面加上一個斜線「/」,然後寫上網路前綴所佔的位數(這個數值對應於三級編址中子網掩碼中 1 的個數)。CIDR 把網路前綴都相同的連續的 IP 地址組成 「CIDR 地址塊」 。
為了更方便的進行路由選擇,CIDR使用32位的地址掩碼,地址掩碼由一串1和一串0組成,而1的個數就是網路前綴的長度。例如/20地址塊的地址掩碼是:11111111 11111111 11110000 00000000 20個連續的1,斜線記法中,斜線後面的數字就是地址掩碼中1的個數
這個 ISP 共有 64 個 C 類網路。如果不採用 CIDR 技術,則在與該 ISP 的路由器交換路由信息的每一個路由器的路由表中,就需要有 64 個項目。但採用地址聚合後,只需用路由聚合後的 1 個項目 206.0.64.0/18 就能找到該 ISP。
// 這里還沒太懂.... 就是共有多少個幾類網路那裡
報文格式
ICMP差錯報告報文的數據欄位的內容
❷ 計算機網路第四章(網路層)
4.1、網路層概述
簡介
網路層的主要任務是 實現網路互連 ,進而 實現數據包在各網路之間的傳輸
這些異構型網路N1~N7如果只是需要各自內部通信,他們只要實現各自的物理層和數據鏈路層即可
但是如果要將這些異構型網路互連起來,形成一個更大的互聯網,就需要實現網路層設備路由器
有時為了簡單起見,可以不用畫出這些網路,圖中N1~N7,而將他們看做是一條鏈路即可
要實現網路層任務,需要解決一下主要問題:
網路層向運輸層提供怎樣的服務(「可靠傳輸」還是「不可靠傳輸」)
在數據鏈路層那課講過的可靠傳輸,詳情可以看那邊的筆記:網路層對以下的 分組丟失 、 分組失序 、 分組重復 的傳輸錯誤採取措施,使得接收方能正確接受發送方發送的數據,就是 可靠傳輸 ,反之,如果什麼措施也不採取,則是 不可靠傳輸
網路層定址問題
路由選擇問題
路由器收到數據後,是依據什麼來決定將數據包從自己的哪個介面轉發出去?
依據數據包的目的地址和路由器中的路由表
但在實際當中,路由器是怎樣知道這些路由記錄?
由用戶或網路管理員進行人工配置,這種方法只適用於規模較小且網路拓撲不改變的小型互聯網
另一種是實現各種路由選擇協議,由路由器執行路由選擇協議中所規定的路由選擇演算法,而自動得出路由表中的路有記錄,這種方法更適合規模較大且網路拓撲經常改變的大型互聯網
補充 網路層(網際層) 除了 IP協議 外,還有之前介紹過的 地址解析協議ARP ,還有 網際控制報文協議ICMP , 網際組管理協議IGMP
總結
4.2、網路層提供的兩種服務
在計算機網路領域,網路層應該向運輸層提供怎樣的服務(「 面向連接 」還是「 無連接 」)曾引起了長期的爭論。
爭論焦點的實質就是: 在計算機通信中,可靠交付應當由誰來負責 ?是 網路 還是 端系統 ?
面向連接的虛電路服務
一種觀點:讓網路負責可靠交付
這種觀點認為,應藉助於電信網的成功經驗,讓網路負責可靠交付,計算機網路應模仿電信網路,使用 面向連接 的通信方式。
通信之前先建立 虛電路 (Virtual Circuit),以保證雙方通信所需的一切網路資源。
如果再使用可靠傳輸的網路協議,就可使所發送的分組無差錯按序到達終點,不丟失、不重復。
發送方 發送給 接收方 的所有分組都沿著同一條虛電路傳送
虛電路表示這只是一條邏輯上的連接,分組都沿著這條邏輯連接按照存儲轉發方式傳送,而並不是真正建立了一條物理連接。
請注意,電路交換的電話通信是先建立了一條真正的連接。
因此分組交換的虛連接和電路交換的連接只是類似,但並不完全一樣
無連接的數據報服務
另一種觀點:網路提供數據報服務
互聯網的先驅者提出了一種嶄新的網路設計思路。
網路層向上只提供簡單靈活的、 無連接的 、 盡最大努力交付 的 數據報服務 。
網路在發送分組時不需要先建立連接。每一個分組(即 IP 數據報)獨立發送,與其前後的分組無關(不進行編號)。
網路層不提供服務質量的承諾 。即所傳送的分組可能出錯、丟失、重復和失序(不按序到達終點),當然也不保證分組傳送的時限。
發送方 發送給 接收方 的分組可能沿著不同路徑傳送
盡最大努力交付
如果主機(即端系統)中的進程之間的通信需要是可靠的,那麼就由網路的 主機中的運輸層負責可靠交付(包括差錯處理、流量控制等) 。
採用這種設計思路的好處是 :網路的造價大大降低,運行方式靈活,能夠適應多種應用。
互連網能夠發展到今日的規模,充分證明了當初採用這種設計思路的正確性。
虛電路服務與數據報服務的對比
對比的方面 虛電路服務 數據報服務
思路 可靠通信應當由網路來保證 可靠通信應當由用戶主機來保證
連接的建立 必須有 不需要
終點地址 僅在連接建立階段使用,每個分組使用短的虛電路號 每個分組都有終點的完整地址
分組的轉發 屬於同一條虛電路的分組均按照同一路由進行轉發 每個分組獨立選擇路由進行轉發
當結點出故障時 所有通過出故障的結點的虛電路均不能工作 出故障的結點可能會丟失分組,一些路由可能會發生變化
分組的順序 總是按發送順序到達終點 到達終點時不一定按發送順序
端到端的差錯處理和流量控制 可以由網路負責,也可以由用戶主機負責 由用戶主機負責
4.3、IPv4
概述
分類編制的IPv4地址
簡介
每一類地址都由兩個固定長度的欄位組成,其中一個欄位是 網路號 net-id ,它標志主機(或路由器)所連接到的網路,而另一個欄位則是 主機號 host-id ,它標志該主機(或路由器)。
主機號在它前面的網路號所指明的網路范圍內必須是唯一的。
由此可見, 一個 IP 地址在整個互聯網范圍內是唯一的 。
A類地址
B類地址
C類地址
練習
總結
IP 地址的指派范圍
一般不使用的特殊的 IP 地址
IP 地址的一些重要特點
(1) IP 地址是一種分等級的地址結構 。分兩個等級的好處是:
第一 ,IP 地址管理機構在分配 IP 地址時只分配網路號,而剩下的主機號則由得到該網路號的單位自行分配。這樣就方便了 IP 地址的管理。
第二 ,路由器僅根據目的主機所連接的網路號來轉發分組(而不考慮目的主機號),這樣就可以使路由表中的項目數大幅度減少,從而減小了路由表所佔的存儲空間。
(2) 實際上 IP 地址是標志一個主機(或路由器)和一條鏈路的介面 。
當一個主機同時連接到兩個網路上時,該主機就必須同時具有兩個相應的 IP 地址,其網路號 net-id 必須是不同的。這種主機稱為 多歸屬主機 (multihomed host)。
由於一個路由器至少應當連接到兩個網路(這樣它才能將 IP 數據報從一個網路轉發到另一個網路),因此 一個路由器至少應當有兩個不同的 IP 地址 。
(3) 用轉發器或網橋連接起來的若干個區域網仍為一個網路 ,因此這些區域網都具有同樣的網路號 net-id。
(4) 所有分配到網路號 net-id 的網路,無論是范圍很小的區域網,還是可能覆蓋很大地理范圍的廣域網,都是平等的。
劃分子網的IPv4地址
為什麼要劃分子網
在 ARPANET 的早期,IP 地址的設計確實不夠合理:
IP 地址空間的利用率有時很低。
給每一個物理網路分配一個網路號會使路由表變得太大因而使網路性能變壞。
兩級的 IP 地址不夠靈活。
如果想要將原來的網路劃分成三個獨立的網路
所以是否可以從主機號部分借用一部分作為子網號
但是如果未在圖中標記子網號部分,那麼我們和計算機又如何知道分類地址中主機號有多少比特被用作子網號了呢?
所以就有了劃分子網的工具: 子網掩碼
從 1985 年起在 IP 地址中又增加了一個「 子網號欄位 」,使兩級的 IP 地址變成為 三級的 IP 地址 。
這種做法叫做 劃分子網 (subnetting) 。
劃分子網已成為互聯網的正式標准協議。
如何劃分子網
基本思路
劃分子網純屬一個 單位內部的事情 。單位對外仍然表現為沒有劃分子網的網路。
從主機號 借用 若干個位作為 子網號 subnet-id,而主機號 host-id 也就相應減少了若干個位。
凡是從其他網路發送給本單位某個主機的 IP 數據報,仍然是根據 IP 數據報的 目的網路號 net-id,先找到連接在本單位網路上的路由器。
然後 此路由器 在收到 IP 數據報後,再按 目的網路號 net-id 和 子網號 subnet-id 找到目的子網。
最後就將 IP 數據報直接交付目的主機。
劃分為三個子網後對外仍是一個網路
優點
1. 減少了 IP 地址的浪費 2. 使網路的組織更加靈活 3. 更便於維護和管理
劃分子網純屬一個單位內部的事情,對外部網路透明 ,對外仍然表現為沒有劃分子網的一個網路。
子網掩碼
(IP 地址) AND (子網掩碼) = 網路地址 重要,下面很多相關知識都會用到
舉例
例子1
例子2
默認子網掩碼
總結
子網掩碼是一個網路或一個子網的重要屬性。
路由器在和相鄰路由器交換路由信息時,必須把自己所在網路(或子網)的子網掩碼告訴相鄰路由器。
路由器的路由表中的每一個項目,除了要給出目的網路地址外,還必須同時給出該網路的子網掩碼。
若一個路由器連接在兩個子網上,就擁有兩個網路地址和兩個子網掩碼。
無分類編址的IPv4地址
為什麼使用無分類編址
無分類域間路由選擇 CIDR (Classless Inter-Domain Routing)。
CIDR 最主要的特點
CIDR使用各種長度的「 網路前綴 」(network-prefix)來代替分類地址中的網路號和子網號。
IP 地址從三級編址(使用子網掩碼)又回到了兩級編址 。
如何使用無分類編址
舉例
路由聚合(構造超網)
總結
IPv4地址的應用規劃
給定一個IPv4地址快,如何將其劃分成幾個更小的地址塊,並將這些地址塊分配給互聯網中不同網路,進而可以給各網路中的主機和路由器介面分配IPv4地址
定長的子網掩碼FLSM(Fixed Length Subnet Mask)
劃分子網的IPv4就是定長的子網掩碼
舉例
通過上面步驟分析,就可以從子網1 ~ 8中任選5個分配給左圖中的N1 ~ N5
採用定長的子網掩碼劃分,只能劃分出2^n個子網,其中n是從主機號部分借用的用來作為子網號的比特數量,每個子網所分配的IP地址數量相同
但是也因為每個子網所分配的IP地址數量相同,不夠靈活,容易造成IP地址的浪費
變長的子網掩碼VLSM(Variable Length Subnet Mask)
無分類編址的IPv4就是變長的子網掩碼
舉例
4.4、IP數據報的發送和轉發過程
舉例
源主機如何知道目的主機是否與自己在同一個網路中,是直接交付,還是間接交付?
可以通過 目的地址IP 和 源地址的子網掩碼 進行 邏輯與運算 得到 目的網路地址
如果 目的網路地址 和 源網路地址 相同 ,就是 在同一個網路 中,屬於 直接交付
如果 目的網路地址 和 源網路地址 不相同 ,就 不在同一個網路 中,屬於 間接交付 ,傳輸給主機所在網路的 默認網關 (路由器——下圖會講解),由默認網關幫忙轉發
主機C如何知道路由器R的存在?
用戶為了讓本網路中的主機能和其他網路中的主機進行通信,就必須給其指定本網路的一個路由器的介面,由該路由器幫忙進行轉發,所指定的路由器,也被稱為 默認網關
例如。路由器的介面0的IP地址192.168.0.128做為左邊網路的默認網關
主機A會將該IP數據報傳輸給自己的默認網關,也就是圖中所示的路由器介面0
路由器收到IP數據報後如何轉發?
檢查IP數據報首部是否出錯:
若出錯,則直接丟棄該IP數據報並通告源主機
若沒有出錯,則進行轉發
根據IP數據報的目的地址在路由表中查找匹配的條目:
若找到匹配的條目,則轉發給條目中指示的嚇一跳
若找不到,則丟棄該數據報並通告源主機
假設IP數據報首部沒有出錯,路由器取出IP數據報首部各地址欄位的值
接下來路由器對該IP數據報進行查表轉發
逐條檢查路由條目,將目的地址與路由條目中的地址掩碼進行邏輯與運算得到目的網路地址,然後與路由條目中的目的網路進行比較,如果相同,則這條路由條目就是匹配的路由條目,按照它的下一條指示,圖中所示的也就是介面1轉發該IP數據報
路由器是隔離廣播域的
4.5、靜態路由配置及其可能產生的路由環路問題
概念
多種情況舉例
靜態路由配置
舉例
默認路由
舉例
默認路由可以被所有網路匹配,但路由匹配有優先順序,默認路由是優先順序最低的
特定主機路由
舉例
有時候,我們可以給路由器添加針對某個主機的特定主機路由條目
一般用於網路管理人員對網路的管理和測試
多條路由可選,匹配路由最具體的
靜態路由配置錯誤導致路由環路
舉例
假設將R2的路由表中第三條目錄配置錯了下一跳
這導致R2和R3之間產生了路由環路
聚合了不存在的網路而導致路由環路
舉例
正常情況
錯誤情況
解決方法
黑洞路由的下一跳為null0,這是路由器內部的虛擬介面,IP數據報進入它後就被丟棄
網路故障而導致路由環路
舉例
解決方法
添加故障的網路為黑洞路由
假設。一段時間後故障網路恢復了
R1又自動地得出了其介面0的直連網路的路由條目
針對該網路的黑洞網路會自動失效
如果又故障
則生效該網路的黑洞網路
總結
4.6、路由選擇協議
概述
網際網路所採用的路由選擇協議的主要特點
網際網路採用分層次的路由選擇協議
自治系統 AS :在單一的技術管理下的一組路由器,而這些路由器使用一種 AS 內部的路由選擇協議和共同的度量以確定分組在該 AS 內的路由,同時還使用一種 AS 之間的路由選擇協議用以確定分組在 AS之間的路由。
自治系統之間的路由選擇簡稱為域間路由選擇,自治系統內部的路由選擇簡稱為域內路由選擇
域間路由選擇使用外部網關協議EGP這個類別的路由選擇協議
域內路由選擇使用內部網關協議IGP這個類別的路由選擇協議
網關協議 的名稱可稱為 路由協議
常見的路由選擇協議