01
前言
有讀者問我NAT是啥東西,我就簡單提一下吧,本文主要講解的是IP數(shù)據(jù)報,當(dāng)然,如果有啥不懂的,也可以私信我,如果恰巧我懂,那我就解答一下,想看什么樣的文章也可以留言討論~。
在前面的文章中,我們知道,如果一個主機(jī)(開發(fā)板)想要訪問外網(wǎng),那必須經(jīng)過NAT地址轉(zhuǎn)換,就拿我們的電腦來說,它想要訪問外網(wǎng),那就必須將電腦的IP地址轉(zhuǎn)換為公網(wǎng)的IP地址。我們電腦目前使用的IP地址是專用地址,如 192.168.0.66等,大家可以結(jié)合前面的文章了解一下什么是專用地址,什么是公網(wǎng)的IP地址。而讓IP地址發(fā)生轉(zhuǎn)換的就是NAT——網(wǎng)絡(luò)地址轉(zhuǎn)換協(xié)議。
02
NAT網(wǎng)絡(luò)地址轉(zhuǎn)換
科普一下NAT。IP地址只有32位,滿打滿算只有42.9億個地址,去掉保留的IP地址、組播地址,能用的IP地址大約還剩36億左右,IPv4早就不夠用了,不過呢感謝有NAT這項(xiàng)技術(shù),不然現(xiàn)在出生的我們早就沒法上網(wǎng)了,那我還怎么寫文章?。?!
其實(shí)我們使用的基本上是專用網(wǎng)絡(luò)地址,比如公司的局域網(wǎng)、機(jī)構(gòu)的局域網(wǎng)、個人的局域網(wǎng)(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16),其實(shí)這些局域網(wǎng)是不能上網(wǎng)的,依賴電信、移動、聯(lián)通這些通信機(jī)構(gòu),在各個局域網(wǎng)的邊界WAN-IP使用一個或多個公網(wǎng)IPv4進(jìn)行一對多的轉(zhuǎn)換。如果IP地址是一對一轉(zhuǎn)換,那根本節(jié)省不了IPv4地址空間;所以一般NAT都是一對多的,即一個公網(wǎng)IPv4映射多個私網(wǎng)IPv4。
它是一種把內(nèi)部私有網(wǎng)絡(luò)地址(IP地址)翻譯成合法網(wǎng)絡(luò)IP地址的技術(shù),因此NAT在一定程度上,能夠有效的解決IP地址不足的問題。簡單來說,就是你的IP地址不能上網(wǎng),得轉(zhuǎn)換成能上網(wǎng)的IP地址?。?!不過既然是一對多的,在一定程度上,會降低通信的效率,不過這個對應(yīng)個人來說壓根就沒啥感覺吧。
算了,不多說這 垃圾 東西,還是整點(diǎn)有意義的~。
03
IP數(shù)據(jù)報
其實(shí)在很多書中,IP數(shù)據(jù)報都被稱作IP分組,(小聲bb:分啥組啊,又不是上學(xué)),咳咳咳,其實(shí)我更喜歡稱為IP數(shù)據(jù)報,當(dāng)然,IP分片也是很好聽的,當(dāng)然,這些名字都是正確的,叫哪個任君喜歡。
IP數(shù)據(jù)報與ARP報文都是一種報文格式,都有自己的組織形式,與ARP報文一樣,由兩部分組成,一部分是首部,另一部分是數(shù)據(jù)區(qū)域,一個IP數(shù)據(jù)報的首部長度是不定的,通常為20~60字節(jié),根據(jù)選項(xiàng)決定。而數(shù)據(jù)區(qū)域理論上可以多達(dá)65535個字節(jié),但是很少有數(shù)據(jù)是那么大的,并且在發(fā)送數(shù)據(jù)的時候受限于網(wǎng)卡硬件。
版本 ,4bit。規(guī)定了數(shù)據(jù)報的IP協(xié)議版本,對于IPv4,該值為4;對于IPv6,該值為6。通過查看版本號,路由器能夠確定如何解釋IP數(shù)據(jù)報的其他部分,不同的IP版本使用不同的數(shù)據(jù)報格式。IPv4與IPv6數(shù)據(jù)報是不一樣的,千萬不要混淆。
部首長度 ,記錄IP首部的數(shù)據(jù)的長度,因?yàn)镮P首部中包含了一些可變的數(shù)據(jù)選項(xiàng)(如果存在),故需要記錄首部的長度,以便區(qū)分?jǐn)?shù)據(jù)部分的起始位置,部首長度單位是字,只有這樣子才能最大記錄60個字節(jié)的數(shù)據(jù)(15*4=60) 。
服務(wù)類型 (TOS) ,占據(jù)8bit空間,服務(wù)類型包含在IPv4首部中,以便使不同類型的IP數(shù)據(jù)報,例如,一些特別要求低時延、高吞吐量或可靠性的數(shù)據(jù)報,能相互區(qū)別開來。提供特定等級的服務(wù)是一個由路由器管理員決定的策略問題,簡單來說就路由器根據(jù)是這個字段的值來為數(shù)據(jù)報提供(選擇)最合理的路徑。
數(shù)據(jù)報長度 ,占據(jù)16bit空間。記錄IP數(shù)據(jù)報的總長度(首部加上數(shù)據(jù)區(qū)域),以字節(jié)為單位。因?yàn)樵撟侄伍L為16bit,所以整個IP數(shù)據(jù)報的理論最大長度為65535字節(jié),然而,數(shù)據(jù)報很少有超過1500字節(jié)的,這是因?yàn)榈讓渔溌酚布辉试S那么大的數(shù)據(jù)報出現(xiàn)在鏈路上,以太網(wǎng)數(shù)據(jù)幀的最大長度為1500個字節(jié),當(dāng)有一個很大的IP數(shù)據(jù)報出現(xiàn)的時候,就需要進(jìn)行分片處理;而如果IP數(shù)據(jù)報的數(shù)據(jù)很少的時候,比如少于46個字節(jié),那么在以太網(wǎng)進(jìn)行發(fā)送數(shù)據(jù)的時候會填充一定的字節(jié)以滿足以太網(wǎng)幀最小長度,那么在接收方就要根據(jù)這個字段的內(nèi)容進(jìn)行提取有效數(shù)據(jù)。
標(biāo)識、標(biāo)志、分片偏移量這三個字段與IP數(shù)據(jù)報分片有關(guān),暫時不說,在講數(shù)據(jù)分片的時候說。
生存時間 (TTL) ,用來確保數(shù)據(jù)報不會永遠(yuǎn)在網(wǎng)絡(luò)中循環(huán)(例如由于長時間的路由選擇環(huán)路)。每當(dāng)IP數(shù)據(jù)報由一臺路由器處理時,該字段的值減1,若TTL字段減為0,則該數(shù)據(jù)報必須丟棄,同時會返回一個ICMP差錯報文給源主機(jī),這樣子數(shù)據(jù)就不會永遠(yuǎn)在網(wǎng)絡(luò)中漂流。
上層協(xié)議 。該字段僅在一個IP數(shù)據(jù)報到達(dá)其最終目的地才會有用。該字段的值指示了IP數(shù)據(jù)報的數(shù)據(jù)部分應(yīng)交給哪個特定的傳輸層協(xié)議。例如,值為6表明數(shù)據(jù)部分要交給TCP,而值為17表明數(shù)據(jù)要交給UDP。如果沒有它。將無法準(zhǔn)確遞交到層協(xié)議,ICMP會返回一個協(xié)議不可達(dá)錯誤。
首部校驗(yàn)和有點(diǎn)麻煩了,不講。
源IP地址與目標(biāo)IP地址 ,這個就太簡單了,源主機(jī)在生成IP數(shù)據(jù)報的時候會在源IP地址字段中插入它的IP地址,在目標(biāo)IP地址字段中插入其想要發(fā)送的最終目標(biāo)IP地址。
選項(xiàng)字段占據(jù)0~40個字節(jié)。它允許IP首部被擴(kuò)展,首部選項(xiàng)在嵌入式網(wǎng)絡(luò)協(xié)議棧中還是比較少使用的,當(dāng)它不存在就行了,整個IP數(shù)據(jù)報首部只有20字節(jié)。
數(shù)據(jù)區(qū)域 ,也稱之為有效載荷,這是IP數(shù)據(jù)報的最后的一個字段,也是最重要的內(nèi)容,在大多數(shù)情況下,IP數(shù)據(jù)報中的數(shù)據(jù)字段包含要交付給目標(biāo)IP地址的運(yùn)輸層(TCP協(xié)議或UDP協(xié)議),當(dāng)然,數(shù)據(jù)區(qū)域也可承載其他類型的報文,如ICMP報文。
來用wireshark抓個包驗(yàn)證一下IP數(shù)據(jù)報是不是這樣子的:
-
NAT
+關(guān)注
關(guān)注
0文章
151瀏覽量
16633 -
ip地址
+關(guān)注
關(guān)注
0文章
305瀏覽量
17480 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5622瀏覽量
103574
發(fā)布評論請先 登錄
淺談用戶數(shù)據(jù)報協(xié)議UDP數(shù)據(jù)報傳輸技術(shù)

labview制作數(shù)據(jù)報表
請問網(wǎng)絡(luò)中IP數(shù)據(jù)報傳輸?shù)倪^程是怎樣的?
如何使用Winpcap接收和發(fā)送IP數(shù)據(jù)報文?
Linux內(nèi)核網(wǎng)絡(luò)之網(wǎng)絡(luò)層發(fā)送消息之IP分片簡析
介紹IP數(shù)據(jù)報的格式及IP相關(guān)功能在Lwip中的實(shí)現(xiàn)方式
易上手的數(shù)據(jù)報表工具有哪些?奧威BI零編程
IP協(xié)議 (Internet協(xié)議中IP協(xié)議的概念及原理)
WinCC數(shù)據(jù)報表實(shí)現(xiàn)方法介紹
TCPIP協(xié)議數(shù)據(jù)報結(jié)構(gòu)詳解
Ethereal 分析數(shù)據(jù)報文
Delphi教程_多彩的數(shù)據(jù)報表
基于STM32的TCP/IP協(xié)議棧代碼之UDP分析

什么是IP協(xié)議

深入了解IP數(shù)據(jù)報發(fā)送的過程

評論