本篇繼續(xù)介紹IP協(xié)議相關的內(nèi)容,主要介紹IP的輔助技術,包括DNS、ARP、ICMP、ICMPv6、DHCP、NAT等。
DNS
- DNS的產(chǎn)生:TCP/IP網(wǎng)絡中要求每一個互連的計算機都具有其唯一的IP地址,并基于這個IP地址進行通信,然而,我們平時需要訪問網(wǎng)站(比如谷歌)的時候,輸入的是類似于www.google.com的網(wǎng)址,而不是直接輸入一個IP地址(當然,你如果記得IP的話,也可以直接輸入IP)。DNS就是將網(wǎng)址轉(zhuǎn)換成具體的IP地址的。
互聯(lián)網(wǎng)最初給每一臺計計算機添加一個叫主機識別碼的東西,即為每臺計算機賦以唯一的主機名,在通信時直接使用主機名稱而不需要輸入IP。為此,系統(tǒng)必須通過一個hosts的數(shù)據(jù)庫文件,自動將主機名轉(zhuǎn)成具體的IP地址。隨著網(wǎng)絡規(guī)模的不斷擴大,接入的計算機個數(shù)不斷增加,這種處理方式就變得不可行。在此背景下,就產(chǎn)生了一個可以有效管理主機名和IP地址之間對應關系的系統(tǒng),這就是DNS系統(tǒng)。在這個系統(tǒng)中,主機的管理機構可以對數(shù)據(jù)進行變更和設定。
- 域名:理解DNS規(guī)范,就必須了解什么是域名。域名是指為了識別主機名稱和組織機構名稱的一種具有分層的名稱。例如,kusa.ac,jp,kusa表示某大學的域名,ac表示高等教育的相關機構,最后的jp表示日本,在使用域名的時候,可以在每個主機名后面追加上組織機構的域名。DNS的分層結構如下圖所示。
- 域名服務器:域名服務器是指管理域名的主機和相應的軟件,他可以管理所在分層的域的相關信息。各個域的分層上都設有各自的域名服務器。各層域名服務器都了解該層以下分層中所有域名服務器的IP地址,因此,他們從根域名服務器開始呈樹狀結構相互連接。所有域名服務器都了解根域名服務器的IP地址。所以若從根開始按照順序追蹤,可以訪問世界上所有域名服務器的地址。
- DNS查詢:如下圖所示,解析器向域名服務器進行查詢,接收這個查詢請求的域名服務器首先會在自己的數(shù)據(jù)庫進行查詢,如果有該域名所對應的IP地址則返回,沒有則域名服務器再向上一層根域名服務器進行查詢。因此,如圖所示,從根開始對這棵樹按照順序進行遍歷,直到找到指定的域名服務器,并由這個域名服務器返回想要的數(shù)據(jù)。解析器和域名服務器會將最新了解到的信息暫時保存在緩存里面。
ARP
在數(shù)據(jù)鏈路通信時,有必要了解買個IP地址對應的MAC地址。ARP就是解決地址問題的協(xié)議。以目標IP地址為線索,用來定位下一個應該接收數(shù)據(jù)分包的網(wǎng)絡設備對應的MAC地址。如果目標主機不再同一個鏈路上時,可以通過ARP查找下一跳路由器的MAC地址。ARP只適用于IPv4,IPv6中使用ICMPv6代替ARP發(fā)送鄰居探索消息。
- ARP工作機制:ARP是借助ARP請求與ARP響應兩種類型的包確定MAC地址的。如下圖所示,主機A向主機B發(fā)送IP包,主機A為了獲得主機B的MAC地址,通過廣播發(fā)送一個ARP請求包,這個包中包含了想要了解其MAC地址的主機IP地址,ARP請求包會被同一鏈路上所有的主機或路由器進行解析。如果ARP請求包中的目標IP地址與自己的IP地址一致,那么這個節(jié)點就將自己的MAC地址塞入ARP響應包返回給主機A。
- RARP:是從ARP反過來,從MAC地址定位IP地址的一種協(xié)議。例如,將打印機服務器等小型嵌入式設備接入到網(wǎng)絡時用到。
ICMP
- ICMP主要功能:確認IP包是否成功送達目標地址,通知在發(fā)送過程當中IP包被廢棄的具體原因,改善網(wǎng)絡設置等。在IP通信中,如果某個IP包因為某種原因未能到達目標地址,那么這個具體的原因?qū)⒂蒊CMP負責通知。ICMP的消息大致分為兩類:一類是通知出錯原因的錯誤消息,一類是用于診斷的查詢消息。
- 主要的ICMP消息:
- ICMP目標不可達消息:IP路由器無法將IP數(shù)據(jù)包發(fā)送給目標地址時,會給發(fā)送端主機返回一個目標不可達的ICMP消息,并在這個消息中顯示不可達的具體原因,包括主機不可達,MTU探索等。
- ICMP重定向消息:如果路由器發(fā)現(xiàn)發(fā)送端主機使用了次優(yōu)的路徑發(fā)送數(shù)據(jù),那么它會返回一個ICMP重定向的消息給主機,這個消息中包含了最合適的路由信息和源數(shù)據(jù)。
- ICMP超時消息:IP包中有一個TTL(生命周期),他的值隨著每經(jīng)過一次路由器就會減一,直到減到0時該IP包就會被丟棄,此時,IP路由器將會發(fā)生一個ICMP超時的消息給發(fā)送端主機,并通知該包已被丟棄。
- ICMP回送消息:用于通信主機和路由器之間,判斷所發(fā)送的數(shù)據(jù)包是否已經(jīng)成功到達對端的一種消息,可以向?qū)Χ酥鳈C發(fā)送回送請求的消息,也可以接收對端主機發(fā)送回來的回送應答信息。網(wǎng)絡上的ping命令就是利用這個消息使實現(xiàn)的。
-ICMPv6:在IPv6中,從IP地址定位MAC的協(xié)議從ARP換成ICMP的鄰居探索消息。
DHCP
DHCP是為了實現(xiàn)自動設置IP地址、統(tǒng)一管理ID地址分配的功能的。DHCP的工作機制如下圖所示。為了檢查所要分配的IP地址是否可用,DCHP服務器和DHCP客戶端必須具有以下功能:
- DCHP服務器:在分配IP地址之前發(fā)送ICMP回送請求包,確認沒有返回應答;
- DHCP客戶端:針對從DHCP那里獲得的IP地址發(fā)送ARP請求包,確認沒有返回應答。
NAT
NAT是用于在本地網(wǎng)絡中使用私有地址,在連接互聯(lián)網(wǎng)時轉(zhuǎn)而使用全局IP地址的技術。除了轉(zhuǎn)換IP地址外,還出現(xiàn)了可以轉(zhuǎn)換TCP、UDP端口號的NAPT技術,由此可以實現(xiàn)用一個全局IP地址與多個主機的通信。NAT實際上是為正在面臨地址枯竭的IPv4而開發(fā)的技術。
IP隧道
一般情況下,緊接著IP首部的是TCP或者UDP的首部,然而,現(xiàn)在應用當中,會出現(xiàn)IP首部的后面還是IP首部或者IP首部的后面是IPv6的首部的情況,這種在網(wǎng)絡層的首部后面追加網(wǎng)絡層首部的通信方法就叫做IP隧道。比如:A網(wǎng)絡時IPv6,B網(wǎng)絡時IPV6,位于AB中間的C網(wǎng)絡是IPv4,此時,A與B無法進行直接通信,就必須采用IP隧道這種技術。
IP任播
想象以下,報警電話110與消防電話119等系統(tǒng),當人們撥打110或者119時,其接收電話并不只有一個,而是可以撥打到一個區(qū)域管轄范圍內(nèi)的所有公安或者消防部門。這種機制的實現(xiàn),在互聯(lián)網(wǎng)上就是IP任播。
IP任播是指為那些提供同一種服務的服務器配置同一個IP地址,并與最近的服務器進行通信的一種方法。