IP協議相關技術
IP旨在讓最終目標主機收到數據包,但是這一過程僅僅依靠IP是無法實現的,必須要有實現解析主機名稱和MAC地址的功能,以及數據包在發送過程中異常情況處理的功能,此外還會涉及IP必不可少的其他功能.
DNS(Domain Name System)
DNS系統與IP協議的關係:
DNS系統中維護一個用來表示組織內部主機名(域名)和IP地址之間對應關係的數據庫.
DNS工作原理:
- 用戶輸入主機名(域名)
- DNS自動檢索那個註冊了的主機名和IP地址的數據庫,迅速定位對應的IP地址
- 返回給用戶主機該IP地址
DNS查詢:
ARP(Address Resolution Protocol)
只要確定了IP地址即可向該目標地址發送IP數據報,然而在底層數據鏈路層,進行實際通信時,需要知道每個IP所對應的MAC地址
ARP協議與IP協議的關係
ARP是一種解決地址問題的協議,以目標IP地址爲線索,用來定位下一個接受數據分包的網絡設備對應的MAC地址,如果目標主機與用戶主機不在同一個數據鏈路上,使用ARP查找下一跳路由器的MAC地址.
ARP協議是如何知道MAC地址的呢?
核心是藉助用戶主機發送ARP請求包和目標主機發送ARP響應包確定MAC地址
假定主機A要往主機B發送IP數據包
- 主機A只知道主機B的IP地址,爲了獲得主機B的MAC地址,主機A通過廣播向同一數據鏈路的所有主機或路由器發送一個ARP請求包(包含了主機A的IP地址,MAC地址,目標主機的IP地址)
- 該請求包會被該鏈路上的所有主機或路由器解析
- 主機B解析到該請求包後得到主機A請求的IP地址與自己的IP地址相同,便將自己的MAC地址塞入ARP響應包並通過單播返回給主機A,同時將主機A的IP地址和MAC地址存入主機B自身的ARP緩存表.
- 主機A接收到主機B發送回來的ARP響應包,得到了主機B的MAC地址,同時將主機B的IP地址與MAC地址存入主機A自身的緩存表中.(注意:緩存數據也是有期限的)
RARP協議
RARP是將ARP反過來,從MAC地址獲取IP地址的一種協議,將打印機服務器等小型嵌入式設備接入到網絡中經常用到,假如將一臺打印機接入到網絡中,插電啓動設備時,打印機就會發送一條"我的MAC地址是****,請告訴我我的IP地址是什麼?"的請求信息,RARP服務器收到這條消息便會返回"MAC地址爲****的設備,你的IP地址是啥啥啥"的響應信息給這個設備.
ICMP(Internet Control Message Protocol)
ICMP協議與IP協議的關係
ICMP協議確認IP包是否成功被髮送出去,通知在發送過程當中IP包被廢棄的原因,改善網絡設置等.
ICMP的消息大致分爲兩類:
- 通知出錯原因的錯誤消息
- 用於診斷的查詢消息
ICMP的通知消息以明文的形式像TCP/UDP一樣通過IP進行傳輸,但是ICMP所承擔的功能並非傳輸層的補充,應該把它考慮爲IP的一部分,收到該ICMP包的主機分解ICMP的首部和數據域可以得知具體發生問題的原因.
DHCP(Dynamic Host Configuration Protocol)
DHCP協議與IP協議的關係
DHCP協議實現了自動分配IP地址,統一管理IP地址分配,讓即插即用變得可能.
DHCP協議工作原理
- DHCP客戶端廣播發送DHCP發現包,爲自己請求一個新IP地址
- DHCP服務器收到該DHCP發現包後,給DHCP客戶端發送了一個DHCP提供包,提供包中包含了一個可用的新IP地址
- DHCP客戶端收到該DHCP提供包後,決定使用這個新IP地址作爲自己的IP地址,於是再次廣播發送DHCP請求包,向DHCP服務器請求使用該IP地址
- DHCP服務器收到該DHCP請求包後,再次向該DHCP客戶端發送了一個DHCP提供包,允許DHCP客戶端使用該IP地址.
NAT(Network Address Translator)
NAT協議與IP協議的關係
NAT協議是用於本地網絡中使用私有地址,在連接互聯網時轉而使用全局IP地址的技術,也就是實現私有地址到全局IP地址的轉換.
NAPT(Network Address Ports Translator)技術
實現了用一個全局IP地址與多個主機的通信(比NAT技術更常用,所以說NAT技術一般指的是NAPT技術)
NAPT原理
主機A的本地IP地址爲192.168.1.2,主機B的本地IP地址爲192.168.1.3,這兩個主機要連接互聯網時,需通過NAT服務器,將IP地址轉換爲NAT服務器的全局IP地址中的一個端口地址,接收數據也是一樣的,先使用NAT服務器的全局IP地址端口進行接受,然後再轉換爲本地IP地址.
IP隧道
IP隧道與IP協議的關係
假如網絡A和網絡C採用IPv6,而夾在中間的網絡B使用IPv4的話,網絡A與C就無法直接進行通信,需要使用IP隧道將網絡A發過來的IPv6包統合爲一個包,然後再追加一個IPv4的首部後轉發給網絡B.
IP隧道是什麼
IP隧道就是在網絡層的首部後面繼續追加網絡首部的通信方法