局域网下多台机器共用一个公网IP是怎么定位的?
Posted 玩葫芦的卷心菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了局域网下多台机器共用一个公网IP是怎么定位的?相关的知识,希望对你有一定的参考价值。
主要通过静态NAT协议实现
粗讲一下请求流程,水平不够,讲得不是太清晰
客户端对外网发送了一个请求
- 传输层记录了源端口号和目标端口号
- 网络层记录了源ip和目标ip(如果是同一网段下,使用局域网ip就行了,如192.168.1.3请求192.168.1.7; 也可以192.168.1.3请求B公网ip)
-
192.168.1.3请求192.168.1.7通过CIDR和子网掩码判断是一个网段下,然后通过ARP协议广播问192.168.1.7的MAC地址,没获取到表明没有,获取到了封装源mac和目标mac发送到目标mac的机器上
-
如果是192.168.1.3请求B,CIDR和子网掩码判断不是一个网段,所以要交给网关前往外网;所以通过网关ip使用ARP协议获取到网关的MAC地址,将网关MAC地址填入目标MAC,发送到网关
-
网关通过一套自己的路由规则对目标IP解析到一个端口中,表明从这个端口出去,当源ip要出局域网时需要通过NAT协议转换为公网IP-A,然后通过一路的路由和ARP最终到了目标IP的网关
-
通过B的网关的NAT协议将目标IP变成当前局域网IP
-
然后可以使用ARP协议知道该局域网内B对应的机器在哪
可是如果有三台机器共享B这个公网IP咋办呢?给这三台机器全发一遍?
192.168.1.1、192.168.1.2、192.168.1.3共同使用B
这时候会有一个静态NAT设置,因为传输层是有目标端口号的,如9222
当请求B:9222,会发送给1.1:9222
当请求B:9223,会发送给1.2:9222
当请求B:9224,会发送给1.3:9222
他可能会有这种配置
多台机器使用一个公网IP就要承受端口不够用的代价
你要请求这个应用,肯定是已经知道你需要访问哪个端口号的,所以人家已经给你映射好了
nat支持一对一转换,即一个内网ip与一个外网ip,如果支持一个外网ip对应多个内网ip,则需要napt协议支持。
协议会维护一张映射表,结构如下:内网ip:port–>外网ip:空闲port
以上是关于局域网下多台机器共用一个公网IP是怎么定位的?的主要内容,如果未能解决你的问题,请参考以下文章
外网主机怎样将数据包发送到共用一个公网IP的局域网某特定主机上的
外网主机如何将数据包发送到共用一个公网IP的局域网某特定主机上的