只是對NAT的特定場景感到好奇。假設我們有4臺計算機在NAT下共享全局IP地址。我知道NAT盒保留一個內部記錄以知道要將請求轉發給哪臺計算機。但是讓我們來說說#2計算機我正在嘗試下載一個文件。假設在計算機#1,#3和#4上,我只是正常瀏覽網頁。當瀏覽器啓動一個TCP連接來獲取該文件時,它如何知道要將其提供給哪臺計算機?我的意思是,四臺電腦中的每臺電腦都使用80端口來瀏覽網頁? NAT記錄如何區分哪個「端口80」屬於哪臺計算機?關於網絡地址轉換(NAT)?
回答
「http 80端口」的概念不起作用。當計算機瀏覽網頁時,只有服務器使用端口80,而客戶端將使用隨機端口號。服務器回覆一個目標端口,由客戶端提供,附加。 80端口僅用於敲擊Web服務器的門。
NAT所做的工作就是將所有這4臺計算機向外傳輸數據包,以便其源端口不會重複。當NAT收到一個數據包時,它會檢查連接的目標端口是否可以被翻譯,並且如果可能的話將它翻譯成局域網。
互聯網上每個唯一的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和端口號,這使得它能夠找出將響應分組發送到哪個內部機器。
非常感謝。 – Rudi 2010-05-23 18:17:11
我有一個問題,如果服務器在他身邊使用NAT會怎麼樣?數據包到達後,目標端口是否會被某些東西取代?例如,當我們與服務器公共端口80通信時,服務器端的實際端口是否可以是其他數字?如果是,那麼這是否意味着服務器程序員必須確保端口80不用於其他任何事情? – mercury0114 2016-04-10 19:24:42
NAT對於應用程序是透明的,所以服務器開發人員只會關心他的進程正在監聽的端口號。 – 2016-04-10 21:00:15
- 1. 將CIDR地址轉換成子網掩碼和網絡地址
- 2. android網絡地址
- 3. 轉換的IPv6地址類型爲網絡字節順序
- 4. 如何地址轉換成網絡掩碼(十進制)
- 5. 將字符串轉換爲網絡地址
- 6. 如何轉換網絡中的TCL主辦的地址
- 7. 關於網絡
- 8. 將此網址轉換爲64基地
- 9. 轉換短網址
- 10. Azure虛擬網絡網關 - 動態公共IP地址更改
- 11. 關於nat類型分析
- 12. AWS NAT - 多個網絡接口
- 13. NAT網絡正在合併會話
- 14. AWS VPC - 互聯網網關與NAT
- 15. 使用TCP狀態轉換在我的網絡中存儲IP地址列表
- 16. 如何將CIDR轉換爲C#中的網絡和IP地址範圍?
- 17. 短暫的NAT IP地址的歷史
- 18. 轉換網絡掩碼php
- 19. 轉換爲網絡圖
- 20. PHP IP到網絡轉換
- 21. 如何將網絡地圖網站轉換爲手機
- 22. 將網址轉換爲NSData
- 23. 轉換履帶的網址
- 24. 轉換內存地址
- 25. MAC地址到IP轉換
- 26. 如何從網絡上的IP地址獲取MAC地址?
- 27. Arduino搜索網絡的IP地址,並獲得MAC地址
- 28. 基礎關於IP地址
- 29. 獲取網絡用戶的IP地址
- 30. 網絡計算機的IP地址
非常感謝。 – Rudi 2010-05-23 18:17:58