2010-05-23 81 views
3

只是對NAT的特定場景感到好奇。假設我們有4臺計算機在NAT下共享全局IP地址。我知道NAT盒保留一個內部記錄以知道要將請求轉發給哪臺計算機。但是讓我們來說說#2計算機我正在嘗試下載一個文件。假設在計算機#1,#3和#4上,我只是正常瀏覽網頁。當瀏覽器啓動一個TCP連接來獲取該文件時,它如何知道要將其提供給哪臺計算機?我的意思是,四臺電腦中的每臺電腦都使用80端口來瀏覽網頁? NAT記錄如何區分哪個「端口80」屬於哪臺計算機?關於網絡地址轉換(NAT)?

回答

5

「http 80端口」的概念不起作用。當計算機瀏覽網頁時,只有服務器使用端口80,而客戶端將使用隨機端口號。服務器回覆一個目標端口,由客戶端提供,附加。 80端口僅用於敲擊Web服務器的門。

NAT所做的工作就是將所有這4臺計算機向外傳輸數據包,以便其源端口不會重複。當NAT收到一個數據包時,它會檢查連接的目標端口是否可以被翻譯,並且如果可能的話將它翻譯成局域網。

+0

非常感謝。 – Rudi 2010-05-23 18:17:58

8

互聯網上每個唯一的TCP連接由四個數字組成 - {source IP, source port, destination IP, destination port}

NAT網關(GW)將其轉換爲{GW public IP, GW-mapped port, destination IP, destination port},以便外部路由器知道將數據包返回給此特定網關。它還沿着{GW-mapped port -> {source IP, source port}}這些線路保持這些映射端口映射回源IP和端口號,這使得它能夠找出將響應分組發送到哪個內部機器。

+0

非常感謝。 – Rudi 2010-05-23 18:17:11

+0

我有一個問題,如果服務器在他身邊使用NAT會怎麼樣?數據包到達後,目標端口是否會被某些東西取代?例如,當我們與服務器公共端口80通信時,服務器端的實際端口是否可以是其他數字?如果是,那麼這是否意味着服務器程序員必須確保端口80不用於其他任何事情? – mercury0114 2016-04-10 19:24:42

+0

NAT對於應用程序是透明的,所以服務器開發人員只會關心他的進程正在監聽的端口號。 – 2016-04-10 21:00:15