IP 協(xié)議相關(guān)技術(shù)(六)

TCP/IP 系列文章

網(wǎng)絡(luò)基礎(chǔ)知識(一)
TCP/IP基礎(chǔ)知識(二)
物理層(三)
數(shù)據(jù)鏈路層(四)
IP 協(xié)議(五)
IP 協(xié)議相關(guān)技術(shù)(六)
TCP與UDP(七)

這篇文章主要簡單介紹一下 IP 協(xié)議中的 DNSARP、RARPNAT、NAPT等。

一、DNS

專業(yè)的說DNS是域名系統(tǒng) (Domain Name System)的簡稱,也是IT人士常說的域名解析系統(tǒng)。主要是讓用戶在互聯(lián)網(wǎng)上通過域名找到域名對應的IP地址,因為IP地址都是一串數(shù)字(例如:192.168.0.1)不方便記憶,便誕生了域名,將域名和IP地址捆綁在一起,人們在訪問域名的同時等于訪問了該域名對應的IP地址了。

舉一個簡單的例子,域名相當于門牌號,而IP地址相當于具體的地理位置。像景安網(wǎng)絡(luò)所在的位置用IP地址來說是鄭州市花園路144號,域名是信息大廈,很顯然信息大廈更方便人們記憶,在交談中也是說信息大廈而不是說花園路144號。

大家都知道,我們在上網(wǎng)的時候都是輸入:host.zzidc.com這樣的域名訪問網(wǎng)站的。其實我們訪問的是和域名綁定在一起的那個IP上的內(nèi)容,DNS域名解析系統(tǒng)是用來捆綁IP地址和域名從而方便人們記憶和訪問的。

域名是分層的,每層都有自己的 DNS 服務(wù)器用于處理 DNS 解析的請求。這種分層結(jié)構(gòu)看起來像是一個倒掛的數(shù)。頂點是樹的根,底下是樹的各層枝葉。如下圖頂點的下一層是第一層域名,包括 jp(日本)、uk(英國)等。


域名的分層

域名分層的好處在于每層的服務(wù)器不用關(guān)注過多的信息,它只要知道自己這一層下的域名服務(wù)器信息即可。以解析域名: www.ietf.org為例,具體流程講解請看圖片中的文字,要注意各個域的分層上都設(shè)有各自的域名服務(wù)器。

域名解析過程

二、ARP 和 RARP

2.1 ARP

ARP 協(xié)議(Address Resolution Protocol)主要用于通過目標 IP 地址,定位下一個接收數(shù)據(jù)包的網(wǎng)絡(luò)設(shè)備的 MAC 地址。如果目標主機處在同一個數(shù)據(jù)鏈路上,那么可以直接得到目標主機的 MAC 地址,否則會得到下一條路由器的 MAC 地址。

ARP 主要是借助 ARP 請求 與 ARP 響應兩種類型的包確定 MAC 地址。具體流程如下圖。


ARP獲取MAC地址機制
  • 1、首先,源主機會通過廣播發(fā)送一個 ARP 請求包:“我要與 IP 地址為 xxx 的主機通話,誰知道它的 MAC地址?”。
  • 2、數(shù)據(jù)鏈路上的所有主機都會收到這條消息并檢查自己的 IP 地址,如果與 ARP 請求包中的 IP 地址一致,主機就會發(fā)送 ARP 響應包:“我就是 IP 地址為 xxx 的主機,我的 MAC 地址是:xxxx”。
    實際的處理過程中會增加 MAC 地址的自動緩存的優(yōu)化處理。

2.2 RARP

RARP 是將 ARP 反過來,從 MAC 地址定位 IP 地址的一種協(xié)議。

通常可以通過個人電腦設(shè)置 IP 地址。但是對于嵌入式設(shè)備,會遇到?jīng)]有任何輸入接口或無法通過 DHCP 動態(tài)獲取 IP 地址的情況。這種情況下,就可以通過使用 RARP 解決 IP 問題。如將打印機服務(wù)器等小型嵌入式設(shè)備接入到網(wǎng)絡(luò)時機會經(jīng)常用到。

RARP機制流程

三、IP 和 MAC 缺一不可

MAC 地址 和 IP 地址雖然看上去功能類似(都是用于唯一區(qū)分主機),但是兩者缺一不可。

如果只有 IP 地址,雖然可以跳過 ARP,直接在數(shù)據(jù)鏈路上發(fā)一個廣播,獲取到直接連接設(shè)備的 Mac 地址,但是這僅適用于通信雙方處于同一個數(shù)據(jù)鏈路下的情況。如果雙方處于不同的數(shù)據(jù)鏈路,數(shù)據(jù)報無法穿透中間的路由器。如下圖A和C不處于同一數(shù)據(jù)鏈路,假設(shè)A發(fā)送 IP 數(shù)據(jù)報給主機B時,必須要經(jīng)過路由器C。即使知道了主機B的Mac地址,由于路由器C會隔斷兩個網(wǎng)絡(luò),還是無法實現(xiàn)直接從主機A發(fā)送數(shù)據(jù)報給主機B。此時,主機A必須得先將數(shù)據(jù)報發(fā)送個路由器C的Mac地址C1。


如果只有 MAC 地址,人們無法知道這臺計算機處在網(wǎng)絡(luò)中的位置。這就好比你只知道這人的身份證號,然后根據(jù)身份證號滿大街去找此人。如果全世界的設(shè)備都使用 MAC 地址相連,那么網(wǎng)橋在習的之前就要像全世界發(fā)送包,這樣該需要多大的流量。另外,網(wǎng)橋也需要維護一張巨大的表格來維護學到的所有 MAC 地址。顯然基于以上兩點,只有 MAC 地址時不現(xiàn)實的。

為了更深刻的理解這個問題,這里可以舉一個例子。一人計劃去很遠的地方陸行,且先后乘坐飛機、火車、公交到達目的地。謂詞,絕度那個先去旅行社買機票和火車票。旅行社不僅為他預定了機票和火車票,甚至還制定了一個詳細的行程表。每一截區(qū)間路程就相當于數(shù)據(jù)鏈路,機票或火車票就相當于Mac地址,每到一區(qū)間,就找下一區(qū)間的Mac地址。而整個全程的行程表就相當于網(wǎng)絡(luò)層。


四、NAT 和 NAPT

NAT是用于在本地網(wǎng)絡(luò)中使用私有地址,在連接網(wǎng)絡(luò)時轉(zhuǎn)而使用全局 IP 地址的技術(shù)。NAPT 技術(shù)主要是用來轉(zhuǎn)換 TCP、UDP 的端口號。借助這兩個技術(shù)可以實現(xiàn)一個全局 IP 地址與多個主機的通信。

在連接上無線路由器的時候,如果檢查一下設(shè)備的 IP 地址,你可能會發(fā)現(xiàn)類似于 192.168.1.1 這樣的局域網(wǎng) IP 地址。那不同網(wǎng)段中,IP 地址都是 192.168.1.1 的主機改如何通信呢?


上圖中,局域網(wǎng)中 IP 地址為 10.0.0.10 的主機向全局 IP 地址 163.221.120.9 發(fā)送數(shù)據(jù)。NAT 路由器將數(shù)據(jù)包的源地址修改成全局 IP 地址 202.244.174.37。接收數(shù)據(jù)時,NAT 路由器把目標地址 202.244.174.37 修改成內(nèi)網(wǎng)地址 10.0.0.10 。實際上 之所以能完成這種一來一回的對應修改,主要是因為在 NAT 路由器的內(nèi)部緩存有一張用來轉(zhuǎn)換 IP 的表。

當私有網(wǎng)絡(luò)內(nèi)的多臺機器同事要與外部進行通信的時候,僅僅轉(zhuǎn)換 IP 地址,人們不免擔心全局 IP 地址不夠使用。這是就采用 IP 地址中包含端口號一起進行轉(zhuǎn)換的方式(即 NAPT 技術(shù))解決這個問題,如下圖所示。這里既然說到端口號就順帶提一下,通常認為只有在目標地址、原地址、目標端口號、源端口號以及協(xié)議類型(TCP 還是 UDP)這五項內(nèi)容都一致的時候才被認為是同一個通信連接。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容