1、網絡層
1.1 網絡層提供的兩種服務
網絡層關注的是如何將分組從源端沿着網絡路徑送達目的端
在計算機網絡領域,網絡層
應該向運輸層
提供怎樣的服務(“面向連接”還是“無連接”)曾引起了長期的爭論。
爭論焦點的實質就是:在計算機通信中,可靠交付應當由誰來負責
?是網絡還是端系統?
答曰: 是端系統來負責
,網絡傳輸過程中出現意外造成丟包的話,路由器不管,要求重發
-
兩種服務,網絡層應該向運輸層提供怎樣的服務?
- 虛電路服務
需要管理員提前建立好連接,指定固定的路線,發生故障斷連後便無法進行傳輸
- 數據報服務
這也是當今互聯網所用的服務
-
虛電路服務於數據報服務的區別
1.2 虛擬互聯網絡
1.2.1 中繼系統
網絡互相連接起來要使用一些中間設備
中間設備
又稱爲中間系統
或中繼(relay)系統
。- 物理層中繼系統:
轉發器(repeater)
。 - 數據鏈路層中繼系統:
網橋
或橋接器(bridge)
。 - 網絡層中繼系統:
路由器(router)
。 - 網橋和路由器的混合物:
橋路器(brouter)
。 - 網絡層以上的中繼系統:
網關(gateway)
。
- 物理層中繼系統:
注:現在普遍說的
網關
就是指路由器的接口了
1.2.2 需解決的問題
- 互連在一起的網絡要進行通信,會遇到許多問題需要解決,如:
- 不同的尋址方案
- 不同的最大分組長度
- 不同的網絡接入機制
- 不同的超時控制
- 不同的差錯恢復方法
- 不同的狀態報告方法
- 不同的路由選擇技術
- 不同的用戶接入控制
- 不同的服務(面向連接服務和無連接服務)
- 不同的管理與控制方式
1.2.3 分組在互聯網中的傳輸
圖中的3便指的是網絡層
1.2.4 虛擬互連網絡的意義
- 所謂虛擬互連網絡也就是邏輯互連網絡,它的意思就是互連起來的各種物理網絡的異構性本來是客觀存在的,但是我們利用 IP 協議就可以使這些性能各異的網絡從用戶看起來好像是一個統一的網絡。
- 使用 IP 協議的虛擬互連網絡可簡稱爲 IP 網。
- 使用虛擬互連網絡的好處是:當互聯網上的主機進行通信時,就好像在一個網絡上通信一樣,而看不見互連的各具體的網絡異構細節。
1.3 IP協議簡介
網際協議 IP 是 TCP/IP 體系中兩個最主要的協議之一。與 IP 協議配套使用的還有四個協議:
- 地址解析協議 ARP
(Address Resolution Protocol) - 逆地址解析協議 RARP
(Reverse Address Resolution Protocol) - 網際控制報文協議 ICMP
(Internet Control Message Protocol) - 網際組管理協議 IGMP
(Internet Group Management Protocol)
1.3.1 協議間層次關係
1.3.2 IP層次結構
IP地址分爲網絡ID
和主機ID
,通過路由器可以將網絡分爲不同的網段
(也就是不同的網絡ID),網段可以類比電話號碼的區號:
- 因此在打電話(訪問網絡)的時候,
- 就可以先根據區號(網段)去找所屬的地區(網段),
- 然後再根據號碼(主機ID)撥通對應的電話(訪問對應的主機)
1.4 IP地址與MAC地址
- 爲何既需要IP地址又需要MAC地址?先來看如下的圖展示的通信過程
由上原理圖可得到如下幾個結論:- 交換機基於數據幀的
MAC
地址轉發數據幀,路由器基於數據包的IP
地址轉發數據包 - 數據包在傳輸過程不變,過網絡設備數據幀要用新的物理層地址重新封裝
MAC
地址決定了數據幀下一跳由哪個設備接收,而IP
地址決定了數據包的起點和終點
- 交換機基於數據幀的
1.5 ARP協議和RARP協議
ARP:地址解析協議
RARP:逆地址解析協議
1.5.1 ARP工作原理
如下圖所示:
1、主機A想要和主機B進行通信,但是不知道主機B的MAC地址,於是A進行廣播,所有主機都可收到;
就好比有人告訴你隔壁班某某找你,但是不知道位置,於是乎你對班裏的所有人都大喊一聲!我是XXX,我想知道某某的位置在哪!!!
2、主機B收到廣播後,就回復主機A,告訴其MAC地址,於是建立連接。
好比你要找的那個人,他聽到了你的呼喚,站起來回復到:二傻子,這呢,這呢,我的位置在這!於是乎下次你們就可以直接找到對方的位置進行交談了。
1.5.2 ARP欺騙
- 何爲ARP欺騙:
知道了ARP的工作原理,現在有這麼一種情況,假如在主機A發送廣播的時候,在當前的網段中安裝了黑客軟件,可以抓取廣播,那麼就可以將黑客的MAC地址告知主機A,這麼一來,主機A的數據就會直接發給黑客軟件,再由黑客軟件轉發至主機B,所有的信息都會暴露,這也就是ARP欺騙。
1.5.3 ARP高速緩存的作用
- 爲了減少網絡上的通信量,主機 A 在發送其 ARP 請求分組時,就將自己的 IP 地址到硬件地址的映射寫入 ARP 請求分組。
- 當主機 B 收到 A 的 ARP 請求分組時,就將主機 A 的這一地址映射寫入主機 B 自己的 ARP 高速緩存中。這對主機 B 以後向 A 發送數據報時就更方便了。
1.5.4 使用ARP的四種典型情況
- 發送方是主機,要把IP數據報發送到本網絡上的另一個主機。這時用 ARP 找到目的主機的硬件地址。
- 發送方是主機,要把 IP 數據報發送到另一個網絡上的一個主機。這時用 ARP 找到本網絡上的一個路由器的硬件地址。剩下的工作由這個路由器來完成。
- 發送方是路由器,要把 IP 數據報轉發到本網絡上的一個主機。這時用 ARP 找到目的主機的硬件地址。
- 發送方是路由器,要把 IP 數據報轉發到另一個網絡上的一個主機。這時用 ARP 找到本網絡上的一個路由器的硬件地址。剩下的工作由這個路由器來完成。
1.6 IP數據報的格式
- 一個 IP 數據報由首部和數據兩部分組成。
- 首部的前一部分是固定長度,共 20 字節,是所有 IP 數據報必須具有的。
- 在首部的固定部分的後面是一些可選字段,其長度是可變的。
- 版本——佔 4 位,指 IP 協議的版本,目前的 IP 協議版本號爲 4 (即 IPv4)
- 首部長度——佔 4 位,可表示的最大數值是 15 個單位(一個單位爲 4 字節),因此 IP 的首部長度的最大值是 60 字節。
- 區分服務——佔 8 位,用來獲得更好的服務,在舊標準中叫做服務類型,但實際上一直未被使用過。1998 年這個字段改名爲區分服務。只有在使用區分服務(DiffServ)時,這個字段才起作用。在一般的情況下都不使用這個字段
- 總長度——佔 16 位,指首部和數據之和的長度,單位爲字節,因此數據報的最大長度爲 65535 字節。總長度必須不超過最大傳送單元 MTU。
- 標識(identification) 佔 16 位,它是一個計數器,用來產生數據報的標識
- 標誌(flag) 佔 3 位,目前只有前兩位有意義。標誌字段的最低位是 MF (More Fragment)。MF = 1 表示後面“還有分片”。MF = 0 表示最後一個分片。標誌字段中間的一位是 DF (Don’t Fragment) 。只有當 DF = 0 時才允許分片。
- 片偏移(12 位) 指出:較長的分組在分片後某片在原分組中的相對位置。片偏移以 8 個字節爲偏移單位。
- 生存時間(8 位)記爲 TTL (Time To Live)數據報在網絡中可通過的路由器數的最大值。
- 協議(8 位)字段指出此數據報攜帶的數據使用何種協議以便目的主機的 IP 層將數據部分上交給哪個處理過程
- 首部檢驗和(16 位)字段只檢驗數據報的首部不檢驗數據部分。就好比快遞員送快遞時只檢查收件人的地址姓名和聯繫方式,而不管快遞內物品的情況
1.7 ICMP簡介
爲了提高 IP 數據報交付成功的機會,在網際層使用了網際控制報文協議 ICMP (Internet Control Message Protocol)。
- ICMP 允許主機或路由器報告差錯情況和提供有關異常情況的報告。
- ICMP 不是高層協議,而是 IP 層的協議。
- ICMP 報文作爲 IP 層數據報的數據,加上數據報的首部,組成 IP 數據報發送出去。
ICMP 差錯報告報文共有 5 種
- 終點不可達
- 源點抑制(Source quench)
- 時間超過
- 參數問題
- 改變路由(重定向)(Redirect)
2、相關面試題
ARP相關
- ARP 的作用?
ARP 爲 IP 地址到對應的硬件地址提供動態映射。 - 點對點鏈路使用 ARP 嗎?
不使用 - ARP 高效運行的關鍵是什麼?
關鍵是每個主機上都有一個 ARP 的高速緩存。 - ARP 協議有什麼缺點?
- 緩存:主機的地址映射是基於高速緩存的,動態更新的。地址刷新是有時間限制的。 可 以通過下次更新之前修改計算機上的地址緩存,造成拒絕服務攻擊或者 ARP 欺騙。
- 廣播: 攻擊者可以僞裝 ARP 應答。
- ARP 應答沒有認證,都是合法的。可以在不接受到請求的時候就發出應答包。
- ARP 代理的概念和應用場景
若 ARP 請求是從一個網絡的主機發送給另一個網絡上的主機,那麼連接這兩個網絡的路由 器就可以回答該請求,這個過程叫做 ARP 代理。ARP 代理路由器響應 ARP 請求的 MAC 地 址爲路由器的 MAC 地址而非 ARP 請求的主機的 MAC 地址。
ARP 代理的應用環境:
兩個物理網絡之間的路由是使用相同的網絡號,兩個路由器設置成 ARP 代理,實現相互隱 瞞物理網絡 - 免費ARP
指主機發送 ARP 查找自己的 IP 地址,即數據鏈路層 SIP=DIP
作用有兩個:
1)一個主機使用免費 ARP 確定是有存在有其他主機設置了相同的 IP 地址
2)如果發送免費 ARP 的主機改變了 MAC 地址,可以通過發送免費 ARP 的方式告知其他主機端更新 ARP 表
IP相關
- 如何理解 IP 的不可靠和無連接。
- 不可靠:指的是不能保證數據報能成功地到達目的地。 發生錯誤時候,丟棄該數據包,發送 ICMP 消息給信源端。 可靠性由上層提供。
- 無連接:IP 不維護關於後續數據報的狀態信息。
體現在,IP 數據可以不按順序發送和接收。A 發送連續的數據報,到達 B 不一定是連續的, 來回路由選擇可能不一樣,路線也不一樣,到達先後順序也不一樣。
- IP 報文的格式和各個字段的含義。
具體詳見上文 - 爲什麼 IP 首部中要有總長度字段?
因爲一些數據鏈路(以太網)需要填充一些數據以達到最小長度。因爲以太網幀的最小長度 是 46 個字節,但是 IP 長度可能更短,所以需要總長度來確定 IP 數據部分的內容。 - 主機和路由器本質區別是?
主機從不把數據報從一個接口轉發到另一個接口,而路由器則要轉發數據報。 - IP 路由選擇的特性有什麼?
- IP 路由選擇是逐跳進行的。
IP 並不知道到達任何目的的完整路徑,只提供下一跳地址。 - 爲一個網絡指定一個路由器,而不是爲每個主機指定一個路由器。 這樣可以縮小路由表規模。
- IP 路由選擇是逐跳進行的。
- IP 搜索路由表的步驟
- 搜索匹配的主機地址 ----》搜索匹配的網絡地址 ----》搜索默認選項
- IP 層進行的選路實際上是一種選路機制,它搜索路由表並決定向哪個網絡接口發送分組
- 如果路由表中沒有默認項,而又沒有找到匹配項,這時如何處理?
結果取決於該 IP 數據報是由主機產生的還是被轉發的。 如果數據報是由本機產生的,那麼就給發送該數據報的應用程序返回一個差錯,或者是“主 機不可達差錯”或者是“網絡不可達差錯”。
如果是被轉發的數據報,就給原始發送一份 ICMP 主機不可達的差錯報文。
ICMP相關
- ICMP 報文的分類?
ICMP 分爲兩類,一類是 ICMP 查詢報文,另一類是 ICMP 差錯報文。
- ICMP 的主機不可達報文是在什麼情況下發出的?
三層設備(路由器)給該主機尋路時,沒有找到相應路徑,向源 IP 發回 ICMP 主機不可達 - 重定向報文有什麼規則?
重定向報文只能有路由器生成。
重定向報文是爲主機而不是爲路由器使用的。 - Ping 命令的具體過程是怎麼樣的?
參考文章:《對於 Ping 的過程,你真的瞭解嗎?》
3、參考
主體內容參考韓立剛老師主講的《計算機網絡》- 第5版 - 謝希仁
部分內容參考書本《計算機網絡》- 第7版 - 謝希仁
相關面試題參考CodeSheep公衆號提供