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