『壹』 代理伺服器工作原理並使用軟體,應用軟體。
分類: 電腦/網路 >> 軟體 >> 其他軟體
解析:
(1) 代理服務原理
代理伺服器有很多種,大體來說有,ftp,socks代理三種,其中又分透明代理和不透明代理。其中透明代理一般是網關,是硬體。所以這里討論不透明代理。
當機器通過代理伺服器上網時。通訊是分兩次的,先是機器和代理伺服器通訊,再是代理伺服器和目的地址通訊。
機器和代理伺服器通訊時,目的IP是代理伺服器的IP。代理伺服器和目的地址通訊時,源IP是代理伺服器的IP,當外部的數據也是一樣的,在內網中,出現的IP數據,全是內網和代理伺服器的IP。因此,從IP包頭是看不出任何與外面通訊的信息的。只有從數據中才能看到。
例如,用代理上網。
過程是
機器和代理伺服器建立TCP連接。
機器發出GET命令。這時GET命令中包含URL或IP地址,明文。
代理伺服器將其中的URL轉換為IP地址,可能會有DNS。將源數據包中的數據拷貝下來。去掉URL,重新組包,再發出去。
我們需要解析第一個GET包。
現在來看幾種代理方式。
(get)
(connect)
ftp (user user@host:port)
ftp (user user@host port)
ftp (open host)
ftp (site host)
ftp (site user@host)
socks5
socks4
這些代理方式都有一個特點。就是在連接時,都會先和代理伺服器連接,發出請求,一般為 mand url,mand就是get,connect,user 等。和ftp都一樣,可以通過關鍵字來識別。而且url是明文。Socks有些特別。它不是明文的,而是十六進制數據。要獲得IP地址,還要經過轉換。
(2) 目前的代理服務技術
代理服務技術是在一台PC機上安裝一套代理軟體,主要用於用戶對Inter資源的訪問。
ICS即Inter連接共享(Inter Connection Sharing)的英文簡稱,是Windows系統針對家庭網路或小型的Intra網路提供的一種Inter連接共享服務。它實際上相當於一種網路地址轉換器,所謂網路地址轉換器就是當數據包向前傳遞的過程中,可以轉換數據包中的IP地址和TCP/UCP埠等地址信息。有了網路地址轉換器,家庭網路或小型的辦公網路中的電腦就可以使用私有地址,並且通過網路地址轉換器將私有地址轉換成ISP分配的單一的公用IP地址從而實現對Inter的連接。ICS方式也稱之為Inter轉換連接。
軟體:Wingate,、Winproxy
NAT即網路地址轉換(Neork Address Translator),從廣義上講,ICS也是使用了一種NAT技術,不過我們這里討論的NAT是指將運行Windows 2000 Server的計算機作為IP路由器,通過它在區域網和Inter主機間轉發數據包從而實現Inter的共享。NAT方式也稱之為Inter的路由連接。網路地址轉換NAT通過將專用內部地址轉換為公共外部地址,對外隱藏了內部管理的IP地址。這樣,通過在內部使用非注冊的IP地址,並將它們轉換為一小部分外部注冊的IP 地址,從而減少了IP 地址注冊的費用。同時,這也隱藏了內部網路結構,從而降低了內部網路受到攻擊的風險。
軟體:WinRoute、Sygate
(3) 代理數據變代
非透明代理:
上網主機向代理提交TCP連接請求:源ip(上網主機)目標ip(代理伺服器)
***********: 45 00 01 9E 64 CE 40 00 80 06 17 C0 C0 A8 FD 91 E...d.@.........
***********: C0 A8 FD E8 12 47 04 38 FB 32 8B 56 7E 55 57 EA .....G.8.2.V~UW.
***********: 50 18 44 70 1B EC 00 00 47 45 54 20 68 74 74 70 P.Dp....GET
***********: 3A 2F 2F 77 77 77 2E 63 63 74 76 2E 63 6F 6D 2E haozs.
***********: 63 6E 2F 20 48 54 54 50 2F 31 2E 30 0D 0A 41 63 / HTTP/1.0..Ac
***********: 63 65 70 74 3A 20 69 6D 61 67 65 2F 67 69 66 2C cept: image/gif,
***********: 20 69 6D 61 67 65 2F 78 2D 78 62 69 74 6D 61 70 image/x-xbitmap
***********: 2C 20 69 6D 61 67 65 2F 6A 70 65 67 2C 20 69 6D , image/jpeg, im
***********: 61 67 65 2F 70 6A 70 65 67 2C 20 61 70 70 6C 69 age/pjpeg, appli
***********: 63 61 74 69 6F 6E 2F 76 6E 64 2E 6D 73 2D 65 78 cation/vnd.ms-ex
000000a0: 63 65 6C 2C 20 61 70 70 6C 69 63 61 74 69 6F 6E cel, application
000000b0: 2F 76 6E 64 2E 6D 73 2D 70 6F 77 65 72 70 6F 69 /vnd.ms-powerpoi
000000c0: 6E 74 2C 20 61 70 70 6C 69 63 61 74 69 6F 6E 2F nt, application/
000000d0: 6D 73 77 6F 72 64 2C 20 61 70 70 6C 69 63 61 74 msword, applicat
000000e0: 69 6F 6E 2F 78 2D 73 68 6F 63 6B 77 61 76 65 2D ion/x-shockwave-
000000f0: 66 6C 61 73 68 2C 20 2A 2F 2A 0D 0A 41 63 63 65 flash, */*..Acce
***********: 70 74 2D 4C 61 6E 67 75 61 67 65 3A 20 7A 68 2D pt-Language: zh-
***********: 63 6E 0D 0A 55 73 65 72 2D 41 67 65 6E 74 3A 20 ..User-Agent:
***********: 4D 6F 7A 69 6C 6C 61 2F 34 2E 30 20 28 63 6F 6D Mozilla/4.0 (
***********: 70 61 74 69 62 6C 65 3B 20 4D 53 49 45 20 36 2E patible; MSIE 6.
***********: 30 3B 20 57 69 6E 64 6F 77 73 20 4E 54 20 35 2E 0; Windows NT 5.
***********: 32 3B 20 2E 4E 45 54 20 43 4C 52 20 31 2E 31 2E 2; .NET CLR 1.1.
***********: 34 33 32 32 29 0D 0A 48 6F 73 74 3A 20 77 77 77 4322)..Host:
***********: 2E 63 63 74 76 2E 63 6F 6D 2E 63 6E 0D 0A 50 72 .haozs.ne..Pr
***********: 6F 78 79 2D 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 oxy-Connection:
***********: 4B 65 65 70 2D 41 6C 69 76 65 0D 0A 0D 0A FD 00 Keep-Alive......
代理伺服器轉換後的數據:源IP(代理伺服器) 目IP(網站IP)
***********: 45 00 01 88 5D 4E 40 00 80 06 19 55 C0 A8 FD E8 E...][email protected]....
***********: CA 6C F9 CE 06 AC 00 50 7E 57 F3 C7 E1 41 2F 21 .l.....P~W...A/!
***********: 50 18 44 70 F9 DF 00 00 47 45 54 20 2F 20 48 54 P.Dp....GET / HT
***********: 54 50 2F 31 2E 30 0D 0A 41 63 63 65 70 74 3A 20 TP/1.0..Accept:
***********: 69 6D 61 67 65 2F 67 69 66 2C 20 69 6D 61 67 65 image/gif, image
***********: 2F 78 2D 78 62 69 74 6D 61 70 2C 20 69 6D 61 67 /x-xbitmap, imag
***********: 65 2F 6A 70 65 67 2C 20 69 6D 61 67 65 2F 70 6A e/jpeg, image/pj
***********: 70 65 67 2C 20 61 70 70 6C 69 63 61 74 69 6F 6E peg, application
***********: 2F 76 6E 64 2E 6D 73 2D 65 78 63 65 6C 2C 20 61 /vnd.ms-excel, a
***********: 70 70 6C 69 63 61 74 69 6F 6E 2F 76 6E 64 2E 6D pplication/vnd.m
000000a0: 73 2D 70 6F 77 65 72 70 6F 69 6E 74 2C 20 61 70 s-powerpoint, ap
000000b0: 70 6C 69 63 61 74 69 6F 6E 2F 6D 73 77 6F 72 64 plication/msword
000000c0: 2C 20 61 70 70 6C 69 63 61 74 69 6F 6E 2F 78 2D , application/x-
000000d0: 73 68 6F 63 6B 77 61 76 65 2D 66 6C 61 73 68 2C shockwave-flash,
000000e0: 20 2A 2F 2A 0D 0A 41 63 63 65 70 74 2D 4C 61 6E */*..Accept-Lan
000000f0: 67 75 61 67 65 3A 20 7A 68 2D 63 6E 0D 0A 55 73 guage: zh-..Us
***********: 65 72 2D 41 67 65 6E 74 3A 20 4D 6F 7A 69 6C 6C er-Agent: Mozill
***********: 61 2F 34 2E 30 20 28 63 6F 6D 70 61 74 69 62 6C a/4.0 (patibl
***********: 65 3B 20 4D 53 49 45 20 36 2E 30 3B 20 57 69 6E e; MSIE 6.0; Win
***********: 64 6F 77 73 20 4E 54 20 35 2E 32 3B 20 2E 4E 45 dows NT 5.2; .NE
***********: 54 20 43 4C 52 20 31 2E 31 2E 34 33 32 32 29 0D T CLR 1.1.4322).
***********: 0A 48 6F 73 74 3A 20 77 77 77 2E 63 63 74 76 2E .Host: cctv.
***********: 63 6F 6D 2E 63 6E 0D 0A 50 72 6F 78 79 2D 43 6F ..Proxy-Co
***********: 6E 6E 65 63 74 69 6F 6E 3A 20 4B 65 65 70 2D 41 nnection: Keep-A
***********: 6C 69 76 65 0D 0A 0D 0A FD 00 00 00 00 00 00 00 live............
通過非透明代理上網,上網主機向代理提交連接請求。在請求包里,包含了真正目標的URL,通過代理轉交。
ftp代理
代理伺服器是明文
..]ZY...][email protected][email protected]@...yr.........i.I6u[.....P....l..USER [email protected]...
代理
代理是明文
..]ZY...][email protected][email protected].*[email protected] haozs/ HTTP/1.0..Accept: */*..Accept-Language: zh-..Accept-Encoding: gzip, deflate..User-Agent: Mozilla/4.0 (patible; MSIE 5.01; Windows NT 5.0)..Host: mp3.yzu.e..Proxy-Connection: Keep-Alive..Pragma: no-cache..Cookie: ASPSESSIONIDQQCDACCS=CLCLPECCDCEKIGEOKFAFNDAG......-.....0......
socks5代理
socks5代理都不是明文,是數據。
202.204.8.10:21
CA CC 08 0A 00 15
如果使用的是域名,就是明文
..]ZY...][email protected]..>[email protected]%p:.P...;........vod.sjtu.e.....
qq 代理
當qq上線的時候會和騰迅的伺服器聯系
..]ZY...][email protected]@...m*...........8]...3.j.P....6..CONNECT 218.18.95.165:443 HTTP/1.1..Accept: */*..Content-Type: text/..Proxy-Connection: Keep-Alive..Content-length: 0................
qq socks5代理
當qq使用socks5代理的時候,不是明文,是數據
CA 60 AA A5
202.96.170.165:8000
(4) VLAN工作原理的研究
VLAN(Virtual Local Area Neork)就是虛擬區域網的意思。VLAN可以不考慮用戶的物理位置,而根據功能、應用等因素將用戶從邏輯上劃分為一個個功能相對獨立的工作組,每個用戶主機都連接在一個支持VLAN的交換機埠上並屬於一個VLAN。同一個VLAN中的成員都共享廣播,形成一個廣播域,而不同VLAN之間廣播信息是相互隔離的。這樣,將整個網路分割成多個不同的廣播域(VLAN)。一般來說,如果一個VLAN裡面的工作站發送一個廣播,那麼這個VLAN裡面所有的工作站都接收到這個廣播,但是交換機不會將廣播發送至其他VLAN上的任何一個埠。如果要將廣播發送到其它的VLAN埠,就要用到三層交換機。
『貳』 華碩路由的Open NAT有什麼用,怎麼用
大多數代理伺服器,防火牆將限制對介面的訪問。這些設定可能會導致在玩在線游戲時導致連接失敗。OpenNAT是一項新功能,它允許用戶打開埠,並允許通過預設的游戲設定檔通過防火牆連接到您的家庭網路。
如何設定OpenNAT?
1. 首先將電腦與路由器以網線連接,開啟瀏覽器,進入路由器登入介面
2. 輸入您的ASUS路由器賬號和密碼後,登錄進路由器
『叄』 Win中配置NAT伺服器
本文介紹了如何通過使用Windows Server 2003來配置網路地址轉換(NAT)伺服器。Windows Server 2003「路由和遠程訪問」服務包括NAT路由協議。如果將NAT路由協議安裝和配置在運行「路 由和遠程訪問」的伺服器上,則使用專用Internet協議(IP)地址的內部網路客戶端可以通過NAT伺服器的外部介面訪問Internet。
如何配置路由和遠程訪問NAT伺服器
當內部網路客戶端發送要連接Internet的請求時,NAT協議驅動程序會截取該請求,並將其轉發到目標Internet伺服器。所有請求看上去都像是來自NAT伺服器的外部IP地址。這樣就隱藏您的'內部IP地址配置。
配置「路由和遠程訪問」NAT伺服器:
在管理工具菜單中,選中「路由和遠程訪問」。
在「路由和遠程訪問」MMC中,展開您的伺服器名稱(其中伺服器名稱是您要配置伺服器的名稱,然後展開左窗格中的IP路由。
選中常規,然後選擇新建路由協議。
單擊NAT/基本防火牆復選框,將其選中,然後點確定。
右鍵單擊左窗格中的NAT/基本防火牆,然後單擊新建介面。
單擊表示內部網路介面的介面,然後單擊確定。
在「網路地址轉換」屬性中,單擊「專用介面連接到專用網路」,然後單擊確定。
右鍵單擊左窗格中的NAT/基本防火牆,然後點新建介面。
單擊表示外部網路介面的介面,然後點確定。
在「網路地址轉換」屬性中,單擊「公用介面連接到Internet」。
單擊「在此介面上啟用NAT」復選框,將其選中,點確定。
NAT伺服器可以自動為內部網路客戶端分配IP地址。如果您沒有已給內部網路上的客戶端分配了地址信息的DHCP伺服器,則可能會需要使用此功能。
如何配置路由和遠程訪問NAT伺服器以分配IP地址和執行代理DNS查詢NAT伺服器還可以代表NAT客戶端執行域名系統(DNS)查詢。「路由和遠程訪問」NAT伺服器對包括在客戶端請求中的Internet主機名進行解析,然後將該IP地址轉發給該客戶端。
要配置「路由和遠程訪問」NAT伺服器來分配IP地址並且代表內部網路客戶端執行代理DNS查詢,請按以下步驟操作:
右鍵單擊左窗格中的NAT/基本防火牆,然後單擊屬性。
單擊地址分配選項卡,然後單擊「使用DHCP自動分配IP地址」復選框,將其選中。
在IP地址框中,鍵入網路ID。
在掩碼框中,鍵入子網掩碼。
選擇名稱解析選項卡,然後單擊「使用域名系統(DNS)的客戶端」復選框,將其選中。
如果您使用請求撥號介面連接到Internet,請單擊「當名稱需要解析時連接到公用網路」復選框,將其選中。
在請求撥號介面框中,選中要撥號的介面。
選擇應用,然後單擊確定。
備註:完成這些基本配置步驟之後,內部網路客戶端就可以訪問Internet上的伺服器了。
如何配置基於Windows Server 2003的計算機以使用NAT伺服器
單擊開始,指向控制面板,指向網路連接,然後單擊本地連接。
單擊屬性。
單擊Internet協議(TCP/IP)。
單擊屬性。
在「默認網關」框中,鍵入NAT伺服器的內部IP地址。
備註:如果計算機從「動態主機配置協議」(DHCP)伺服器接收它的IP地址,請單擊高級,單擊IP設置選項卡,單擊網關下的添加,鍵入NAT伺服器的內部IP地址,單擊添加,單擊確定,然後繼續進行第6步。
單擊確定,單擊確定,然後單擊關閉。
『肆』 NAT將私網IP轉換為公網IP的過程是哪些
隨著IPv6時代的到來,我也一直懷疑,是不是還旁州有必要再去學習NAT技術——因為網路的資源不再如IPv4時代匱乏,而NAT技術正是為解決IP地址的緊缺而存在的,如此,NAT便沒有存在的必要了。
但是,隨著拿慧這篇文章的翻譯,我的懷疑慢慢變成慶幸,漸而又變為肯定,通過翻譯所學到的東西,不再僅僅是翻譯第一手資料帶來的成就感,更多的是通過翻譯,去領悟技術前輩們的智慧與經驗,也通過翻譯,養成自己從第一手資料獲得信息的習慣,從而將視野放得更寬,讓理解更為透徹——至少,很多東運敏蔽西都是要經過仔細斟酌才真正轉化為自己思想的一部分的。正是如此,我才堅定的要把這篇文章翻譯完,也如之前所提到的,如果時間允許的話,我會用C#來寫一些例子,讓大家更好的理解NAT技術,掌握NAT技術(主要涉及到即時通訊、文件對等傳輸和語音應用三個方面)。
這篇文章主要是介紹一下「代理」機制的起因以及給P2P應用帶來的不便,不需要任何基礎知識:)
1. Introction
1、簡介
關鍵詞:
middleboxe(s) —— 我翻譯成「代理」,也許有更好的翻譯
host —— 我翻譯成「主機」,希望大家不要理解成伺服器了,主機就是一台普通的終端機
Present-day Internet has seen ubiquitous deployment of "middleboxes" such as network address translators(NAT), driven primarily by the ongoing depletion of the IPv4 address space. The asymmetric addressing and connectivity regimes established by these middleboxes, however, have created unique problems for peer-to-peer (P2P) applications and protocols, such as teleconferencing and multiplayer on-line gaming. These issues are likely to persist even into the IPv6 world, where NAT is often used as an IPv4 compatibility mechanism [NAT-PT], and firewalls will still be commonplace even after NAT is no longer required.
在當今的Internet中,普遍存在使用「代理」設備來進行網路地址轉換(NAT),導致這種現象的原因是 IPV4 地址空間的資源耗盡危機。雖然不對稱 asymmetric 的地址分配和連通性制度已經在代理中被定義,但是卻給端對端應用程序和協議制定造成了一些特殊的問題。像電話會議和多媒體網路游戲。這些問題即使在IPV6世界中還是會存在,因為NAT作為IPV4的一種兼容性機制經常被使用[NAT-PT],並且防火牆將仍然將普遍存在,即使不再需要NAT技術。
Currently deployed middleboxes are designed primarily around the client/server paradigm, in which relatively anonymous client machines actively initiate connections to well-connected servers having stable IP addresses and DNS names.
Most middleboxes implement an asymmetric communication model in which hosts on the private internal network can initiate outgoing connections to hosts on the public network, but external hosts cannot initiate connections to internal hosts except as specifically configured by the middlebox's administrator. In the common case of NAPT, a client on the internal network does not have a unique IP address on the public Internet, but instead must share a single public IP address, managed by the NAPT, with other hosts on the same private network.The anonymity and inaccessibility of the internal hosts behind a middlebox is not a problem for client software such as web browsers, which only need to initiate outgoing connections. This inaccessibility is sometimes seen as a privacy benefit.
當前使用的「代理」技術主要是為 客戶端/服務端 C/S 結構設計的,為了實現那些需要連接但是又沒有固定IP地址的客戶端能夠連接到一台配置好的擁有固定IP和DNS域名的伺服器。
大多數的「代理」使用一種 asymmetric 通信模型,即 私網(區域網) 的主機能發起一個「外出」連接去連接公網上的主機。 但是公網上的主機卻無法發送信息給私網上的主機(除非對「代理」進行特殊的配置),NAPT(網路地址埠轉換)的普通情況是,一個私網客戶端不需要一個公網的固定的IP地址,但是必須要共享一個由NAPT控制的公網的固定IP地址(當然這個NAPT是處於同一個私網內部的)。這樣的話,這些匿名的並且看起來難以觸及的藏在NAT之後的內網主機對於像 Web瀏覽器 這種軟體來說就不是一個問題,因為內網的主機只需要發起向外部的連接就可以了。這樣一來,無法觸及也還是有他的優點的——那就是具有保密性。
In the peer-to-peer paradigm, however, Internet hosts that would normally be considered "clients" need to establish communication sessions directly with each other. The initiator and the responder might lie behind different middleboxes with neither endpoint having any permanent IP address or other form of public network presence. A common on-line gaming architecture, for example, is for the participating application hosts to contact a well-known server for initialization and administration purposes. Subsequent to this, the hosts establish direct connections with each other for fast and efficient propagation of updates ring game play.
Similarly, a file sharing application might contact a well-known server for resource discovery or searching, but establish direct connections with peer hosts for data transfer. Middleboxes create problems for peer-to-peer connections because hosts behind a middlebox normally have no permanently usable public ports on the Internet to which incoming TCP or UDP connections from other peers can be directed.
RFC 3235 [NAT-APPL] briefly addresses this issue, but does not offer any general solutions.
然而,在P2P的應用中,Internet上的「客戶機」之間是需要建立一個通信會話直連的。邀請者和響應者也許會處於不同的NAT之後,也許他們都沒有固定IP或者即使有也不是公網的IP地址。舉例來說,在一個普通的網路游戲體系結構中,都是通過客戶端向一個具有公網固定IP的伺服器發起申請進行初始化並通過驗證的。同時,客戶端之間也要建立直連,才使網路間傳輸的速度加快,保證數據即時更新(不然搶不到裝備啊,呵呵)。
同樣的,一個文件共享應用程序也必須通過到一個伺服器上去查找它想要的資源,然後再到擁有這個數據的主機上去下載(BT網站,走了一個中介),「代理」造成了很多P2P直連的問題,因為藏在「代理」之後的的主機通常沒有固定的埠來使其他的客戶端發起的TCP或UDP連接能夠最終到達。
RFC 3235[NAT-APPL] 簡要的提到了這個問題,但是沒有給出任何的解決方案。
In this document we address the P2P/middlebox problem in two ways. First, we summarize known methods by which P2P applications can work around the presence of middleboxes. Second, we provide a set of application design guidelines based on these practices to make P2P applications operate more robustly over currently-deployed middleboxes. Further, we provide design guidelines for future middleboxes to allow them to support P2P applications more effectively. Our focus is to enable immediate and wide deployment of P2P applications requiring to traverse middleboxes.
在這篇文章中,我們用兩種方式討論 P2P/代理 的問題。首先,概要的講敘已有的P2P應用程序能夠在現有的代理機制中的工作原理。然後,我們提供一組應用程序設計指南,基於已有的實踐,在現有的配置好的代理上,來使得P2P應用程序操作更加有條理。最後,我們提供了設計指南,為以後的代理機制能夠更方便支持P2P應用程序。討論的焦點是如何 直接的、廣泛的 配置那些需要經過「代理」的P2P應用程序。
Peer-to-Peer (P2P) communication across middleboxes(術語篇)
2. Terminology
2. 術語
In this section we first summarize some middlebox terms. We focus hereon the two kinds of middleboxes that commonly cause problems for P2P applications.
在這一章節中,首先概要的介紹一下「代理」技術的一些術語。然後集中討論兩種造成P2P應用問題的代理機制。
Firewall
A firewall restricts communication between a private internal network and the public Internet, typically by dropping packets that are deemed unauthorized. A firewall examines but does not modify the IP address and TCP/UDP port information in packets crossing the boundary.
防火牆
防火牆限制了私網與公網的通信,它主要是將(防火牆)認為未經授權的的包丟棄,防火牆只是檢驗包的數據,並不修改數據包中的IP地址和TCP/UDP埠信息。
Network Address Translator (NAT)
A network address translator not only examines but also modifies the header information in packets flowing across the boundary, allowing many hosts behind the NAT to share the use of a smaller number of public IP addresses (often one). Network address translators in turn have two main varieties:
網路地址轉換(NAT)
當有數據包通過時,網路地址轉換器不僅檢查包的信息,還要將包頭中的IP地址和埠信息進行修改。以使得處於NAT之後的機器共享幾個僅有的公網IP地址(通常是一個)。網路地址轉換器主要有兩種類型:
Basic NAT
A Basic NAT maps an internal host's private IP address to a public IP address without changing the TCP/UDP port numbers in packets crossing the boundary. Basic NAT is generally only useful when the NAT has a pool of public IP addresses from which to make address bindings on behalf of internal hosts.
基礎NAT
基礎NAT 將私網主機的私有IP地址轉換成公網IP地址,但並不將TCP/UDP埠信息進行轉換。基礎NAT一般用在當NAT擁有很多公網IP地址的時候,它將公網IP地址與內部主機進行綁定,使得外部可以用公網IP地址訪問內部主機。(譯者註:實際上是只將IP轉換,192.168.0.23 <-> 210.42.106.35,這與直接設置IP地址為公網IP還是有一定區別的,特別是對於企業來說,外部的信息都要經過統一防火牆才能到達內部,但是內部主機又可以使用公網IP)
Network Address/Port Translator (NAPT)
By far the most common, a Network Address/Port Translator examines and modifies both the IP address and the TCP/UDP port number fields of packets crossing the boundary, allowing multiple internal hosts to share a single public IP address simultaneously.
Refer to [NAT-TRAD] and [NAT-TERM] for more general information on NAT taxonomy and terminology. Additional terms that further classify NAPT are defined in more recent work [STUN]. When an internal host opens an outgoing TCP or UDP session through a network address/port translator, the NAPT assigns the session a public IP address and port number so that subsequent response packets from the external endpoint can be received by the NAPT, translated, and forwarded to the internal host. The effect is that the NAPT establishes a port binding between (private IP address, private port number) and (public IP address, public port number).
The port binding defines the address translation the NAPT will perform for the ration of the session. An issue of relevance to P2P applications is how the NAT behaves when an internal host initiates multiple simultaneous sessions from a single (private IP, private port) pair to multiple distinct endpoints on the external network.
網路地址和埠轉換 (NAPT)
這是最普遍的情況,網路地址/埠轉換器檢查、修改包的IP地址和TCP/UDP埠信息,這樣,更多的內部主機就可以同時使用一個公網IP地址。
請參考[NAT-TRAD]和[NAT-TERM]兩個文檔了解更多的NAT分類和術語信息。另外,關於NAPT的分類和術語,[STUN]在最近做了更多的定義。當一個內部網主機通過NAT打開一個「外出」的TCP或UDP會話時,NAPT分配給這個會話一個公網IP和埠,用來接收外網的響應的數據包,並經過轉換通知內部網的主機。這樣做的效果是,NAPT在 [私有IP:私有埠] 和[公網IP:公網埠]之間建立了一個埠綁定。
埠綁定指定了NAPT將在這個會話的生存期內進行地址轉換任務。這中間存在一個這樣的問題,如果P2P應用程序從內部網路的一個[私有IP地址:埠]對同時發出多條會話給不同的外網主機,那麼NAT會怎樣處理呢?請看以下幾種方案。
Cone NAT
After establishing a port binding between a (private IP, private port) tuple and a (public IP, public port) tuple, a cone NAT will re-use this port binding for subsequent sessions the application may initiate from the same private IP address and port number, for as long as at least one session using the port binding remains active.
錐形NAT
(譯者註:為什麼叫做錐形呢?請看以下圖形,終端和外部伺服器,都通過NAT分派的這個綁定地址對來傳送信息,就象一個漏斗一樣,篩選並傳遞信息)
當建立了一個 [私有IP:埠]-[公網IP:埠] 埠綁定之後,對於來自同一個[私有IP:埠]會話,錐形NAT伺服器允許發起會話的應用程序 重復使用這個埠綁定,一直到這個會話結束才解除(埠綁定)。
For example, suppose Client A in the diagram below initiates two simultaneous outgoing sessions through a cone NAT, from the same internal endpoint (10.0.0.1:1234) to two different external servers, S1 and S2. The cone NAT assigns just one public endpoint tuple(元組), 155.99.25.11:62000, to both of these sessions, ensuring that the "identity" of the client's port is maintained across address translation. Since Basic NATs and firewalls do not modify port numbers as packets flow across the middlebox, these types of middleboxes can be viewed as a degenerate form of Cone NAT.
例如,假設 Client A(IP地址信息如上圖所示)通過一個 錐形NAT 同時發起兩個外出的連接,它使用同一個內部埠(10.0.0.1:1234)給公網的兩台不同的伺服器,S1和S2。錐形NAT 只分配一個公網IP和埠(155.99.25.11:62000)給這個兩個會話,通過地址轉換可以 確保 Client使用埠的「同一性」(譯者註:即這個Client只使用這個埠)。而基礎NATs和防火牆卻不能修改經過的數據包埠號,它們可以看作是錐形NAT的精簡版本。
Symmetric NAT
A symmetric NAT, in contrast, does not maintain a consistent port binding between (private IP, private port) and (public IP, public port) across all sessions.
Instead, it assigns a new public port to each new session. For example, suppose Client A initiates two outgoing sessions from the same port as above, one with S1 and one with S2. A symmetric NAT might allocate the public endpoint 155.99.25.11:62000 to session 1, and then allocate a different public endpoint 155.99.25.11:62001, when the application initiates session 2. The NAT is able to differentiate between the two sessions for translation purposes because the external endpoints involved in the sessions (those of S1 and S2) differ, even as the endpoint identity of the client application is lost across the address translation boundary.
對稱NAT
對稱NAT,與Cone NAT是大不相同的,並不對會話進行埠綁定,而是分配一個全新的 公網埠 給每一個新的會話。
還是上面那個例子:如果 Client A (10.0.0.1:1234)同時發起兩個 "外出" 會話,分別發往S1和S2。對稱Nat會分配公共地址155.99.25.11:62000給Session1,然後分配另一個不同的公共地址155.99.25.11:62001給Session2。對稱Nat能夠區別兩個不同的會話並進行地址轉換,因為在 Session1 和 Session2中的外部地址是不同的,正是因為這樣,Client端的應用程序就迷失在這個地址轉換邊界線了,因為這個應用程序每發出一個會話都會使用一個新的埠,無法保障只使用同一個埠了。
The issue of cone versus symmetric NAT behavior applies equally to TCP and UDP traffic. Cone NAT is further classified according to how liberally the NAT accepts incoming traffic directed to an already-established (publicIP, public port) pair. This classification generally applies only to UDP traffic, since NATs and firewalls reject incoming TCP connection attempts unconditionally unless specifically configured to do otherwise.
在TCP和UDP通信中, (到底是使用同一個埠,還是分配不同的埠給同一個應用程序),錐形NAT和對稱NAT各有各的理由。當然錐形NAT在根據如何公平地將NAT接受的連接直達一個已創建的地址對上有更多的分類。這個分類一般應用在Udp通信(而不是Tcp通信上),因為NATs和防火牆阻止了試圖無條件傳入的TCP連接,除非明確設置NAT不這樣做。這些分類如下:
Full Cone NAT
After establishing a public/private port binding for a new outgoing session, a full cone NAT will subsequently accept incoming traffic to the corresponding public port from ANY external endpoint on the public network. Full cone NAT is also sometimes called "promiscuous" NAT.
全雙工錐形NAT
當內部主機發出一個「外出」的連接會話,就會創建了一個 公網/私網 地址,一旦這個地址對被創建,全雙工錐形NAT會接收隨後任何外部埠傳入這個公共埠地址的通信。因此,全雙工錐形NAT有時候又被稱為"混雜"NAT。
Restricted Cone NAT
A restricted cone NAT only forwards an incoming packet directed to a public port if its external (source) IP address matches the address of a node to which the internal host has previously sent one or more outgoing packets. A restricted cone NAT effectively refines the firewall principle of rejecting unsolicited incoming traffic, by restricting incoming traffic to a set of "known" external IP addresses.
受限制的錐形NAT
受限制的錐形NAT會對傳入的數據包進行篩選,當內部主機發出「外出」的會話時,NAT會記錄這個外部主機的IP地址信息,所以,也只有這些有記錄的外部IP地址,能夠將信息傳入到NAT內部,受限制的錐形NAT 有效的給防火牆提煉了篩選包的原則——即限定只給那些已知的外部地址「傳入」信息到NAT內部。
Port-Restricted Cone NAT
A port-restricted cone NAT, in turn, only forwards an incoming packet if its external IP address AND port number match those of an external endpoint to which the internal host has previously sent outgoing packets. A port-restricted cone NAT provides internal nodes the same level of protection against unsolicited incoming traffic that a symmetric NAT does, while maintaining a private port's identity across translation.
埠受限制的Cone NAT
埠受限制的錐形NAT,與受限制的錐形NAT不同的是:它同時記錄了外部主機的IP地址和埠信息,埠受限制的錐形NAT給內部節點提供了同一級別的保護,在維持埠「同一性」過程中,將會丟棄對稱NAT傳回的信息。
Finally, in this document we define new terms for classifying the P2P-relevant behavior of middleboxes:
最後,在這篇文檔里我們將定義一組新的術語 ,以便更好的對P2P代理相關的行為進行分類。
P2P應用程序
P2P應用程序是指,在已有的一個公共伺服器的基礎上,並分別利用自己的私有地址或者公有地址(或者兩者兼備)來建立一個端到端的會話通信。
P2P-Application
P2P-application as used in this document is an application in which each P2P participant registers with a public registration server, and subsequently uses either its private endpoint, or public endpoint, or both, to establish peering sessions.
P2P-Middlebox
A P2P-Middlebox is middlebox that permits the traversal of P2P applications.
P2P代理
P2P代理是一個允許 P2P應用程序進行通信的代理機制
P2P-firewall
A P2P-firewall is a P2P-Middlebox that provides firewall functionality but performs no address translation.
P2P防火牆
P2P防火牆是一個提供了防火牆的功能的P2P代理,但是不進行地址轉換.
P2P-NAT
A P2P-NAT is a P2P-Middlebox that provides NAT functionality, and may also provide firewall functionality. At minimum, a P2P-Middlebox must implement Cone NAT behavior for UDP traffic, allowing applications to establish robust P2P connectivity using the UDP hole punching technique.
P2P-NAT
P2P-NAT 是一個 P2P代理,提供了NAT的功能,也提供了防火牆的功能,一個最簡的P2P代理必須具有 錐形NAT對Udp通信支持的功能,並允許應用程序利用Udp打洞技術建立強健的P2P連接。
Loopback translation
When a host in the private domain of a NAT device attempts to connect with another host behind the same NAT device using the public address of the host, the NAT device performs the equivalent of a "Twice-nat" translation on the packet as follows. The originating host's private endpoint is translated into its assigned public endpoint, and the target host's public endpoint is translated into its private endpoint, before the packet is forwarded to the target host. We refer the above translation performed by a NAT device as "Loopback translation".
回環轉換
當NAT的私網內部機器想通過公共地址來訪問同一台區域網內的機器的時,NAT設備等價於做了兩次NAT的事情,在包到達目標機器之前,先將私有地址轉換為公網地址,然後再將公網地址轉換回私有地址。我們把具有上敘轉換功能的NAT設備叫做「回環轉換」設備。
『伍』 浜ゆ崲鏈哄備綍瀵筃AT榪涜岄槻鑼
涓錛 浠g悊鎶鏈綆浠
浠g悊鎶鏈鏄鎸囩綉緇滀腑涓嶅叿澶囧悎娉旾P鍦板潃鐨勮$畻鏈洪氳繃涓鍙板叿鏈夊悎娉旾P鍦板潃鐨勮懼囷紙璁$畻鏈烘垨鑰呰礬鐢卞櫒錛夋潵瀵圭綉緇滆繘琛屾e父璁塊棶鐨勬妧鏈銆
浜岋紟 浠g悊鏈嶅姟鍣ㄥ疄鐜版柟寮
1錛 NAT浠g悊鏂瑰紡銆
涓嬮潰鏄閫氳繃NAT榪涜屼唬鐞嗙殑緗戠粶紺烘剰鍥撅細
鍦ㄤ笂鍥句腑錛屼笅闈㈢殑3鍙皃c鏈洪兘涓嶅叿澶囪繍钀ュ晢鎻愪緵鐨勫悎娉旾P鍦板潃錛屼絾鏄鍥犱負璺鐢卞櫒涓庤繍钀ュ晢緗戠粶榪炴帴絝鍙e叿鏈夊悎娉曠殑IP鍦板潃錛屽洜姝ゆ潵鑷涓嬮潰3鍙癙C鐨勬暟鎹鐨勬簮IP閮藉皢琚杞鎹涓哄悎娉曠殑IP鍦板潃鍚庡彂閫佺粰榪愯惀鍟嗘彁渚涚殑緗戠粶錛屽逛簬榪愯惀鍟嗙殑緗戠粶璁懼囨潵璇達紝鏄涓嶇煡閬撹繖浜涙暟鎹鏄鏉ヨ嚜澶氬彴PC銆佽屽彧浼氳や負鏄鏉ヨ嚜涓鍙板叿澶囧悎娉旾P鍦板潃鐨凱C錛屼粠鑰屼細灝嗚繖浜涙暟鎹榪涜屾e父鐨勮漿鍙戱紱褰撴潵鑷浜掕仈緗戠殑鏁版嵁鍒拌揪榪愯惀鍟嗙綉緇滄椂錛岃繍钀ュ晢緗戠粶灝嗘g『鐨勬妸鏁版嵁鍙戦佺粰璺鐢卞櫒錛屽綋璇ヨ礬鐢卞櫒鎺ユ敹鍒拌繖鏍風殑鏁版嵁鏃訛紝浼氭牴鎹甆AT鐨勮漿鍙戣〃欏規潵灝嗘暟鎹杞鍙戠粰涓嬮潰榪炴帴鐨勫叿浣撶殑鐗瑰畾PC錛屼粠鑰岃繖浜涗笉鍏峰囧悎娉旾P鍦板潃鐨凱C鏈哄彲浠ユe父鐨勪嬌鐢ㄤ簰鑱旂綉璧勬簮銆
涓鑸鏉ヨ達紝璺鐢卞櫒閮芥敮鎸丯AT鎶鏈錛屽洜姝よ礬鐢卞櫒鍙浠ヤ綔涓轟唬鐞嗘湇鍔″櫒浣跨敤錛涘彟澶栵紝windows鎿嶄綔緋葷粺鎻愪緵鐨剗nternet榪炴帴鍏變韓鍔熻兘涔熸槸閫氳繃NAT瀹炵幇鐨勶紝鍥犳ゅ畨瑁呬簡windows鎿嶄綔緋葷粺鐨凱C鏈哄傛灉鍏峰囧氫釜緗戝崱錛屼篃鍙浠ヤ綔涓轟唬鐞嗘湇鍔″櫒浣跨敤銆
2錛 搴旂敤紼嬪簭浠g悊鏂瑰紡
涓婂浘涓錛屼笅闈㈢殑3鍙癙C鏈轟笉鍏峰囧悎娉曠殑IP鍦板潃錛孭C-A鍏鋒湁鍚堟硶鐨処P鍦板潃銆佸苟涓斿畨瑁呬簡浠g悊杞浠躲傚綋涓嬮潰鐨3鍙癙C闇瑕佽塊棶浜掕仈緗戞椂錛屽畠浠灝嗚ヨ鋒眰鍙戦佺粰PC-A鑰屼笉鏄灝嗚鋒眰鍙戦佺粰鏈緇堢洰鐨勭珯鐐癸紝鐒跺悗鐢盤C-A鍚戠洰鐨勭珯鐐瑰彂閫佽鋒眰錛屽綋PC-A鏀跺埌鏉ヨ嚜浜掕仈緗戠殑搴旂瓟鍚庯紝PC-A鍐嶅皢鎺ユ敹鍒扮殑鏁版嵁鍙戦佺粰涓嬮潰鐨凱C鏈恆
榪欑嶆柟寮忎笌NAT鏂瑰紡鐨勫尯鍒鍦ㄤ簬錛歂AT鍙鏄灝嗘暟鎹鎶ョ殑婧怚P鍦板潃榪涜屾浛鎹錛屽疄闄呬笂榪樻槸涓嶅叿澶囧悎娉旾P鍦板潃鐨凱C涓庣洰鐨勭珯鐐硅繘琛岄氫俊錛涜屽簲鐢ㄧ▼搴忎唬鐞嗚蔣浠剁殑鏂瑰紡鍒欐槸涓嶅叿澶囧悎娉旾P鍦板潃鐨凱C鍙涓庝唬鐞嗘湇鍔″櫒閫氫俊錛岀敱浠g悊鏈嶅姟鍣ㄤ笌鐩鐨勭珯鐐硅繘琛岄氫俊錛屽苟灝嗙粨鏋滆繑鍥炵粰涓嶅叿澶囧悎娉旾P鍦板潃鐨凱C銆
浣跨敤浠g悊杞浠惰繘琛屼唬鐞嗙殑緙虹偣錛氬洜涓轟嬌鐢ㄤ唬鐞嗚蔣浠舵槸閽堝瑰簲鐢ㄥ眰鐨勫崗璁榪涜屽紑鍙戠殑錛屾墍浠ラ渶瑕侀拡瀵逛笉鍚岀殑搴旂敤紼嬪簭寮鍙戜唬鐞嗚蔣浠訛紝鎵浠ラ檺鍒跺氨姣旇緝澶氥傛瘮濡傦紝濡傛灉鍙鏀鎸乭ttp浠g悊錛岄偅涔堜笉鍏峰囧悎娉旾P鍦板潃鐨凱C灝卞彧鑳介氳繃浠g悊鏈嶅姟鍣ㄨ繘琛寃eb嫻忚堬紝涓嶈兘浣跨敤ftp榪涜屼笅杞斤紝涔熶笉鑳界帺涓浜涚綉緇滄父鎴忋
鍥犳わ紝鐩鍓嶄嬌鐢ㄦ渶澶氱殑浠g悊鏂瑰紡榪樻槸NAT浠g悊鏂瑰紡銆
鍦ㄥ疄闄呯敓媧諱腑錛屾槸緗戠粶榪愯惀鍟嗘瀯寤虹綉緇滄潵瀵瑰跺涵鐢ㄦ埛鎻愪緵緗戠粶鎺ュ叆鏈嶅姟銆佸苟瀵規瘡涓瀹跺涵鐢ㄦ埛鏀跺彇鏈嶅姟璐圭敤錛岀洰鍓嶄嬌鐢ㄦ渶澶氱殑璁¤垂鏂瑰紡鏄閽堝規椂闀胯繘琛岃¤垂錛堟瘮濡傚寘鏈堝埗錛夈備絾鏄鐢變簬浠g悊鎶鏈鐨勫瓨鍦錛岀洰鍓嶈繖縐嶇幇璞′篃闈炲父鏅閬嶏細鍗充竴涓瀹跺涵鐢ㄦ埛鐢寵峰紑閫氬藉害涓氬姟銆佷嬌鐢ㄤ唬鐞嗘妧鏈璁╁叾瀹冨跺涵鐢ㄦ埛鐨凱C涔熷彲浠ユe父璁塊棶緗戠粶銆
榪欏氨鎹熷充簡緗戠粶榪愯惀鍟嗙殑鍒╃泭錛氬嵆榪愯惀鍟嗗彧鏀跺叆浜嗕竴涓瀹跺涵鐢ㄦ埛鐨勮垂鐢ㄨ屽瑰氫釜瀹跺涵鐢ㄦ埛鎻愪緵浜嗙綉緇滄帴鍏ユ湇鍔°傛墍浠ュ湪榪欑嶅満鍚堜笅灝遍渶瑕佸逛唬鐞嗚繘琛岄槻鑼冦
鍥涳紟 浜ゆ崲鏈洪槻浠g悊鏂規堜粙緇
1錛 閲囩敤涓婅仈鍊熷彛鎻掑崱榪涜孨AT浠g悊鐨勯勯槻
鍦2灞備氦鎹㈡満鐨勪笂鑱旂櫨鍏嗘帴鍙d笂娣誨姞鍏鋒湁杈ㄥ埆鏁版嵁鏄鍚︾粡榪嘚AT澶勭悊鐨勬帴鍙f彃鍗★紝浣跨敤榪欑嶆彃鍗″悗錛屽嚒鏄鍗沖皢浠庤繖涓鎻掑崱鎺ュ彛鍙戝嚭鐨勬暟鎹濡傛灉鏄緇忚繃NAT澶勭悊鐨勩侀偅涔堣繖縐嶆暟鎹灝嗕細琚涓㈠純鎺夛紱鍥犳わ紝濡傛灉鍦2灞備氦鎹㈡満涓婁嬌鐢ㄩ槻NAT浠g悊鍗★紝騫舵妸鍗′笂鐨勬帴鍙d綔涓轟笂鑱旀帴鍙o紝鍗沖彲浠ヨ繃婊ゆ帀NAT澶勭悊榪囩殑鏁版嵁銆
浣跨敤闃蹭唬鐞嗗崱鍚庣殑緗戠粶搴旂敤鎷撴墤錛
鍦ㄤ笂鍥句腑錛屽湪S2000M浜ゆ崲鏈轟笂鎻掑叆闃蹭唬鐞嗘帴鍙e崱錛屽苟浠ラ槻浠g悊鍗′笂鐨勬帴鍙d綔涓篠2000M浜ゆ崲鏈虹殑涓婅仈鎺ュ彛錛涘傛灉鏈夋暟鎹鏄緇忚繃NAT澶勭悊鐨勶紝閭d箞褰撹繖涓鏁版嵁灝嗕粠涓婅仈鎺ュ彛鍙戦佸嚭鍘誨墠灝卞皢琚闃蹭唬鐞嗗崱涓㈠純鎺夛紝榪欐牱鐨勬暟鎹涓嶈兘瓚婅繃S2000M榪涘叆榪愯惀鍟嗙殑緗戠粶銆佷粠鑰屼笉鑳借塊棶浜掕仈緗戙
2錛 瀵瑰簲鐢ㄧ▼搴忎唬鐞嗙殑棰勯槻
榪欑嶆柟寮忎笅浠g悊鏈嶅姟鍣ㄤ負鍏舵墍鏈嶅姟鐨勯潪娉昉C鍙戝嚭鐨勪唬鐞嗘暟鎹 鍏跺疄涓庝唬鐞嗘湇鍔″櫒鏈韜涓誨姩涓庡栫晫鐨勯氫俊鏄娌℃湁鍖哄埆鐨勶紝鍥犳や笉鑳藉湪緗戠粶涓澧炲姞鐗瑰畾榪囨護璁懼囩殑鏂瑰紡榪涜屾暟鎹榪囨護銆
鍥犳ゅ彲浠ュ湪浜ゆ崲鏈轟笂瀹夎呴槻浠g悊杞浠舵湇鍔″櫒紼嬪簭錛屽湪鎺ュ叆鐢ㄦ埛鐨凱C鏈轟笂瀹夎呴槻浠g悊杞浠跺㈡埛絝紼嬪簭鐨勬柟寮忓疄鐜般傚畨瑁呭湪鐢ㄦ埛PC鏈轟笂鐨勯槻浠g悊瀹㈡埛絝紼嬪簭鐢ㄤ簬鐩戞帶鐢ㄦ埛鐨凱C鏄鍚﹁繍琛屼簡浠g悊杞浠訛紝濡傛灉榪愯屼簡浠g悊杞浠跺垯涓嶅厑璁歌PC鏈哄悜澶栧彂閫佹暟鎹錛涘悓鏃訛紝璇ラ槻浠g悊杞浠跺㈡埛絝紼嬪簭榪樺叿鏈変笌浜ゆ崲鏈轟笂鐨勯槻浠g悊紼嬪簭浜掗氱殑鍔熻兘錛岀敤浜庤╀氦鎹㈡満紜淇濈敤鎴風殑PC涓婅繍琛屼簡闃蹭唬鐞嗗㈡埛絝紼嬪簭錛屽傛灉鐢ㄦ埛鐨凱C娌℃湁榪愯岄槻浠g悊瀹㈡埛絝紼嬪簭錛岄偅涔堜氦鎹㈡満涓嶆帴鍙楄繖鍙癙C鏈哄彂閫佽繃鏉ョ殑鏁版嵁錛屼粠鑰屽彲浠ュ疄鐜板己鍒剁敤鎴蜂竴瀹氳佽繍琛岄槻浠g悊紼嬪簭鐨勭洰鐨勩
浜旓紟 緇撴潫璇
浣滀負瀹氫綅浜庝負緗戠粶榪愯惀鍟嗘彁渚涘悇縐嶇綉緇滆懼囩殑鍘傚晢錛