只是对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