計算機網絡-網絡層


網絡層的各項配套協議:

image-20210914151646063image-20210914152752236

網絡層主要是通過IP協議將IP報進行數據投遞,首先主機通過查找自身的路由表將信息投遞給路由器,路由器會判斷這個IP報是否可直達,如果不可以則通過內部的路由表投遞給下一個路由器,直到某個路由器判斷此報文在本網絡中是可直達的,那么通過ARP+鏈路層的協議直接投遞。

image-20210914152717003

IP划分

image-20210914154408593

  • A類,B類,C類地址的網絡號在圖中都是灰色的,分別為1,2,3個字節長度。分別在網絡號的首字節從高位開始分別有0,10,110的類別號
  • A,B,C類地址的主機號字段分別占用3,2,1個字節長度
  • D類用於IP多播的地址

A類地址:0.0.0.0 - 127.255.255.255

B類地址:128.0.0.0 - 191.255.255.255

C類地址:192.0.1.0 - 223.255.255.255

常用三種類別

image-20210914155001608

​ A類網絡號有7位,但是有兩個組合是不能作為地址的,網絡號為127時(01111111)的地址(127.0.0.1)表示回環地址,網絡號全0(0.0.0.0)表示的是本網絡上的本主機。B和C類也有着同樣的規律。

按照上述表格總結規律:

  1. 網絡號為127時,主機號為全0或者1時為環回測試
  2. 網絡號為全0時
    1. 主機號為全0,本網絡上的主機
    2. 主機號正常,本網絡上的某台主機
  3. 主機號為全1時
    1. 網絡號為全1,本網絡上進行廣播
    2. 網絡號正常,指定網絡號上進行廣播

私有地址:

image-20210914181201146

無分類編址CIDR

解決痛點:

  1. B類地址空間快要全部分配完畢。
  2. 互聯網主干網上路由表急速增長。
  3. IPv4地址空間最終全部耗盡。-----采用IPv6解決

​ 其實早在 1987年,RFC 1009 就指明了在一個划分子網的網絡中可同時使用幾個不同的子網掩碼。使用變長子網掩碼 VLSM (Variable Length Subnet Mask)可進一步提高IP地址資源的利用率。在 VLSM 的基礎上又進一步研究出無分類編址方法,它的正式名字是無分類域間路由選擇 CIDR(Classless Inter-Domain Routing,CIDR 的讀音是"sider")。

特點:

  1. 消除傳統的ABC類空間地址和划分子網的概念,從划分子網的3層又回到了兩層模型。CIDR還是用斜線記法:IP地址/網絡前綴的位數
  2. CIDR將網絡前綴相同的連續IP地址組成一個CIDR地址塊。

雖然說CIDR是兩層的結構但是還是可以使用子網的,從主機標識划分一些位成為子網標識就可以了。由於一個CIDR地址中包括很多地址,所以在路由表中就可以利用CIDR來查找目的網絡,稱之為地址聚合,可以讓一個路由表示傳統分類地址的很多個路由,使得互聯網路由更快。

示例:

image-20210915164903030

image-20210915165020172

​ 所以CIDR可以很好的去划分網絡,過去ABC的網絡格式太過於僵硬容易浪費資源,而且在路由表中會有很多重復的路由信息,通過CIDR可以將部分路由信息進行聚合,相當於上述中IP報目的地址與上18位的字碼掩碼等於206.0.64.0的話直接全部走ISP的路由,此時路由表中只有一個路由信息即:

目的網絡 子網掩碼
206.0.64.0 255.255.192.0

如果使用傳統的分類型網絡,路由表中會有64個路由從目的地址:206.0.64.0~206.0.127.0。相當於快遞到達所在地區后不是立馬派送到家而是先放置在快遞驛站,然后快遞驛站再來派送。

但是在CIDR地址中常有一個IP地址可能匹配到多個路由信息,所以這個時候就需要通過最長子序列算法進行匹配。

划分子網

ARPANET設計的網絡IP地址一開始的兩層的:網絡標識+主機標識,這樣做有三個大的缺點:

  1. IP空間地址利用率低
  2. 每一個物理網絡分配一個網絡號會使得路由表過大
  3. 兩級IP不夠靈活

所以引入了子網的概念在兩層的標識中間加上一層子網標識。

image-20210914171816106

基本思路:

  1. 一個擁有多個物理網絡的單位可以將所屬的網絡划分為多個子網。從外部看來看不出這個單位有多少個子網,因為子網的划分是這個網絡內部的事情
  2. 划分子網其實就是借用IP地址主機位的若干位。
  3. 外部發來的數據,先是發送給該單位的互聯網路由器,再根據報文中目的IP分析出網絡號和子網,找到目的子網

子網掩碼

當IP報文發到路由器上時,路由器並不清楚當前這個網絡是不是划分了子網,所以需要通過子網掩碼進行與運算得到網絡地址

image-20210914171504605

默認情況下的子網掩碼就是IP分類中定義的網絡號大小部分全是1的地址。當所在的網絡區域中定義了子網則需要將路由器的子網掩碼重新設置。

image-20210914171948116

子網路由

使用子網划分后,路由表中需要包含以下幾項:

  • 目的網絡地址
  • 子網掩碼(默認情況下是默認子網掩碼)
  • 下一跳地址

轉發分組算法:

  1. 收到的IP數據報的目的地址位D
  2. 首先判斷是否可以直接交付:先將與該路由直接連接的網絡的子網掩碼和D進行與操作
    1. 得到的網絡號和某個直接相連的網絡一致的話,通過ARP協議+鏈路層直接交付
    2. 進行間接交付,跳到3
  3. 若路由表中又目的地址位D的主機路由,則跳到該路由上
  4. 對路由表中每一行路由信息的子網掩碼提取出來和D進行與操作,如果有一行路由信息的網絡地址和結果一致則交付
  5. 交付給默認路由表指定的路由器

案例:

H1H2發送分組,討論R1的路由過程

image-20210914174120299

首先將128.30.33.138和子網掩碼255.255.255.128進行與運算得出結果:128.30.33.128,此網絡號和子網1的網絡號128.30.33.0不符合,無法直接交付;於是主機128.30.33.13將分組交付給路由器R1,R1連接了兩個網絡,和上述一樣將目的IP和子網掩碼進行與操作得到網絡號位:128.30.33.128,與子網2的網絡地址一致,所以R1可以直接交付給目的主機。

私有IP塊

ARP協議

ARP(Address Resolution Protocol)協議是網絡層和鏈路層交互的一個底層協議,主要目的是通過IP地址來找到MAC地址,然后使用MAC地址進行鏈路層的直接送達。

image-20210914160243791

協議算法步驟:

  1. ARP進程在局域網發送一條ARP廣播,大概內容為:我的IP為xxxx,MAC地址為xxx,我需要直到IP為xxx主機的MAC地址

  2. 主機接收到廣播后,如果不符合本機的IP地址就將數據過濾調,如果確實是本機IP地址則會給發送方回復一個ARP單播,告知MAC地址

  3. 主機接收到ARP回應后,將IP和MAC地址關系存入到ARP高速緩存中

    每條映射都有固定的過期時間,當到期后會重新進行ARP請求。

IPv4數據報

image-20210914161917323

  • 版本:指的是IP協議,4代表IPv4,6代表IPv6協議
  • 首部長度:最長為60字節,單位為4個字節;固定部分+可變部分
  • 區分服務:預留一般不用
  • 總長度:首部長度+數據部分長度,最大長度\(2^{16}-1=65535\)字節,(IP協議規定長度超過576字節的數據報文,需要判斷一下是否超過MTU大小)
  • 標識:數據報長度超過MTU進行分片時,相同的標識字段標識一個數據報
  • 標志:占3位,只有中間和最低位有意義
    • 最低位MF(More Fragment),當MF=1時表示后面還有分片。
    • 中間位DF(Dont Fragment),不允許分片,當DF=0時才能分片。
  • 片偏移:分片時,子片相對於原來數據報的偏移位置。
  • 生存時間:常用名稱位TTL,表示數據報還能投遞的跳數,每轉發一次路由數據報的TTL會被減一,當TTL等於0時就不再轉發
  • 協議:數據報攜帶的是何種協議:
    • image-20210914163526182
  • 首部校驗和:首部數據進行哈希算法取特征值
  • 源地址:發送方IP地址
  • 目的地址:接受方IP地址

IP報文頭中的可選字段用的比較少,在IPv6中已經將報文頭全部做成固定的。

ICMP協議

ICMP(Intenet Control Message Protocol)目的:更有效的轉發IP數據報和提高交付的成功率。

ICMP允許主機和路由器報告差錯情況和有關的異常情況報告。

ICMP報文:

image-20210915170805036

ps:ICMP是封裝在IP報文內部的,但ICMP卻不是高層協議。

類型

  • 3差錯報文報告:終點不可達。(主機或路由器遇到無法交付的數據會向源地址報告此錯誤)
  • 11超時:(TTL減少為0時)
  • 12參數問題:IP首部中有問題時就會拋棄此報文並向源主機報告
  • 5重定向:路由器將改變理由的報文發送給主機,下次主機就知道應該將報文發送給其他路由器。(主機一開始的路由表是空的,所以一般的數據報文都是直接發送給默認路由器,當默認路由器認為此報文應該直接發送給另外一個路由器B時,他就會發送一個重定向給主機。主機會在路由表中維護一個新的路由)
  • 810回送(echo)請求或者回答:向一個主機或者路由器發送請求,主機或路由器接受請求后必須給原機回送報文,用來探知是否可達
  • 1314時間戳請求或回答:在上述的命令上加上時間戳,可以進行時間同步或者時間測量.

PINGTraceroute都是利用了ICMP協議:PING使用先通過DNS獲取到請求的IP地址,然后通過時間戳請求來計算延遲和傳輸時間,Traceroute是向目的發送一條無法交付的UDP數據包,第一個數據包的生存周期TTL設置為1,達到第一個路由器會觸發超時錯誤然后第二個報文將TTL加一,知道到達最終的主機或者路由器,所以最終就可以打印出一個路由跳轉的路線。

IP多播

IP分發中分為單播,多播(又稱之為組播)和廣播

單播表示的是網絡中1對1之間的信息傳輸。

多播表示一對多的數據傳輸,類似於老師一對多個學生講課,在IP分類中IP前四位為1110的地址都是多播地址

廣播表示將數據給所有主機,一般在子網,局域網中使用,通常為網絡號+主機號(都為1)表示此網絡下進行廣播

多播的目的:解決互聯網中一對多通信帶來的網絡風暴,如果一個服務器需要發送一條推送消息給1千萬個用戶那么他將發送一千萬條消息在互聯網上,如果用上組播只需要發送一條。

image-20210915211030934

多播的標識符就是IP地址中的D類分類,也就是IP前四位為1110的地址也就是地址224.0.0.0到239.255.255.255;一個D類地址代表一個多播組,這樣一共可以表示\(2^{28}\)個多播組,這是完全夠用的。在多播組數據傳輸時,首部的協議字段為2,表面使用的是IGMP網際組管理協議。

局域網多播

按照規定以太網MAC地址的高24位為00-00-5E,且以太網地址中的第一個字節第一位為1時代表多播地址,那么MAC地址的范圍就是:01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF。由此可見IP地址和MAC地址是無法一一對應的,所以可能存在一個IP多播地址對應多個MAC地址的存在,這個時候就需要在IP層面通過軟件進行數據過濾。

image-20210915214057168

為什么不是MAC組播地址不是FF而是7F呢?

"有一個有趣的故事是關於為什么只有23位有價值的MAC地址空間分配給IP組播,回到20世紀 90年代初,Steve Deering 取得了一些關於IP組播研究工作的成果,因此,他希望IEEE配置16個連續不斷的組織機構惟一性標識符(OUI)作為IP組播MAC地址使用.國為一個OUI 包含24位有價值的地址空間,16個連續不斷的OUI 將提供全部28位有價值的MAC地址空間,並且允許一對—地把第3層IP組播地址映射到MAC地址.很遺憾,當時一個OU的價格是1000,Steve 的經理, Jon Postel,不願意花16000 購買全部28位有價值MAC地址.相反, Jon 願意在預算外花1000 購買一個OUI,並且拿出一半地址(23位)給 Steve 作IP組播研究之用."

IGMP協議

讓連接在本地局域網上的多播路由器知道本局域網內是否有主機參保或者推出了某個多播組

協議步驟:

  1. 當主機加入新的多播組時,該主機向該多播組的地址發送一個IGMP報文,聲明自己要成為該組的組員。本地多播路由器接受到IGMP報文后還要利用多播路由協議將組成員關系轉發給其他多播路由器。
  2. 組成員的關系是動態的,路由器需要周期的去詢問主機是否還加入之前的分組。

IPv6

image-20210915203949044

  • 版本:和IPv4一樣,4代表IPv4,6代表IPv6
  • 通信量類:區分不同的IPv4數據報類別和優先級。
  • 流標號:對於互聯網上特定的一系列數據報如視頻和音頻都是流文件,每個流報文都有個相同的流標號
  • 有效載荷:數據報除首部以外數據的大小
  • 跳數限制:就是IPv4的TTL
  • 源地址:發出數據主機的IP地址
  • 目的地址:接受數據主機的IP地址

和IPv4的對比:

  1. 取消首部長度,首部大小固定為40字節
  2. 取消服務類型,用優先級和流標號替代
  3. 取消可選字段,標識,標志和片偏移等字段,放入到載荷中的擴展首部中
  4. 取消協議字段,改用下一首部
  5. 取消首部校驗和字段,加快路由速度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM