用java做網(wǎng)站可以嗎重慶網(wǎng)站排名公司
目錄
前言
前篇
引言
SNAT(Source Network Address Translation)源網(wǎng)絡(luò)地址轉(zhuǎn)換
SNAT流程
確定性標記
DNAT(Destination Network Address Translation,目標網(wǎng)絡(luò)地址轉(zhuǎn)換)
NAT技術(shù)重要性
前言
本博客是博主用于復(fù)習(xí)計算機網(wǎng)絡(luò)的博客,如果疏忽出現(xiàn)錯誤,還望各位指正。
這篇博客是在B站掌芝士zzs這個UP主的視頻的總結(jié),講的非常好。
可以先去看一篇視頻,再來參考這篇筆記(或者說直接偷走)。
家庭網(wǎng)絡(luò)如何通過路由器上網(wǎng)?源地址轉(zhuǎn)換和目標地址轉(zhuǎn)換時什么?_嗶哩嗶哩_bilibili
前篇
- 計算機網(wǎng)絡(luò)——MAC地址和IP地址-CSDN博客
- 計算機網(wǎng)絡(luò)——交換機和路由器-CSDN博客
引言
NAT(Network Address Translation),是指網(wǎng)絡(luò)地址轉(zhuǎn)換
在兩個不同家庭中,通過路由器接入的兩臺電腦,IP地址都是192.168.1.10。同時訪問互聯(lián)網(wǎng)上的同一個網(wǎng)站,為什么IP地址不會沖突?SNAT和DNAT又是什么?
SNAT(Source Network Address Translation)源網(wǎng)絡(luò)地址轉(zhuǎn)換
計算機網(wǎng)絡(luò)中數(shù)據(jù)包如何發(fā)送是根據(jù)目標IP進行路由的。如果同一個網(wǎng)絡(luò)中出現(xiàn)兩個相同的IP則ARP表會出現(xiàn)混亂,數(shù)據(jù)包發(fā)送到哪臺主機上將變成不確定性行為。
那怎么解決這個問題?答案很明顯,就是讓數(shù)據(jù)包從路由器發(fā)出去的時候,變成不同的IP地址不就可以了。這個技術(shù)叫源地址轉(zhuǎn)換技術(shù),我們稱之為SNAT。
SNAT流程
為了簡化理解
假設(shè)路由器的接口接入的IP地址為公網(wǎng)IP比如221.8.1?4.91
我們的內(nèi)網(wǎng)計算機地址是192.168.1.4,網(wǎng)關(guān)地址為192.168.1.1。(網(wǎng)關(guān)的地址一般是.1或者.254,為了方便)
我們訪問的遠端IP為36.152.4?4.96。
首先,計算機發(fā)送一包數(shù)據(jù)出來到路由器上,在這包數(shù)據(jù)的網(wǎng)絡(luò)層有兩個重要的信息,一個是源IP192.168.1.4點時,另一個是目標IP36.152.44.96。
路由器拿到這一包數(shù)據(jù)時,需要執(zhí)行源地址轉(zhuǎn)換SNAT,把源IP改一下,改成WAN口的公網(wǎng)IP221.8.1?4.91發(fā)送出去。
服務(wù)器收到了數(shù)據(jù)處理完之后需要回復(fù),則把源IP作為目標IP發(fā)送回來。
路由器收到回包,執(zhí)行反向SNAT,再把目標IP改成192.16?8.1點時發(fā)送給了家庭中的計算機,一次通信完成。
看到這個過程你是不是覺得很簡單,但是事實比這個要復(fù)雜一些。(還是看視頻容易理解,推薦先看視頻,理解了再存下筆記)。
確定性標記
假設(shè)家庭中有兩臺計算機,另一臺計算機的IP地址為192.168.1.11。他們倆同時訪問同一個網(wǎng)站,發(fā)送了兩包數(shù)據(jù)到路由器上,路由器執(zhí)行SNAT發(fā)送出去,看來沒什么問題。
但是回來的數(shù)據(jù)包怎么辦?因為回來的數(shù)據(jù)包的目標IP都是221.8.1?4.91。
如何從中區(qū)分出來兩臺計算機的數(shù)據(jù)包?所以這樣看只關(guān)注IP地址是不行的,還需要增加一些確定性的標記。這時就要把關(guān)聯(lián)的屬性再往下擴展一層,擴展到傳輸層。
我們以最常用的傳輸層協(xié)議TCP協(xié)議為例。
TCP協(xié)議有兩個關(guān)鍵屬性,源端口和目標端口。
這時候我們的源地址轉(zhuǎn)換就變成了修改源IP和源端口,并將修改后的端口號和源IP加源端口形成映射關(guān)系。
比如主機一和主機二的源端口都是12345(比如兩個主機上都是QQ占用了該端口)
修改后主機一的源端口變?yōu)?3456,主機二變?yōu)?4567
在返回包中,根據(jù)目標端口號是23456還是34567,區(qū)分出來是主機一還是主機二的包。
并且在反向SNAT的時候,把目標端口號改回。
除了TCP協(xié)議外。?UTP協(xié)議也是同樣的道理,通過IP加端口進行關(guān)聯(lián)。
但是我們常用來檢測目標連通性的Ping命令使用的是ICMP協(xié)議。
它沒有端口信息,則需要使用協(xié)議中的type加code來代替端口進行關(guān)聯(lián)。(可以看下我抓包實驗中的截圖,有一個類型)。計算機網(wǎng)絡(luò)——抓取icmp包-CSDN博客
其他的協(xié)議也都是類似的道理,通過協(xié)議特定的標記來進行關(guān)聯(lián)。
DNAT(Destination Network Address Translation,目標網(wǎng)絡(luò)地址轉(zhuǎn)換)
DNAT名為目標地址轉(zhuǎn)換,顧名思義跟SNAT相反,DNAT是把目標地址修改的技術(shù)。
DNAT有什么用呢?
如果我們的內(nèi)網(wǎng)計算機對外提供服務(wù),公網(wǎng)上發(fā)過來的請求不能直接到達內(nèi)網(wǎng)計算機。我們就需要路由器用DNAT技術(shù)幫我們轉(zhuǎn)發(fā)請求。DNAT就是把公網(wǎng)IP轉(zhuǎn)換為我們的內(nèi)網(wǎng)IP。
比如我們內(nèi)網(wǎng)有一臺主機上有一個Web服務(wù)監(jiān)聽了80端口。
我們需要在路由器上配置一個DNAT,內(nèi)容為訪問公網(wǎng)地址的8080端口,幫我們轉(zhuǎn)到計算機1,也就是192.168.1.10的80端口。
則當訪問數(shù)據(jù)包從WAN口進入后,路由器執(zhí)行DNAT修改目標地址為192.16?8.1點,修改目標端口為80,把數(shù)據(jù)包轉(zhuǎn)發(fā)給了計算機。
NAT技術(shù)重要性
NAT技術(shù)深入到我們生活的方方面面,小到家庭網(wǎng)絡(luò),大到龐大的運營商網(wǎng)絡(luò)、云計算平臺,都通過net技術(shù)一層層的將我們的網(wǎng)絡(luò)進行了分割,在IPV4地址嚴重匱乏的今天,我們的計算機網(wǎng)絡(luò)仍舊能正常的運轉(zhuǎn),多虧了NAT技術(shù)的存在。