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

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

什么是IP協(xié)議

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

評(píng)論