NAT类型与检测
NAT類型與檢測
一、NAT分類
Full Cone NAT(完全圓錐型)
Address Restricted Cone NAT(地址限制圓錐型)
Port Restricted Cone NAT(端口限制圓錐型)
Symmetric NAT(對稱型)
1.Full Cone NAT
完全錐形NAT,所有從同一個內網IP和端口號發送過來的請求都會被映射成同一個外網IP和端口號,并且任何一個外網主機都可以通過這個映射的外網IP和端口號向這臺內網主機發送包。
2.Address Restricted Cone NAT
地址限制錐形NAT,它也是所有從同一個內網IP和端口號發送過來的請求都會被映射成同一個外網IP和端口號。與完全錐形不同的是,外網主機只能夠向先前已經向它發送過數據包的內網主機發送包。
3.Port Restricted Cone NAT
端口限制錐形NAT,與限制錐形NAT很相似,只不過它包括端口號。也就是說,一臺IP地址X和端口P的外網主機想給內網主機發送包,必須是這臺內網主機先前已經給這個IP地址X和端口P發送過數據包。
4.Symmetric NAT
對稱型NAT,所有從同一個內網IP和端口號發送到一個特定的目的IP和端口號的請求,都會被映射到同一個IP和端口號。如果同一臺主機使用相同的源地址和端口號發送包,但是發往不同的目的地,NAT將會使用不同的映射。此外,只有收到數據的外網主機才可以反過來向內網主機發送包。
二、使用STUN服務器檢測設備所處網絡的NAT類型
STUN服務器需要兩個公網IP,下面client是要檢測的設備,server是STUN服務器,并假設server的兩公網SOCKET的IP地址和端口號分別是IP1:port和IP2:port。
-- STEP1 --
client向server IP1:port發送請求,server使用IP1:port將收到請求的源IP和port(即設備的公網IP地址和端口號)回復給client,如果得到的公網IP和設備自身的IP一樣,則判斷設備自身處在公網,無NAT,檢測結束,否則進行下一步STEP2。
-- STEP2 --
client向server IP1:port發送請求,server使用IP2:port來回復,如果設備能收到回復,則判斷為Full Cone NAT,檢測結束,否則進行下一步STEP3。
-- STEP3 --
client向server IP2:port發送請求,server使用IP2:port將收到的源IP和port回復給client,client判斷此port和STEP1得到的port是否一樣,如果不一樣,則為Symmetric NAT,檢測結束;如果一樣,則為Restricted Cone NAT,進行下一步STEP4繼續檢測是哪種Restricted Cone NAT。
-- STEP4 --
client向server IP2:port發送請求,要求server使用該IP的另一個端口來回復,server使用IP2:port2回復請求,如果client能收到回復,則判斷為 Address Restricted Cone NAT,否則為Port Restricted Cone NAT。
NAT類型與檢測
一、NAT分類
Full Cone NAT(完全圓錐型)
Address Restricted Cone NAT(地址限制圓錐型)
Port Restricted Cone NAT(端口限制圓錐型)
Symmetric NAT(對稱型)
1.Full Cone NAT
完全錐形NAT,所有從同一個內網IP和端口號發送過來的請求都會被映射成同一個外網IP和端口號,并且任何一個外網主機都可以通過這個映射的外網IP和端口號向這臺內網主機發送包。
2.Address Restricted Cone NAT
地址限制錐形NAT,它也是所有從同一個內網IP和端口號發送過來的請求都會被映射成同一個外網IP和端口號。與完全錐形不同的是,外網主機只能夠向先前已經向它發送過數據包的內網主機發送包。
3.Port Restricted Cone NAT
端口限制錐形NAT,與限制錐形NAT很相似,只不過它包括端口號。也就是說,一臺IP地址X和端口P的外網主機想給內網主機發送包,必須是這臺內網主機先前已經給這個IP地址X和端口P發送過數據包。
4.Symmetric NAT
對稱型NAT,所有從同一個內網IP和端口號發送到一個特定的目的IP和端口號的請求,都會被映射到同一個IP和端口號。如果同一臺主機使用相同的源地址和端口號發送包,但是發往不同的目的地,NAT將會使用不同的映射。此外,只有收到數據的外網主機才可以反過來向內網主機發送包。
二、使用STUN服務器檢測設備所處網絡的NAT類型
STUN服務器需要兩個公網IP,下面client是要檢測的設備,server是STUN服務器,并假設server的兩公網SOCKET的IP地址和端口號分別是IP1:port和IP2:port。
-- STEP1 --
client向server IP1:port發送請求,server使用IP1:port將收到請求的源IP和port(即設備的公網IP地址和端口號)回復給client,如果得到的公網IP和設備自身的IP一樣,則判斷設備自身處在公網,無NAT,檢測結束,否則進行下一步STEP2。
-- STEP2 --
client向server IP1:port發送請求,server使用IP2:port來回復,如果設備能收到回復,則判斷為Full Cone NAT,檢測結束,否則進行下一步STEP3。
-- STEP3 --
client向server IP2:port發送請求,server使用IP2:port將收到的源IP和port回復給client,client判斷此port和STEP1得到的port是否一樣,如果不一樣,則為Symmetric NAT,檢測結束;如果一樣,則為Restricted Cone NAT,進行下一步STEP4繼續檢測是哪種Restricted Cone NAT。
-- STEP4 --
client向server IP2:port發送請求,要求server使用該IP的另一個端口來回復,server使用IP2:port2回復請求,如果client能收到回復,則判斷為 Address Restricted Cone NAT,否則為Port Restricted Cone NAT。
總結
- 上一篇: 剑指offer:汇编语言中有一种移位指令
- 下一篇: STL泛型算法:reverse