午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

71張圖詳解IP 地址、IP 路由、分片和重組、三層轉(zhuǎn)發(fā)、ARP、ICMP

 黃爸爸好 2021-03-29
Image
目錄

有小伙伴問:為什么沒有配置 IP 地址就無法上網(wǎng)?IP 協(xié)議又是啥?

這要從 TCP/IP 協(xié)議說起,互聯(lián)網(wǎng)使用的是 TCP/IP 協(xié)議,其中 IP 協(xié)議又是最重要的協(xié)議之一。IP 協(xié)議是基于 IP 地址將數(shù)據(jù)包發(fā)送給目的主機,能夠讓互聯(lián)網(wǎng)上任何兩臺主機進(jìn)行通信。

Image
網(wǎng)絡(luò)層通信

IP 協(xié)議位于 OSI 參考模型的第三層,即網(wǎng)絡(luò)層。

Image
網(wǎng)絡(luò)層

網(wǎng)絡(luò)層的主要作用是實現(xiàn)終端節(jié)點之間的通信。這種終端節(jié)點之間的通信,也叫點對點通信。

Image
IP的作用
  • 主機:配置有 IP 地址,不進(jìn)行路由控制的設(shè)備。

  • 路由器:既有 IP 地址又具有路由控制功能的設(shè)備。

  • 節(jié)點:主機和路由器的統(tǒng)稱。

數(shù)據(jù)如何傳輸?shù)侥康牡兀?/span>

數(shù)據(jù)鏈路層實現(xiàn)兩個直連設(shè)備之間的數(shù)據(jù)傳輸,網(wǎng)絡(luò)層的 IP 協(xié)議實現(xiàn)沒有直連的兩個網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸。

以旅行為例,小美要去一個很遠(yuǎn)的地方旅行,先計劃要乘坐的高鐵、地鐵、公交車,并且購買相應(yīng)車票,再制定一個詳細(xì)行程表,記錄乘車時間。

高鐵票、地鐵票只能在一個區(qū)間內(nèi)移動,就像網(wǎng)絡(luò)上的數(shù)據(jù)鏈路。出發(fā)點就像源 MAC 地址,目的地就像目的 MAC 地址,整個行程表的作用就相當(dāng)于網(wǎng)絡(luò)層,出發(fā)點就像源 IP 地址,目的地就像目的 IP 地址。

Image
小美的旅行

小美如果只有行程表,沒有車票,就無法乘坐交通工具到達(dá)目的地。相反,小美只有車票,不知道坐什么車,在哪里換乘,恐怕也到不了目的地。只有兩者兼?zhèn)?,既有某個區(qū)間的車票又有整個旅行的行程表,才能保證到達(dá)目的地。網(wǎng)絡(luò)中也需要數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層協(xié)同工作,才能實現(xiàn)最終目的地址的通信。

IP 地址的基礎(chǔ)知識

在 TCP/IP 通信中使用 IP 地址識別主機和路由器。IP 地址是邏輯地址,需要手工配置或自動獲取,為了保證正常通信,每個設(shè)備必須配置 IP 地址

Image
IP地址

IP 地址的定義

IP 地址由 32 位二進(jìn)制數(shù)組成。為了方便記錄,將 32 位的 IP 地址分為 4 組,每 8 位為一組,每組以“ . ”隔開,再將每組數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。

Image
IP地址表示方法

二進(jìn)制與十進(jìn)制怎么快速轉(zhuǎn)換?

通過 Windows 系統(tǒng)自帶的計算器,選擇程序員,可實現(xiàn)二進(jìn)制和十進(jìn)制的快速轉(zhuǎn)換。默認(rèn)十進(jìn)制(“ DEC ”)輸入,單擊“ BIN ”切換成二進(jìn)制輸入。同步顯示十六進(jìn)制、十進(jìn)制、八進(jìn)制和二進(jìn)制的數(shù)值。

Image
二進(jìn)制與十進(jìn)制轉(zhuǎn)換

IP 地址一共有多少個?

將 IP 地址的32位二進(jìn)制進(jìn)行計算,得出約 43 億個 IP 地址。

Image
IP地址數(shù)量

使用 Windows 系統(tǒng)自帶計算機,選擇科學(xué)模式,可快速進(jìn)行次方計算。

Image

實際上,網(wǎng)絡(luò)的發(fā)展超乎想象,互聯(lián)網(wǎng)上的設(shè)備遠(yuǎn)超 43 億, 2019 年 11 月 25 日全球的 IPv4 地址已經(jīng)徹底耗盡,但是直到現(xiàn)在大家仍然還在用 IPv4 ,并沒有因為地址沒了而無法上網(wǎng)。是因為除了 IPv6 之外,我們使用 NAT 技術(shù)緩解了地址不足的問題。這篇文章里的 IP 全是指的 IPv4 ,非 IPv6 。

IP 地址的組成

IP 地址由網(wǎng)絡(luò)號(網(wǎng)段地址)和主機號(主機地址)兩部分組成。

Image
IP地址組成

網(wǎng)絡(luò)號是設(shè)備所在區(qū)域的一種標(biāo)識,網(wǎng)絡(luò)號相同的設(shè)備位于同一個網(wǎng)段內(nèi),網(wǎng)絡(luò)號不同的設(shè)備通過路由器實現(xiàn)通信。主機號是在同一個網(wǎng)段中不同設(shè)備的標(biāo)識,不允許同一個網(wǎng)段內(nèi)出現(xiàn)重復(fù)的主機號。

Image
IP地址配置舉例

路由器是根據(jù)目的 IP 地址的網(wǎng)絡(luò)號進(jìn)行路由。

Image
路由器轉(zhuǎn)發(fā)原理

那么 IP 地址哪幾位是網(wǎng)絡(luò)號?哪幾位是主機號?早期是以分類地址區(qū)分,現(xiàn)在是以子網(wǎng)掩碼區(qū)分。

IP 地址的分類

IP 地址分為四類,分別是 A 類、 B 類、 C 類、 D 類(還有一個保留的 E 類)。

Image
分類地址

A 類地址

A 類 IP 地址是首位以“ 0 ”開頭的地址。從第 1 位到第 8 位是它的網(wǎng)絡(luò)號,網(wǎng)絡(luò)號的范圍是 0 ~ 127 。其中 0 和 127 屬于保留地址,減去兩個保留地址,因此有 126 個可用的 A 類地址。

Image
A類地址網(wǎng)絡(luò)號
Image
計算A類地址數(shù)量

后 24 位是主機號,一個 A 類地址的主機地址數(shù)量就是 2 的 24 次方,即 16777216 個主機地址。

Image
A類地址主機號
Image
計算A類主機地址數(shù)量

B 類地址

B 類 IP 地址是前兩位以“ 10 ”開頭的地址。從第 1 位到第 16 位是它的網(wǎng)絡(luò)號,網(wǎng)絡(luò)號的范圍是 128.0 ~ 191.255 。其中 128.0 和 191.255 屬于保留地址,減去兩個保留地址,因此有 16382 個可用的 B 類地址。

Image
B類地址網(wǎng)絡(luò)號
Image
計算B類地址數(shù)量

后 16 位是主機號,一個 B 類地址的主機地址的數(shù)量就是 2 的 16 次方,即 65536 個主機地址。

Image
B類地址主機號

C 類地址

C 類 IP 地址是前三位以“ 110 ”開頭的地址。從第 1 位到第 24 位是它的網(wǎng)絡(luò)號,網(wǎng)絡(luò)號的范圍是 192.0.0 ~ 223.255.255 。其中 192.0.0 和 223.255.255 屬于保留地址,減去兩個保留地址,因此有 2097150 個可用的 C 類地址。

Image
C類地址網(wǎng)絡(luò)號
Image
計算C類地址數(shù)量

后 8 位是主機號,一個 C 類地址的主機地址的數(shù)量就是 2 的 8 次方,即 256 個主機地址。

Image
C類地址主機號

D 類地址

D 類 IP 地址是前四位以“ 1110 ”開頭的地址。從第 1 位到第 32 位是它的網(wǎng)絡(luò)號,網(wǎng)絡(luò)號的范圍是 224.0.0.0 ~ 239.255.255.255 。D 類地址沒有主機號,用于組播。

網(wǎng)段地址和廣播地址

當(dāng)主機號全為 0 時,表示的是網(wǎng)段地址,非主機地址。當(dāng)主機號全為 1 時是廣播地址,也不是主機地址。因此在分配 IP 地址過程中,需要排除這兩個地址。例如一個 C 類地址 192.168.1.0/24 最多只有 254 個可用主機地址,而不是 256 個。

Image
網(wǎng)段地址和廣播地址

廣播地址

IP 地址中的主機號全部為 1 的就是廣播地址,它是向同一個網(wǎng)段中的所有主機發(fā)送數(shù)據(jù)包。例如一個 B 類主機地址 172.20.1.100 的廣播地址是 172.20.255.255 。

Image
廣播地址

IP 組播

組播用于將包發(fā)送給特定組內(nèi)的所有主機。

Image
組播

組播使用 D 類地址。因此 IP 地址前四位是“ 1110 ”開頭的,就是組播地址。剩下的 28 位就是組播的組編號。組播的地址范圍是 224.0.0.0 ~ 239.255.255.255 ,其中 224.0.0.0 ~ 224.0.0.255 既可以在同一個網(wǎng)段內(nèi)實現(xiàn)組播,又可以跨網(wǎng)段給全網(wǎng)所有組員發(fā)送組播包。

Image
組播地址格式

子網(wǎng)掩碼

早期網(wǎng)絡(luò)地址采用固定網(wǎng)絡(luò)位長度的方式,使 IPv4 地址遭到大量浪費。如今網(wǎng)段地址的長度可變,同時也需要一種標(biāo)識來獲取網(wǎng)段地址,以便路由器對數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā),這種識別碼就是子網(wǎng)掩碼。

子網(wǎng)掩碼用 32 位的二進(jìn)制表示, IP 地址的網(wǎng)段地址部分設(shè)置為 1 , IP 地址的主機地址部分設(shè)置為 0 。換句話說, IP 地址有多少位網(wǎng)段地址,子網(wǎng)掩碼就有多少位取 1 ,其余都取 0 。為了方便記錄,每 8 位為一組,以“ . ”隔開,再轉(zhuǎn)換為十進(jìn)制數(shù)。

例如:201.20.100.25 的子網(wǎng)掩碼是 255.255.255.0 ,算出它的網(wǎng)段地址。

Image
子網(wǎng)掩碼

將子網(wǎng)掩碼和 IP 地址進(jìn)行與( AND )運算,可得到這個 IP 地址的網(wǎng)段地址。

Image
與運算

與( AND )運算

IP 地址和子網(wǎng)掩碼的二進(jìn)制數(shù),逐位進(jìn)行計算。只有當(dāng) IP 地址和掩碼都是 1 時,運算結(jié)果為 1 。其余情況計算結(jié)果都為 0 。

Image
AND運算

Windows 系統(tǒng)自帶計算機也可以進(jìn)行二進(jìn)制與運算。

Image
與運算舉例

IP 地址的另一種表示方式是在每個 IP 地址后面追加網(wǎng)絡(luò)號的位數(shù)用“ / ”隔開。例如:201.20.100.25/255.255.255.0 可表示為 201.20.100.25/24 。

CIDR 與 VLSM

解決 IP 地址浪費問題,除了使用子網(wǎng)掩碼,還使用了 CIDR 和 VLSM 技術(shù)。

CIDR ,即無類域間路由,采用任意長度分割 IP 地址的網(wǎng)絡(luò)號和主機號。它有兩個作用:

  • 把多個網(wǎng)段聚合到一起,生成一個更大的網(wǎng)段;

  • 匯總路由表 IP 地址,分擔(dān)路由表壓力。

Image
CIDR應(yīng)用

VLSM ,即可變長子網(wǎng)掩碼,它可以對 A 、 B 、 C 類地址再進(jìn)行子網(wǎng)劃分,以達(dá)到充分利用 IP 地址的目的。

假如一家企業(yè)有 100 臺電腦,按以前的辦法,只能分配一個 C 類地址 222.222.222.0 。但是 VLSM 可以在一個 C 類地址上劃分出多個子網(wǎng)地址,再分配其中一個容納主機數(shù)量與稍大于企業(yè)需求數(shù)量的子網(wǎng)地址給企業(yè),這樣就可以實現(xiàn) IP 地址的合理使用。

  • 計算容納 100 臺電腦的子網(wǎng):使用主機號的位數(shù)計算出子網(wǎng)的主機地址數(shù)量。當(dāng)主機號有 7 位時,有 126 個可用主機地址,可容納 100 臺電腦。

Image
計算子網(wǎng)容量
  • 計算子網(wǎng)地址:當(dāng)主機號有 7 位時,網(wǎng)絡(luò)號有 32 - 7 = 25 位,也就是 222.222.222.0/24 向主機位借了一位作為子網(wǎng)位,那么子網(wǎng)掩碼也就是 255.255.255.128 ??煞峙?nbsp;222.222.222.0/25 使用。

Image
子網(wǎng)地址劃分
  • 222.222.222.0/25子網(wǎng)詳情:

Image

CIDR 和 VLSM 的區(qū)別

CIDR 是主機號向網(wǎng)絡(luò)號借位,目的是把幾個網(wǎng)絡(luò)匯總成一個大的網(wǎng)絡(luò),增加子網(wǎng)主機數(shù)量;

VLSM 是網(wǎng)絡(luò)號向主機號借位,目的是把一個標(biāo)準(zhǔn)的網(wǎng)絡(luò)劃分成幾個子網(wǎng),減少子網(wǎng)主機數(shù)量。

公網(wǎng)地址與私有地址

IP 地址分為公網(wǎng)地址和私有地址。公網(wǎng)地址是在互聯(lián)網(wǎng)上使用的,私有地址是在局域網(wǎng)中使用的。

公網(wǎng)地址由 Internet NIC 負(fù)責(zé)分配,通過它直接訪問互聯(lián)網(wǎng)。

Image
公網(wǎng)地址范圍

私有地址是一段保留的 IP 地址。只在局域網(wǎng)中使用,無法在互聯(lián)網(wǎng)上使用。但是私有地址可以通過 NAT 技術(shù),將私有地址轉(zhuǎn)換為公網(wǎng)地址接入互聯(lián)網(wǎng)。

Image
私有地址范圍

公網(wǎng) IP 地址在互聯(lián)網(wǎng)范圍內(nèi)是唯一的,私有 IP 地址只要在同一個局域網(wǎng)內(nèi)唯一即可。在不同局域網(wǎng)內(nèi)出現(xiàn)相同的私有 IP 不會影響使用。

IP 路由

IP 路由是設(shè)備根據(jù) IP 地址對數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)的操作。當(dāng)一個數(shù)據(jù)包到達(dá)路由器時,路由器根據(jù)數(shù)據(jù)包的目的地址查詢路由表,根據(jù)查詢結(jié)果將數(shù)據(jù)包轉(zhuǎn)發(fā)出去,這個過程就是 IP 路由。

Image
路由控制

路由表

為了將數(shù)據(jù)包發(fā)給目的節(jié)點,所有節(jié)點都維護(hù)著一張路由表。路由表記錄 IP 數(shù)據(jù)在下一跳應(yīng)該發(fā)給哪個路由器。IP 包將根據(jù)這個路由表在各個數(shù)據(jù)鏈路上傳輸。

Image
路由表

路由表的生成方式有兩種:一種是手動設(shè)置,也叫靜態(tài)路由。另一種是路由器之間通過交換信息自動刷新,也叫動態(tài)路由

Image
靜態(tài)路由與動態(tài)路由

下一跳

Hop ,中文叫“跳”。它是指網(wǎng)絡(luò)中的一個區(qū)間。IP 包就是在網(wǎng)絡(luò)中一跳一跳的轉(zhuǎn)發(fā),在每一個區(qū)間內(nèi)決定 IP 包下一跳的路徑。

一跳是指數(shù)據(jù)鏈路中廣播域的區(qū)間,也就是說不經(jīng)過路由器而能直接到達(dá)的相連主機或路由器網(wǎng)卡的一個區(qū)間。

Image
多跳路由

IP 數(shù)據(jù)包就像包裹,而送貨車就像數(shù)據(jù)鏈路。包裹不可能自己移動,必須有送貨車承載轉(zhuǎn)運。而一輛送貨車只能將包裹送到某個區(qū)間范圍內(nèi)。每個不同區(qū)間的包裹將由對應(yīng)的送貨車承載、運輸。IP 的工作原理也是如此。

Image
IP工作原理

路由條目類型

默認(rèn)路由

默認(rèn)路由是指路由表中任何一個地址都能與之匹配的條目。所有數(shù)據(jù)包都可以使用默認(rèn)路由進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。默認(rèn)路由為 0.0.0.0/0 或 default 。

Image
默認(rèn)路由

主機路由

“ IP地址/32 ”被稱為主機路由,它是路由表中指向單個 IP 地址或主機名的路由條目。例如:192.168.153.15/32 就是一條主機路由,表示整個 IP 地址的所有位都將參與路由。

回環(huán)地址

以 127 開頭的 IP 地址都是環(huán)回地址,其所在的回環(huán)接口可以理解為虛擬網(wǎng)卡。使用回環(huán)地址時,數(shù)據(jù)包會直接被主機的 IP 層獲取,而不經(jīng)過鏈路層,也不會流向網(wǎng)絡(luò)。一般用來檢查主機上運行的網(wǎng)絡(luò)服務(wù)是否正常。

路由匯總

路由匯總主要是為了減少路由條目,把可以聚合的路由匯聚為一個大網(wǎng)絡(luò)。

路由表越大,查找路由表所需的內(nèi)存和 CPU 也就越多,時間也會越長,導(dǎo)致轉(zhuǎn)發(fā) IP 數(shù)據(jù)包的性能下降。如果想要搭建大規(guī)模、高性能的網(wǎng)絡(luò),就需要盡可能的路由表的大小。

Image
路由匯總

IP 分片與重組

數(shù)據(jù)鏈路不同, MTU 則不同

每種數(shù)據(jù)鏈路的最大傳輸單元( MTU )不同,網(wǎng)絡(luò)層的 IP 是數(shù)據(jù)鏈路的上一層, IP 通過分片屏蔽數(shù)據(jù)鏈路的差異,實現(xiàn)不同數(shù)據(jù)鏈路互通。從 IP 的上一層看,它完全可以忽略各個數(shù)據(jù)鏈路上的 MTU ,只需要按照源 IP 地址發(fā)送的長度接收數(shù)據(jù)包。

Image
數(shù)據(jù)鏈路MTU表

IP 報文的分片與重組

當(dāng)遇到 IP 數(shù)據(jù)包大于數(shù)據(jù)鏈路 MTU 時,往往無法直接發(fā)送出去,主機或路由器就會對 IP 數(shù)據(jù)包進(jìn)行分片處理。

經(jīng)過分片后的 IP 數(shù)據(jù),只會在目標(biāo)主機上進(jìn)行重組,中途經(jīng)過路由器時不會進(jìn)行重組。

Image
IP報文的分片與重組

路徑MTU發(fā)現(xiàn)

分片機制有兩點不足:

  • 加重路由器的處理性能;

  • 在分片傳輸中,一旦某個分片丟失,會造成整個 IP 數(shù)據(jù)包作廢。

為了解決這個問題,要使用路徑 MTU 發(fā)現(xiàn)( Path MTU Discovery )技術(shù)。路徑 MTU 是指從發(fā)送端主機到接收端主機之間不需要分片時最大 MTU 值。即路徑中存在的所有數(shù)據(jù)鏈路中最小的 MTU 。路徑 MTU 發(fā)現(xiàn)是從發(fā)送主機按照路徑 MTU 的值將數(shù)據(jù)報分片后進(jìn)行發(fā)送,避免在中途的路由器上進(jìn)行分片處理。

Image
路徑MTU發(fā)現(xiàn)

路徑 MTU 發(fā)現(xiàn)的工作原理如下:

  1. 發(fā)送端主機發(fā)送 IP 數(shù)據(jù)包時將其頭部的分片禁止標(biāo)志位設(shè)置為 1 。根據(jù)這個標(biāo)志位,途中的路由器即使收到需要分片的大包,也不會分片,而是直接將包丟棄。之后通過一個 ICMP 不可達(dá)消息將數(shù)據(jù)鏈路上 MTU 值給發(fā)送端主機。

  2. 發(fā)送端主機根據(jù)收到的 MTU 值對數(shù)據(jù)包進(jìn)行分片處理,再把 IP 數(shù)據(jù)包發(fā)送給相同的目的主機。如此重復(fù),直到數(shù)據(jù)包被發(fā)送到目標(biāo)主機為止沒有再收到任何 ICMP ,就認(rèn)為最后一次 ICMP 所通知的 MTU 即是一個合適的 MTU 值。MTU 值至少可以緩存約 10 分鐘,在這 10 分鐘內(nèi)使用剛得到的 MTU ,過了 10 分鐘后就重新做一次路徑 MTU 發(fā)現(xiàn)。

上面的例子是 UDP ,如果是在 TCP 的情況下,根據(jù)路徑 MTU 的大小計算出最大段長度( MSS ),然后再根據(jù)這些信息進(jìn)行數(shù)據(jù)包的發(fā)送。因此,在 TCP 中如果使用路徑 MTU 發(fā)現(xiàn), IP 層則不會再分片。

路由器三層轉(zhuǎn)發(fā)原理

路由器有多個端口,分別連接不同的數(shù)據(jù)鏈路。它通過識別目的 IP 地址的網(wǎng)絡(luò)號,再根據(jù)路由表進(jìn)行轉(zhuǎn)發(fā),路由表中有匹配的路由條目才會轉(zhuǎn)發(fā),無匹配的路由條目則直接丟棄。路由條目既可以手動設(shè)置靜態(tài)路由,也可以通過路由協(xié)議自動生成動態(tài)路由。

路由器如何進(jìn)行三層轉(zhuǎn)發(fā)?

當(dāng)一臺路由器收到一個數(shù)據(jù)包時,會執(zhí)行如下步驟:

  1. 對數(shù)據(jù)包進(jìn)行解封裝

    通過解封裝,查看網(wǎng)絡(luò)層頭部信息的目的 IP 地址

  2. 在路由表中查找匹配的路由條目。

    查找匹配的路由條目,就需要將數(shù)據(jù)包的目的 IP 地址與各個路由條目的網(wǎng)段地址先進(jìn)行二進(jìn)制與( AND )運算,再將運算結(jié)果與路由條目的網(wǎng)段地址進(jìn)行比較,若一致則該條目與目的 IP 地址相匹配。最后,與所有路由條目完成運算和比較,可得到一條或多條相匹配的路由條目。也可能沒有匹配的路由條目,那么丟棄數(shù)據(jù)包。

    Image
    查找路由條目流程圖
  3. 從多個匹配項中選擇掩碼最長的路由條目。

    如果路由表中有多條路由條目都匹配數(shù)據(jù)包的目的 IP 地址,則路由器會選擇掩碼長度最長的路由條目,這種匹配方式稱為最長匹配原則

    例如:10.1.3.10 的網(wǎng)絡(luò)地址與 10.1.3.0/16 和 10.1.3.0/24 兩項都匹配,這時應(yīng)該選擇匹配度最長的 10.1.3.0/24 。

    Image
    最長匹配原則
  4. 將數(shù)據(jù)包按照相應(yīng)路由條目進(jìn)行轉(zhuǎn)發(fā)。

    路由條目中包含下一跳出接口。當(dāng)路由器找到相應(yīng)的路由條目后,它就會根據(jù)對應(yīng)的下一跳和出接口,將數(shù)據(jù)包從出接口發(fā)送數(shù)據(jù)給下一跳設(shè)備。

Image
路由轉(zhuǎn)發(fā)

ARP

只要確定了 IP 地址,就可以向這個目標(biāo)地址發(fā)送 IP 數(shù)據(jù)報文。但是在進(jìn)行實際通信時,還要知道每個 IP 地址所對應(yīng)的 MAC 地址。

地址解析協(xié)議,簡稱 ARP 協(xié)議。是根據(jù)目的設(shè)備的 IP 地址來查詢對應(yīng) MAC 地址的協(xié)議。

ARP 的工作原理

當(dāng)主機 A 向同一個網(wǎng)段內(nèi)的主機 C 發(fā)送數(shù)據(jù),但是不知道主機 C 的 MAC 地址。

Image
ARP工作原理
  1. ARP 請求:主機 A 以主機 C 的 IP 地址為目的 IP 地址,以廣播 MAC 地址為目的 MAC 地址,在同網(wǎng)段內(nèi)發(fā)送這個廣播報文,這個報文就叫 ARP 請求報文。

    二層交換機不查看 IP 地址,根據(jù)目的 MAC 地址將報文除接收端口外的所有端口發(fā)送。

    Image
    ARP請求報文
  2. ARP 響應(yīng):主機 C 發(fā)現(xiàn)目的 IP 地址是自己的 IP 地址,于是主機 C 以自己 MAC 地址和 IP 地址作為源 MAC 地址和源 IP 地址,以主機 A 的 MAC 地址和 IP 地址作為目的 MAC 地址和目的 IP 地址,發(fā)送響應(yīng)報文給主機 A ,這個報文就叫 ARP 響應(yīng)報文。其它主機收到主機 A 的 ARP 請求報文,因為目的 IP 地址不是自己的 IP 地址,因此不會進(jìn)行響應(yīng)。

    當(dāng)主機 A 在發(fā)送 ARP 廣播請求報文時,二層交換機已經(jīng)有主機 A 的 MAC 地址表條目。當(dāng)收到主機 C 發(fā)送的單播 ARP 響應(yīng)報文時,二層交換機將報文從相應(yīng)端口發(fā)送出去。并將主機 C 的 MAC 地址和對應(yīng)端口記錄到 MAC 地址表中。

    Image
    ARP響應(yīng)報文
  3. 更新 ARP 緩存表:主機 A 收到 ARP 響應(yīng)報文后,將主機 C 的 IP 地址和 MAC 地址記錄到 ARP 緩存表中。下次再向主機 C 發(fā)送數(shù)據(jù)時,直接將緩存的目的 MAC 地址進(jìn)行封裝。

    Image
    更新ARP緩存表

當(dāng)主機 A 向不同網(wǎng)段的主機 C 發(fā)送數(shù)據(jù),但是不知道主機 C 的 MAC 地址。

Image
ARP代理
  1. 主機 A 使用主機 C 的 IP 地址查詢 ARP ,ARP 發(fā)現(xiàn)主機 C 不在同一個網(wǎng)段,需要通過默認(rèn)網(wǎng)關(guān)(即默認(rèn)路由的下一跳地址),但是沒有網(wǎng)關(guān) MAC 地址;

    Image
    默認(rèn)網(wǎng)關(guān)
  2. 主機 A 先將發(fā)送給主機 C 的數(shù)據(jù)放入緩存中,然后發(fā)送 ARP 請求報文,主機 A 以網(wǎng)關(guān) IP 地址為目的 IP 地址發(fā)送 ARP 廣播請求報文;

    Image
    網(wǎng)關(guān)ARP請求報文
  3. 路由器收到 ARP 廣播請求報文后,將主機 A 的 MAC 地址和對應(yīng)端口添加到自己的 MAC 表中,然后查看目的 IP 地址發(fā)現(xiàn)是請求自己的 MAC 地址,于是單播發(fā)送 ARP 響應(yīng)報文;

    Image
    網(wǎng)關(guān)ARP響應(yīng)報文
  4. 主機 A 收到 ARP 響應(yīng)報文后,將發(fā)送給主機 C 的數(shù)據(jù)封裝網(wǎng)關(guān) MAC 地址為目的 MAC 地址進(jìn)行發(fā)送;

    Image
    主機A向主機C發(fā)數(shù)據(jù)
  5. 路由器收到報文后,查看目的 IP 地址,是發(fā)送給主機 C 的,于是查詢路由表從相應(yīng)端口發(fā)送數(shù)據(jù)。由于沒有主機 C 的 MAC 地址,路由器發(fā)送 ARP 請求報文,源 MAC 地址和源 IP 地址替換為發(fā)送端口的MAC 地址和 IP 地址;

    Image
    主機C的ARP請求報文
  6. 主機 C 收到 ARP 請求報文后,添加路由器的端口和 MAC 地址到 MAC 地址表,單播發(fā)送 ARP 響應(yīng)報文;

    Image
    主機C的ARP響應(yīng)報文
  7. 路由器收到主機 C 的 MAC 地址后,將其添加到 MAC 地址表中。將主機 A 發(fā)送給主機 C 的報文重新封裝,以自己的 MAC 地址為源 MAC 地址,以主機 C 的 MAC 地址為目的 MAC 地址,發(fā)送給主機 C ;

    Image
    ARP代理發(fā)送數(shù)據(jù)
  8. 主機 C 收到主機 A 發(fā)送的數(shù)據(jù),發(fā)送過程結(jié)束。

當(dāng)主機 C 向主機 A 發(fā)送回復(fù)報文時,同主機 A 向主機 C 發(fā)送數(shù)據(jù)的步驟一致。

ARP 代理

如果 ARP 請求是從一個網(wǎng)絡(luò)的主機發(fā)往同一網(wǎng)段卻不在同一物理網(wǎng)絡(luò)上的另一臺主機,那么連接它們的具有代理 ARP 功能的設(shè)備就可以回答該請求,這個過程稱作代理 ARP 。

代理 ARP 功能屏蔽了分離的物理網(wǎng)絡(luò),讓用戶使用起來,跟在同一個物理網(wǎng)絡(luò)上一樣。

免費 ARP

免費 ARP 是一種特殊的 ARP 請求,它并非通過 IP 找到對應(yīng)的 MAC 地址,而是當(dāng)主機啟動的時候,發(fā)送一個免費 ARP 請求,即請求自己的 IP 地址的 MAC 地址。

與普通 ARP 請求報文的區(qū)別在于報文中的目標(biāo) IP 地址。普通 ARP 報文中的目標(biāo) IP 地址是其它主機的 IP 地址;而免費 ARP 的請求報文中,目標(biāo) IP 地址是自己的 IP 地址。

Image
免費ARP

免費 ARP 的作用:

  • 起到一個宣告作用。它以廣播的形式將數(shù)據(jù)包發(fā)送出去,不需要得到回應(yīng),只為了告訴其它主機自己的 IP 地址和 MAC 地址。

  • 可用于檢測 IP 地址沖突。當(dāng)一臺主機發(fā)送了免費 ARP 請求報文后,如果收到了 ARP 響應(yīng)報文,則說明網(wǎng)絡(luò)內(nèi)已經(jīng)存在使用該 IP 地址的主機。

  • 可用于更新其它主機的 ARP 緩存表。如果該主機更換了網(wǎng)卡,而其它主機的 ARP 緩存表仍然保留著原來的 MAC 地址。這時,通過免費的 ARP 數(shù)據(jù)包,更新其它主機的 ARP 緩存表。

ICMP

IP 提供盡力而為的服務(wù),指為了把數(shù)據(jù)包發(fā)送到目的地址盡最大努力。它并不做對端目的主機是否收到數(shù)據(jù)包的驗證,無法保證服務(wù)質(zhì)量。

ICMP(互聯(lián)網(wǎng)控制消息協(xié)議)是提供這類功能的一種協(xié)議。ICMP 的主要功能包括,確認(rèn) IP 包是否成功送達(dá)目的地址,通知發(fā)送過程中 IP 包被丟棄的原因。

ICMP 報文像 TCP/UDP 一樣通過 IP 進(jìn)行傳輸,但是 ICMP 的功能不是傳輸層的補充,應(yīng)該把它當(dāng)做網(wǎng)絡(luò)層協(xié)議。

ICMP 頭部封裝字段如下圖。

Image
ICMP頭部封裝格式

通過類型字段和編碼字段的取值判斷這個 ICMP 消息的類型。常見的 ICMP 消息所對應(yīng)的類型和編碼值如下圖。

Image
常見ICMP消息類型

從功能上,ICMP 的消息分為兩類:一類是通知出錯原因的錯誤消息,另一類是用于診斷的查詢消息。

Image
ICMP消息類型

ping

我們常用的 ping 工具就是通過 ICMP 消息測試網(wǎng)絡(luò)層連通性的。源主機發(fā)出 Echo request 消息,目的主機回應(yīng) Echo reply 消息,則兩臺主機間的網(wǎng)絡(luò)層通信正常。也可以通過 ping 命令來判斷目標(biāo)主機是否啟用。

Image
ping

附錄

IPv4 頭部

IP 提供最簡單的服務(wù):實現(xiàn)從源到目的的數(shù)據(jù)轉(zhuǎn)發(fā)。不會在傳輸數(shù)據(jù)前先與接收方建立連接,也不保證傳輸?shù)目煽啃?,它只提供盡力而為的服務(wù)。

IP 通信時傳輸?shù)氖?IP 報文, IP 報文由 IP 頭部和數(shù)據(jù)兩部分組成。IP 頭部包含控制報文轉(zhuǎn)發(fā)的必要信息。通過 IP 頭部的結(jié)構(gòu),可以對 IP 的功能有一個詳細(xì)的了解。

Image
IP報文格式

什么是字節(jié)?什么是比特?

比特,英文名 bit ,也叫。二進(jìn)制中最小單位,一個比特的值要么是 0 要么是 1 。

字節(jié),英文名 Byte 。一個字節(jié)由八個比特構(gòu)成。

  • 版本( Version )

    字段長度為 4 比特,表示 IP 的版本號。IPv4 的版本號是 4 ,所以這個字段的值也是 4 。常見的版本號有 IPv4 和 IPv6 。

  • 頭部長度( IHL:Internet Header Length )

    字段長度為 4 比特,表示 IP 頭部大小,單位是 4 字節(jié)( 32 比特)。沒有可選項的 IP 包,頭部長度為 5 ,即 20 字節(jié)( 4 × 5 = 20 )。

  • 區(qū)分服務(wù)( TOS:Type Of Service )

    字段長度為 8 比特,用來說明數(shù)據(jù)是要加速傳輸還是精確傳輸,以及數(shù)據(jù)在傳輸過程中是否遇到了擁塞。

  • 總長度( Total Length )

    字段長度為 16 比特,表示 IP 頭部和數(shù)據(jù)加起來的總字節(jié)數(shù)。IP 包的最大長度為 65535 字節(jié)。

  • 標(biāo)識( ID:Identification )

    字段長度為 16 比特,用于分片重組。同一個分片的標(biāo)識值相同,不同分片的標(biāo)識值不同。通常,每發(fā)送一個 IP 包,它的值也逐漸遞增。另外,即使 ID 相同,如果目標(biāo)地址、源地址或協(xié)議不同的話,也會被認(rèn)為是不同的分片。

  • 標(biāo)志( Flags )

    字段長度為 3 比特,表示分片信息。每比特的具體含義如下表。

    Image
    標(biāo)志位含義
  • 分片偏移( FO:Fragment Offset )

    字段長度為 13 比特,表示分片在整個數(shù)據(jù)包中的位置。作用是告訴重組分片的設(shè)備,應(yīng)該按照什么樣的順序重組數(shù)據(jù)包。

  • 生存時間( TTL:Time To Live )

    字段長度為 8 比特,表示數(shù)據(jù)包可以經(jīng)過的中轉(zhuǎn)路由器數(shù)量。每經(jīng)過一個路由器, TTL 會減少 1 ,直到變成 0 則丟棄改包,避免數(shù)據(jù)包在網(wǎng)絡(luò)中無限傳遞。

  • 協(xié)議( Protocol )

    字段長度為 8 比特,表示 IP 上一層所使用的協(xié)議。常見的 IP 上層協(xié)議有 TCP 和 UDP 。

    Image
    上層協(xié)議編號
  • 頭部校驗和( Header Checksum )

    字段長度為 16 比特,用來校驗數(shù)據(jù)包的頭部是否被破壞。設(shè)備會丟棄校驗失敗的數(shù)據(jù)包。IPv6 以取消頭部校驗和字段,通過上層的 TCP 或 UDP 校驗協(xié)議是否正確。

  • 源地址( Source Address )

    字段長度為 32 比特( 4 字節(jié)),表示發(fā)送端 IP 地址。

  • 目的地址( Destination Address )

    字段長度為 32 比特( 4 字節(jié)),表示接收端 IP 地址。

  • 可選項( Options )

    這個字段很少使用,在 IPv6 協(xié)議中已經(jīng)取消。

  • 填充( Padding )

    在有可選項的情況下, 頭部長度不是 32 比特的整數(shù)倍時,通過向字段填充 0 ,調(diào)整為 32 比特的整數(shù)倍。

  • 數(shù)據(jù)( Data )

    IP 數(shù)據(jù)字段,用于存放數(shù)據(jù)。把 IP 上一層協(xié)議的頭部也作為數(shù)據(jù)進(jìn)行處理。


參考資料:

IP 基礎(chǔ)知識“全家桶”,45 張圖一套帶走 - 小林coding

TCP/IP詳解 卷1:協(xié)議 - W·Richard Stevens

網(wǎng)絡(luò)基礎(chǔ) - 田果

圖解TCP/IP - 竹下隆史

end


Image

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多