IP地址和MAC地址
在 TCP/IP 的架構下,所有想上網的電腦,不論是用何種方式連上網路,都必須要有一個唯一的 IP-address,事實上IP地址是主機硬體地址的一種抽象,簡單的說,MAC地址是物理地址,IP地址是邏輯地址,
| - | - |
|---|---|
| MAC地址 | 物理地址 |
| IP地址 | 邏輯地址 |
什么是虛擬IP
虛擬IP地址(VIP) 是一個不與特定計算機或一個計算機中的網路介面卡(NIC)相連的IP地址,資料包被發送到這個VIP地址,但是所有的資料還是經過真實的網路介面,VIPs大部分用于連接冗余;一個VIP地址也可能在一臺計算機或NIC發生故障時可用,交由另一個可選計算機或NIC回應連接,虛擬IP地址的例子如:一個Loopback(無電路IP地址)作為不與在主機或路由器中任何一個特定介面(或電路)相關的IP地址,
虛擬IP就是一個未分配給真實主機的IP,也就是說對外提供服務器的主機除了有一個真實IP外還有一個虛IP,使用這兩個IP中的任意一個都可以連接到這臺主機,
- MAC地址 00:21:5A:DB:68:E8
- 真實IP 192.168.1.217
- 虛擬IP 192.168.1.219
虛擬IP可以用來做什么?可以解決什么問題?
一般可以用來做HA(High Availability),比如資料庫服務器的URL可以使用一個虛擬IP,當主服務器發生故障無法對外提供服務時,動態將這個虛IP切換到備用服務器,即實作服務器熱備,故障自動切換,
1、客戶端訪問資料庫虛擬IP
2、通過ARP快取,找到對應的MAC地址
3、訪問真實服務器
1、真實服務器A宕機
2、真實服務器B沒有收到真實服務器A的心跳包
3、真實服務器B將虛擬IP系結到自己的MAC地址,并發送這個ARP包給路由器
4、路由器接收到后更新ARP快取
5、接著有請求虛擬IP的請求過來,都會被轉發到真實服務器B
什么是ARP協議
地址決議協議(英語:Address Resolution Protocol,縮寫:ARP)是一個通過決議網路層地址來找尋資料鏈路層地址的網路傳輸協議,它在IPv4中極其重要,
ARP是通過網路地址來定位MAC地址,
在以太網協議中規定,同一局域網中的一臺主機要和另一臺主機進行直接通信,必須要知道目標主機的MAC地址,而在TCP/IP協議中,網路層和傳輸層只關心目標主機的IP地址,這就導致在以太網中使用IP協議時,資料鏈路層的以太網協議接到上層IP協議提供的資料中,只包含目的主機的IP地址,于是需要一種方法,根據目的主機的IP地址,獲得其MAC地址,這就是ARP協議要做的事情,所謂地址決議(address resolution)就是主機在發送幀前將目標IP地址轉換成目標MAC地址的程序,
另外,當發送主機和目的主機不在同一個局域網中時,即便知道對方的MAC地址,兩者也不能直接通信,必須經過路由轉發才可以,所以此時,發送主機通過ARP協議獲得的將不是目的主機的真實MAC地址,而是一臺可以通往局域網外的路由器的MAC地址,于是此后發送主機發往目的主機的所有幀,都將發往該路由器,通過它向外發送,這種情況稱為委托ARP或ARP代理(ARP Proxy),
在點對點鏈路中不使用ARP,實際上在點對點網路中也不使用MAC地址,因為在此類網路中分別已經獲取了對端的IP地址,
在每臺安裝有TCP/IP協議的電腦或路由器里都有一個ARP快取表,表里的IP地址與MAC地址是一對應的,
| 主機名稱 | IP地址 | MAC地址 |
|---|---|---|
| A | 192.168.38.10 | 00-AA-00-62-D2-02 |
| B | 192.168.38.11 | 00-BB-00-62-C2-02 |
| C | 192.168.38.12 | 00-CC-00-62-C2-02 |
| D | 192.168.38.13 | 00-DD-00-62-C2-02 |
| E | 192.168.38.14 | 00-EE-00-62-C2-02 |
| ... | ... | ... |
ARP協議作業原理
以主機A(192.168.38.10)向主機B(192.168.38.11)發送資料為例,
1.當發送資料時,主機A會在自己的ARP快取表中尋找是否有目標IP地址,如果找到就知道目標MAC地址為(00-BB-00-62-C2-02),直接把目標MAC地址寫入幀里面發送就可,
2.如果在ARP快取表中沒有找到相對應的IP地址,主機A就會在網路上發送一個廣播(ARP request),目標MAC地址是“FF.FF.FF.FF.FF.FF”,這表示向同一網段內的所有主機發出這樣的詢問:“192.168.38.11的MAC地址是什么?”
3.網路上其他主機并不回應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應(ARP response):“192.168.38.11的MAC地址是00-BB-00-62-C2-02”,此回應以單播方式,這樣,主機A就知道主機B的MAC地址,它就可以向主機B發送資訊,同時它還更新自己的ARP高速快取(ARP cache),下次再向主機B發送資訊時,直接從ARP快取表里查找就可,
ARP快取表采用老化機制,在一段時間內如果表中的某一行沒有使用,就會被洗掉,這樣可減少快取表的長度,加快查詢速度,
虛擬IP原理
虛擬IP的實作主要是靠 TCP/IP 的 ARP 協議,
因為IP地址只是一個邏輯地址,在以太網中 MAC 地址才是真正用來進行資料傳輸的物理地址,
以太網中的主機發送資料時會先從本地ARP快取中查詢目標 IP 對應的 MAC 地址,會向這個 MAC 地址發送資料,
作業系統或路由器會自動維護這個快取,
在Linux下可以使用arp命令操作ARP高速快取,
比如下面這個 ARP 快取示例:
(192.168.1.219) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0
其中,192.168.1.217、192.168.1.218 是兩臺真實的電腦,192.168.1.217 為對外提供資料庫服務的主機,192.168.1.218 為熱備的機器,192.168.1.219 為虛IP,注意219、217的 MAC 地址是相同的,
當主服務器217一段時間沒有發送HeartBeat資料包給備份服務器218,備份服務器218規定時間內沒有收到217的HeartBeat資料包,(啰嗦一下)
這時備份服務器218 認為217 宕機,備份服務器218后會向網路發送一個 ARP 資料包,讓路由器修改路由表,告訴所有主機 192.168.1.219 這個IP對應的MAC地址是 00:21:5A:DB:7F:C2,這樣所有發送到 219 的資料包都會發送到 MAC 地址為 00:21:5A:DB:7F:C2 的機器,也就是 218 的機器,
配置和洗掉虛擬IP
假如主機有一個網卡 eth1,其對應一個IP為 192.168.1.217,現對其設定一個虛擬IP 192.168.1.219:
ifconfig eth1:1 192.168.1.219 netmask 255.255.255.0
洗掉該虛擬IP:
ip addr del 192.168.1.219 dev eth1
不過在網路運維中,更常見的是使用 keepalived 配置虛擬ip(vip)實作雙機熱備以及自動切換主備
如何查看本地作業系統上的ARP快取
MacOS
arp -nla

Linux
arp -nv
Windows
arp -a
總結
虛擬IP是未分配給真實主機的IP,是IP的一種,
結合ARP協議、心跳檢測機制、廣播ARP資料包,修改ARP快取中IP和MAC地址的對應關系,實作IP漂移,服務器自動切換
參考
- 虛擬IP和IP漂移
- 虛擬IP原理及使用
- ARP協議
- ARP
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/178058.html
標籤:其他
上一篇:MATLABR2016b安裝時出現這種錯誤,怎么解決呀?
下一篇:什么是VIP?什么是IP漂移?
