TCP/IP(三):IP 協(xié)議相關(guān)技術(shù)(轉(zhuǎn))

雖然這個(gè)系列教程的重點(diǎn)是搞定 TCP/IP,不過(guò)不用著急,本文簡(jiǎn)要介紹完與 IP 協(xié)議相關(guān)的技術(shù),下一篇文章就會(huì)正式、詳細(xì)的介紹 傳輸層與 TCP 協(xié)議。這篇文章會(huì)介紹 DNS、ARP、NAT 協(xié)議,這些內(nèi)容雖然與 TCP 沒(méi)有直接關(guān)聯(lián),但理解它們的原理有助于鞏固基礎(chǔ)知識(shí),更好的理解網(wǎng)絡(luò)的工作原理。

DNS 解析

IP地址用于識(shí)別通信雙方的地址,但它是一串長(zhǎng)數(shù)字,不方便記憶,人們希望主機(jī)有自己自己的名字,這個(gè)名字是唯一的,而且容易記住。于是,誕生了“域名”的概念。域名是一種為了識(shí)別主機(jī)名稱(chēng)和機(jī)構(gòu)名的具有分層的名稱(chēng),比如在域名 neu.edu.cn中,neu是主機(jī)名,educn 是不同層次下的機(jī)構(gòu)名。

域名和 IP 地址都可以唯一對(duì)應(yīng)一臺(tái)主機(jī),DNS 協(xié)議的作用就是將自身具有意義的域名轉(zhuǎn)換成不容易記住的 IP 地址。

域名是分層的,每層都有自己的 DNS 服務(wù)器用于處理 DNS 解析的請(qǐng)求。這樣的好處在于每層的服務(wù)器不用關(guān)注過(guò)多的信息,它只要知道自己這一層下的域名服務(wù)器信息即可。以解析域名: www.ietf.org為例:

根服務(wù)器其實(shí)并不知道 www.ietf.org 的 IP 地址,但是它知道 itef.org 域名服務(wù)器的地址,所以它把這條查詢請(qǐng)求轉(zhuǎn)發(fā)給 itef.org 域名服務(wù)器。DNS請(qǐng)求被逐層下發(fā),直到找到對(duì)應(yīng)的 IP 地址為止。

ARP 協(xié)議

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

ARP 協(xié)議的工作原理可以分為兩部分:ARP 請(qǐng)求和 ARP 響應(yīng)。 首先,源主機(jī)會(huì)通過(guò)廣播發(fā)送一個(gè) ARP 請(qǐng)求包:“我要與 IP 地址為 xxx 的主機(jī)通話,誰(shuí)知道它的 MAC地址?”。

數(shù)據(jù)鏈路上的所有主機(jī)都會(huì)收到這條消息并檢查自己的 IP 地址,如果與 ARP 請(qǐng)求包中的 IP 地址一致,主機(jī)就會(huì)發(fā)送 ARP 響應(yīng)包:“我就是 IP 地址為 xxx 的主機(jī),我的 MAC 地址是:xxxx”。

下圖表示了 ARP 協(xié)議的工作機(jī)制:

在實(shí)際的使用過(guò)程中,每次往目標(biāo)主機(jī)發(fā)送數(shù)據(jù)都要使用 ARP 是很低效的,通常的做法是把獲取到的 MAC 地址緩存一段時(shí)間。一般來(lái)說(shuō),一旦源主機(jī)向目標(biāo)地址發(fā)送一個(gè)數(shù)據(jù)包,接下來(lái)繼續(xù)發(fā)送多次的概率非常大,因此這種緩存非常容易命中。

當(dāng)下一次發(fā)送 ARP 請(qǐng)求或超過(guò)一定時(shí)間后,緩存都會(huì)失效,這保證了即使 MAC 地址與 IP 地址的對(duì)應(yīng)關(guān)系發(fā)生了變化,數(shù)據(jù)包依然能夠被正確的發(fā)往目標(biāo)地址。

再次強(qiáng)調(diào)一下,MAC 和 IP 地址雖然看上去功能類(lèi)似(都是用于唯一區(qū)分主機(jī)),但是兩者缺一不可。如果只有 IP 地址,雖然可以跳過(guò) ARP,直接在數(shù)據(jù)鏈路上發(fā)一個(gè)廣播,但是這僅適用于通信雙方處于同一個(gè)數(shù)據(jù)鏈路下的情況。如果雙方處于不同的數(shù)據(jù)鏈路,數(shù)據(jù)報(bào)無(wú)法穿透中間的路由器。

如果全世界只用 MAC 地址,那么請(qǐng)參考交換機(jī)的自學(xué)過(guò)程,可以想象這個(gè)過(guò)程會(huì)帶來(lái)龐大的,不必要的流量。

正因?yàn)?MAC 和 IP 地址缺一不可,所以才產(chǎn)生了 ARP 這樣的協(xié)議將兩者關(guān)聯(lián)起來(lái)。

NAT 和 NAPT 技術(shù)

NAT (Network Address Translator) 是一種用于將局域網(wǎng)中的私有地址轉(zhuǎn)換成全局 IP 地址的技術(shù)。

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

下圖描繪了 NAT 的工作原理:

局域網(wǎng)中 IP 地址為 10.0.0.10 的主機(jī)向全局 IP 地址 163.221.120.9 發(fā)送數(shù)據(jù)。NAT 路由器將數(shù)據(jù)包的源地址修改成自己的全局 IP 地址:202.244.174.37。同理,接收數(shù)據(jù)時(shí),路由器把目標(biāo)地址 202.244.174.37 翻譯成內(nèi)網(wǎng)地址:10.0.0.10

路由器只有一個(gè)對(duì)外的全局 IP 地址,如果有多個(gè)內(nèi)網(wǎng)主機(jī)都向外部通訊怎么辦呢?這時(shí)就要使用 NAPT 技術(shù),它和 NAT 從原理上類(lèi)似,但它可以轉(zhuǎn)換 TCP 和 UDP 端口號(hào)。

使用 NAPT 技術(shù)時(shí),不同的內(nèi)網(wǎng) IP 被轉(zhuǎn)換成同一個(gè)公共 IP 地址,也就是路由器對(duì)外顯示的全局 IP 地址,但是被附加不同的端口號(hào)以示區(qū)分:

不管是 NAT 還是 NAPT,都需要路由器路由器內(nèi)部維護(hù)一張自動(dòng)生成的地址轉(zhuǎn)換表。以 TCP 為例,建立 TCP 連接首次握手的 SYN 包發(fā)出時(shí)會(huì)生成這個(gè)表,關(guān)閉連接時(shí)會(huì)發(fā)出 FIN 包,收到這個(gè)包的應(yīng)答時(shí)轉(zhuǎn)換表被刪除。

如果暫時(shí)不了解 TCP 協(xié)議和三次握手也沒(méi)有關(guān)系,下一篇文章將會(huì)有詳細(xì)的講解。

TCP/IP(三):IP 協(xié)議相關(guān)技術(shù)(原)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,195評(píng)論 0 8
  • 0. 介紹 本文源自《圖解TCP/IP》第四、五章讀書(shū)筆記。一篇文章讓你了解IP協(xié)議。閱讀的時(shí)候,注意一般知識(shí)點(diǎn)結(jié)...
    天才木木閱讀 5,456評(píng)論 0 14
  • IPv4分組 IPv4,即現(xiàn)在普遍使用的IP協(xié)議(版本為4)。IP協(xié)議定義數(shù)據(jù)傳送的基本單元——IP分組及其確切的...
    CodeKing2017閱讀 2,229評(píng)論 0 0
  • # 圖解TCP/IP 標(biāo)簽(空格分隔): 2018招聘 --- ##第1章 網(wǎng)絡(luò)基礎(chǔ)知識(shí) ### ### 1.1 ...
    Kai_a3da閱讀 1,568評(píng)論 0 2
  • LT-0807,2018.03.11翻譯,@成都 聲明 本文是一篇關(guān)于TCP/IP協(xié)議組件的RFC,聚焦于一個(gè)IP...
    摩訶婆羅多閱讀 4,308評(píng)論 1 5

友情鏈接更多精彩內(nèi)容