摘要:網路層介于傳輸層和資料鏈路層之間,其主要作用是實作兩個網路系統之間的資料透明傳送,具體包括路由選擇,擁塞控制和網際互連等,
本文分享自華為云社區《計算機的“網路層”究竟有哪些需要學習的?9個知識點看你是否都了解了》,作者:breakDawn ,
1.IP地址
1.1 分類表示法:
分類表示法已經不常用了,
- A類地址:
格式為
1[7位網路號][24位主機號]
網路號全0指本網路
網路號全1用于環回地址(127.0.0.1)
主機號全0時指本住機所在網路
全1時指本網路所有主機(廣播地址)
因此A類地址實際可選范圍為1.x.x.x ~ 126.x.x.x - B類地址
格式為
10[14位網路號][16位主機號]
網路號不可全0,但可以全1
范圍為128.x.x.x~191.x.x.x - C類地址
格式為
110[21位網路號][8位主機號]
網路號不可全0
范圍為192.x.x.x~223.x.x.x - D類地址(多播地址)
格式為
1110[28位多播地址]
范圍為224.x.x.x~239.x.x.x
因此看到224以上的ip要注意 - E類地址
格式為11110[保留]
用于實驗用,因此看到240以上的認定不是正常節點ip
1.1.1分類表示地址的其他說明
- 網路號全0,但主機號非全0的某個ip就是指本網路的某個主機
- 網路號不為全1,但主機號為1的ip,則指某個網路的廣播地址
- 全0,指本網路的本主機
- 全1,指本網路的廣播地址
- 環回地址,指127.0.0.1,在同一臺主機上進行網路傳輸
- 私有地址,指不會參與路由器轉發的地址,, 只會參與本局域網,發給本局域網的交換機:
A類: 10.0.0.0-10.25.255.255
B類: 172.16.0.0-172.31.0.0
C類: 192.168.0.0-192.168.255.255
1.2 無分類編址CIDR
Classless Inter-Domain Routing 無型別域間選路
- CIDR將路由集中起來,使一個IP地址代表主要骨干提供商服務的幾千個IP地址,從而減輕Internet路由器的負擔,
- 該編址用于子網劃分,子網號和上面提到的網路號是不同的,
- IP地址 ::= {<網路號>, <子網號>, <主機號>}
CIDR有三種編址方式:
- 128.14.35.7/20 , 完整ip加子網位數
- 10.0.0.0/10 -> 10/10, 可省略末尾的0
- 00010100*, 即用星號代替子網后的主機號
對于CIDR編址
子網號的全0和全1沒有特殊含義,但不可設定成全0或者全1,
主機號的全0指本網路, 全1指廣播,(網路號仍然遵從ABCD地址的規則)
- 子網掩碼:
值1的位置指該ip中該位置是網路號和子網號區域
值0的位置指該ip中該位置是主機號區域,
例子:111111100000000…, 那么前面8個1就是網路號+子網號,后面都代表了主機號 - 路由尋址時,一般先比較網路號,再比較子網號,再比較主機,
子網掩碼可以簡化先比網路再比子網的程序,
2 IP資料報文格式
IP報文的首部至少有20個位元組(160位),首部如下:
上面可以看到IP報文的以下限制:
- 首部長度欄位可以看出首部長度最多可以位60位元組,所以任選項最多40位元組
- 報文總長度最大為65535, 但是由于MTU的限制(鏈路層防沖突機制導致的),一般都要做分片, 分片后就會用上分片標識和片偏移了,
Q: IP報文里有什么?可以不按順序或者位元組來講一講
- 首先要知道報文多長, 首部長度+報文長度
- 為了校驗首部,還需要校驗首部和
- 很重要的源ip 目的ip
那么如何確定ip型別?這就需要 ipv版本,來確認是ip4還是ip6, - ip支持分片,那么就需要
分片id、是否是最后分片標記、分片偏移 - 協議型別(icmp、igmp)
- TTL生存
- 其他任選項(40位元組)
3.路由概念
- 路由器可分隔廣播域,指的是不同網路號的地址,路由器不會轉發廣播報文
Hub集線器在同一個沖突域通信無法分割;交換機在同一個廣播域通信,可分割沖突域;路由器實作不同廣播域間通信,可分隔廣播域,
- IP報文在傳輸中不會被改變,但是鏈路層報文的mac地址會不斷變化,
- 當2個主機在不同的子網時,必須要借助路由才能通信
3.1 路由表
假設某個路由器在N1網路,他的路由表如下:
- 特定IP地址的子網掩碼為全1,所以一般都是x.x.x.x/32
- DNS服務器一般會配置在路由表中的特定IP地址
- 未知網路在路由表里的目的網路被寫為0.0.0.0, 如果么有,則就是未設定默認路由
- 路由器不會轉發私有地址,
- 距離指的是跨越路由器的數量,而不是實際長度單位
3.2 路由網路匹配
如果路由表中的目的網路由很多,怎么確定IP和路由表中的目的網路是匹配的?
使用 最長前綴匹配, 即前綴匹配得最多的就是目的網路,
優化演算法可用二叉線索樹來確認最長前綴,
3.3 ARP決議
全稱Address Resolution Protocol,地址決議協議,
從主機發給路由, 或者路由發給路由時,底層還是得封裝一層mac地址然后往下交給交換機,
那么ip和mac地址的對應關系, 是怎么得知的?
答案就是ARP協議
本質就是當mac快取表里沒有ip和mac的對應關系時, 主機或者路由會廣播ARP報文, 對應ip方向的交換機會把報文發送回來,這時候就直到mac地址和ip的對飲關系了,
- arp -a可以檢查ARP告訴快取
- ARP快取有超時時間
- 目的主機不存在時,會反復發送,有個超期期限的存在,
- 主機發送ARP查找自己的Mac地址稱為“免費ARP"
- 發送給某1主機的arp請求被中間路由器接收了,則稱為“ARP代理”, 發送者不管不管你是中間路由還是目的ip主機,只知道這個ip需要發給這個mac,
3.4 RARP逆地址決議協議
由mac地址反取ip,
因為ip不存在,無法直接轉給給路由,所以會比ARP難,
程序:
1)將源設備和目標設備的MAC地址欄位都設為發送者的MAC地址和IP地址,發送主機發送一個本地的RARP廣播,能夠到達網路上的所有設備,在此廣播包中,宣告自己的MAC地址并且請求任何收到此請求的RARP服務器分配一個IP地址;
2)本地網段上的RARP服務器收到此請求后,檢查其RARP串列,查找該MAC地址對應的IP地址;
3)如果存在,RARP服務器就給源主機發送一個回應資料包并將此IP地址提供給對方主機使用;如果不存在,RARP服務器對此不做任何的回應;
4) 源主機收到從RARP服務器的回應資訊,就利用得到的IP地址進行通訊;如果一直沒有收到RARP服務器的回應資訊,表示初始化失敗,
4 ICMP協議
全稱Internet control message protocl,網路控制報文協議
他會包裝在IP的資料報文中,并把首部的協議型別改成ICMP那個數字,
首部總共8個位元組,分別為
2位元組的ICMP型別
2位元組的ICMP報文代碼(類似錯誤碼)
4位元組的校驗和
后面就是資料部分了,
常見的2種用途:
1、發送網路層之間的差錯報告,例如:
- 源點抑制——發送網路擁塞
- 終點不可達——無法找到對應ip交付地點
- 時間超時——報文種的TTL降為0,或者分片一直沒收集完
- 引數錯誤——首部中欄位有錯
- 路由改變(重定向)—— 主機把資料發給了路由器R2,但是路由器R2發現主機自己本來就可以直達了,于是發給主機該訊息,告訴他你要更新路由表了,
差錯報告有以下其他特點:
- ICMP自身出錯時,不會再發ICMP差錯報文
- 如果是報文分配后發生錯誤,則只會發1次,而不會每個分片發一次
- 不針對多播,不針對127.0.0.1、0.0.0.0等特殊的地址發送差錯報文,不可廣播(避免廣播風暴)
2、發送一些詢問報文,例如:
- 回送請求和應答——例如ping命令就是借助ICMP
- 超時報文——traceroute就是用這個,把TTL從1慢慢增加,發好多份,通過TTL為0時的差錯報告,定位跟蹤路上有哪些路由
- 時間戳請求——同步時間
5 DHCP協議
全稱Dynamic Host Configuration Protocol, 動態主機配置協議
當某個局域網內新增了一臺主機,這個主機的ip是怎么生成的呢?這就會用到DHCP協議
主機所在網內會有一臺DCHP服務器,
當新主機加入時,發生如下之事:
- 主機先“廣播”自己,告訴大家“我來了,誰給我一個IP地址”(他一開始不知道DHCP在哪)
- DCHP服務器收到后,會分配一個IP地址,但因為不知道發給誰,所以也只能“廣播”,告訴大家“我這有個ip,剛才誰要的,自己來領一下”
- 主機收到DHCP廣播的報文后,就能知道自己的ip和dhcp服務器位置了,于是給DCHP服務器發送請求,告訴他“我收到了你發來的ip了”
- DCHP收到后,確認了他的資訊,并加入到DHCP本地的資料庫中,后面分配新ip時就會排除掉這個ip了,
有以下幾個注意點:
- 如果有多個主機同時應答了DHCP的廣播, 則會選擇最先到達的做分配,
- 分配的ip是臨時的
DCHP可以認為是基于UDP的應用層協議,但本質是為了尋求新主機的動態ip地址
6.路由表的最優下一跳地址如何計算?
可以理解為 在一個復雜的拓撲圖下, 怎么選擇最優的一個路由做目的地址的下一跳,
有2種方式:
6.1 RIP協議
全稱Routing Information Protocol,路由資訊協議
是一種動態路由資訊協議,
- 路由只會和相鄰的其他路由交換資訊,
- 交換的是路由表的資訊,關鍵在于目的網路和距離
- 之前路由表里知道了表里會存盤 到目的網路的距離即跨越路由數量,那么只要拿到周邊所有路由的距離表, 看下哪個方向最小, 然后把下一跳地址選為最小的那個路由方向即可,
- 使用UDP廣播,把自己的路由報文發給周邊的其他路由,
- 當路徑不可達時,會導致2個路由之間不斷疊加該目的地址的距離,直到16時,會被設定成不可達,
所以RIP本質也是基于UDP的應用層協議,但是目的是為了網路層的最優路由選取,
6.2 OSPF協議
open shortest path first,開放最短路徑優先協議
指路由器里有全網的拓撲結構,使用最短路演算法計算最優路由
因此路由會把自己的連接情況通過OSPF協議發給所有其他路由,以建立拓撲圖,
這個是屬于IP層的協議,不借助UDP,
RIP和OSPF是自治網路系統AS里的選路措施,
AS里的選路措施被稱作IGP(內部網關協議)
1個AS里只會有一種選路措施,
而跨自治系統的協議叫EGP(外部網關協議)
通常使用BGP協議
6.3 BGP協議
Border Gateway Protocol邊界網關協議
- 每個AS都知道自己為了到達網路N,需要經過哪些AS(相當于知道以AS為節點的拓撲圖)
- 每個AS都有一個BGP發言人,會與其他BGP網路之間交換自身的AS拓撲資訊,從而構建全域連通圖
- 使用TCP 179埠作業
Q: RIP協議下路由表什么時候更新?
- 正常情況下,路由器會基于更新計時器每30s將路由表發送給鄰居路由器,而觸發更新是立刻發送路由更新資訊
- 觸發更新就是當檢測到網路拓撲發生變動時,路由器會立即發送一個更新資訊給鄰居路由器,并依次產生觸發更新通知它們的鄰居路由器,此程序就叫觸發更新
Q: 路由中毒是什么?
A:路由中毒是指在路由資訊在路由表中失效時,先將度量值變為無窮大的數,而不是馬上從路由表中刪掉這條路由資訊, 然后再將中毒路由資訊發布出去,當相鄰的路由器收到該中毒路由就可以通過其度量值是16,說明該路由是無效的,
因為RIP協議中的度量值其實就是跳數,而RIP協議的跳數最大是15,大于15的目的地被認為是不可達,所以當其度量值為16,就表示這是一個無效路由,這就是所謂的路由中毒,這個數字在限制了網路大小的同時也防止了一個叫做“記數到無窮大”的問題,
Q: 收到中毒路由的路由器會怎么做?
A:收到中毒路由資訊的相鄰的路由器會發送一個毒性逆轉的資訊,表示已經收到中毒路由資訊,
那么為什么收到中毒路由的路由器為什么要回復一個毒性逆轉的資訊?這是因為如果不回復的話,那么發送中毒路由的路由器就會一直以廣播的形式發送中毒路由,直到相鄰的路由器收到并回復一個毒性逆轉的資訊,
7 多播
UDP的時候會用到多播
7.1 IGMP協議
internet group message protol, 網路組管理協議
負責收集和解釋一個網路中的組成員資訊
IGMP協議應用于路由器
- 某主機加入新的多播組時,發送報文,并轉發多播的關系給其他相鄰主機或者路由
- 會周期性探尋,確認自身這個主機是否還在多播組內
- 無法直到總成員數
- IGMP屬于網路層的協議
7.2 MOSPF多播路由選擇協議
多播開放最短通路優先(Multicast Open Shortest PathFirst,MOSPF)協議是OSPF協議的擴展
使用多播鏈路狀態路由選擇來創建源點基準樹,
這個協議需要一個新的鏈路狀態更新分組,把主機的單播地址和組地址或主機負責的地址聯系起來,這個分組就稱為組成員關系LSA,
此外,這個數可以保存在高速快取中,以便以后有同樣源點/組地址對的分組可以使用它,
多播的其他更詳細概念見鏈接
8 其他網路層概念
8.1 VPN
需要建立專用通道
當專用A試圖向專用B通信時,會先加密,再通過加密隧道發到對方內網,具體報文內容不會和互聯網直接接觸,
8.2 NAT
內外網轉換用的一個東西, 公網ip和內網ip互轉,
8.3 移動IP
ip從子網A變道子網B,
在本網時,按TCP通信
要漫游到外網時, 注冊一個轉交地址
本地代理接收地址,開啟隧道
資料發送到外網
在外網時,使用代理ip發送資料
回到本地時,會注冊并轉交之前的地址
9 常見網路層命令
- ifconfig 可顯示本機的IP地址
- netstat -r可顯示路由表
- tcpdump 可顯示硬體地址
- ping 測驗另一個主機是否可達
- traceroute 利用ICMP跟蹤途徑的所有路由
- route 命令可查看和修改路由表
- gated可查看IGP(內部網關協議)和EGP(外部網關協)
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/520650.html
標籤:其他
上一篇:動作捕捉系統用于軟體機械臂研究
