這篇文章我們簡(jiǎn)要介紹IP協(xié)議相關(guān)技術(shù)蒲讯,下篇文章我們就會(huì)開(kāi)始介紹這一系列教程的重點(diǎn)--傳輸層與TCP協(xié)議劫映。
這篇文章我們會(huì)了解到DNS、ARP嗤攻、NAT協(xié)議,這些協(xié)議雖然與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)的具有分層的名稱(chēng)刃唤,比如neu.edu.cn
中,neu是主機(jī)名白群,edu是不同層次下的機(jī)構(gòu)名尚胞。DNS解析
域名和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地址密幔,但是它知道ietf.org
的域名服務(wù)器的地址楔脯,所以它把這條查詢(xún)請(qǐng)求轉(zhuǎn)發(fā)給ietf.org
的域名服務(wù)器。DNS被逐層下發(fā)胯甩,直到找到對(duì)應(yīng)的IP地址為止昧廷。
二、 ARP協(xié)議(地址解析協(xié)議)
在通過(guò)以太網(wǎng)發(fā)送IP數(shù)據(jù)包時(shí)偎箫,需要先封裝第三層IP首部(里邊包含目標(biāo)IP地址)木柬、第二層以太網(wǎng)幀首部(里邊包含目標(biāo)MAC地址),但由于發(fā)送時(shí)只知道目標(biāo)IP地址淹办,不知道其MAC地址眉枕,又不能跨第二、三層怜森,所以需要使用地址解析協(xié)議速挑。ARP協(xié)議只使用于局域網(wǎng)中。
- ARP(Address Resolution Protocol)用于根據(jù)目標(biāo)IP地址副硅,定位下一個(gè)接收數(shù)據(jù)包的網(wǎng)絡(luò)設(shè)備的MAC地址姥宝。結(jié)果是如果目標(biāo)主機(jī)處在同一個(gè)數(shù)據(jù)鏈路上,可以直接得到目標(biāo)主機(jī)的MAC地址恐疲,否則會(huì)得到下一個(gè)路由器的MAC地址腊满。
- ARP協(xié)議的工作原理可以分為兩部分:ARP請(qǐng)求和ARP響應(yīng)。
首先源主機(jī)會(huì)通過(guò)廣播發(fā)送一個(gè)ARP請(qǐng)求包培己,“我要與目標(biāo)IP地址進(jìn)行通信碳蛋,誰(shuí)知道它的MAC地址”。
數(shù)據(jù)鏈路上的所有主機(jī)都會(huì)收到這個(gè)消息并檢查自己的IP地址省咨,如果與ARP請(qǐng)求中的IP地址一致肃弟,就會(huì)發(fā)送ARP響應(yīng)包,“我就是茸炒,我的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)多次發(fā)送的概率非常大比肄,所以這種緩存命中率很高。
當(dāng)下一次發(fā)送ARP請(qǐng)求或超過(guò)緩存時(shí)間以后囊陡,緩存都會(huì)失效芳绩,這保證了即使目標(biāo)IP地址與MAC地址對(duì)應(yīng)關(guān)系即使發(fā)生了改變,數(shù)據(jù)包扔能被正確的發(fā)送到目標(biāo)地址撞反。 - IP地址負(fù)責(zé)標(biāo)記發(fā)送方和接收方,而MAC地址負(fù)責(zé)傳輸過(guò)程中的分段傳送,所以二者缺一不可妥色。
三、NAT和NAPT技術(shù)
1. NAT(Network Address Translator)
NAT是一種將局域網(wǎng)中的私有IP地址轉(zhuǎn)換為全局IP地址的技術(shù)遏片。
在連接上路由器的時(shí)候嘹害,如果檢查一下設(shè)備的IP地址,會(huì)發(fā)現(xiàn)是類(lèi)似于192.168.1.1
這樣的IP地址吮便。那不同網(wǎng)段中笔呀,IP地址都是192.168.1.1
的主機(jī)該如何通信呢?
下圖描述了NAT的工作原理:
局域網(wǎng)中IP地址為
10.0.0.10
的主機(jī)向全局IP地址為163.221.120.9
的主機(jī)發(fā)送數(shù)據(jù)髓需。NAT路由器將數(shù)據(jù)包IP首部中的源地址修改為自己的全局IP地址许师。同理,接收數(shù)據(jù)時(shí)僚匆,把目標(biāo)地址202.224.174.37
翻譯為私有IP地址10.0.0.10
微渠。
2. NAPT
路由器只有一個(gè)對(duì)外的全局IP地址,如果有多個(gè)內(nèi)網(wǎng)主機(jī)都需要和外部通信怎么區(qū)分它們呢咧擂?這時(shí)就要用到NAPT技術(shù)了敛助,它和NAT原理上類(lèi)似,但它可以轉(zhuǎn)換TCP和UDP端口號(hào)屋确。
在使用NAPT技術(shù)是纳击,不同的內(nèi)網(wǎng)私有IP被轉(zhuǎn)換為相同的全局IP地址,也就是路由器對(duì)外顯示的全局IP地址攻臀,但是被附加不同的端口號(hào)加以區(qū)分:
不管是NAT還是NAPT技術(shù)焕数,都需要路由器內(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)換表會(huì)被刪除善已。
具體的TCP和三次握手我們會(huì)在下一篇文章中具體講解灼捂。