NAT之如何寻找局域网中的主机

我们知道,网络通信时由于要寻址、路由,IP包中的源、目的IP地址都应是公网IP地址。而我们局域网中的电脑用的是私有IP地址,那么,它是如何实现跟互联网上的电脑进行通信的呢?

我们的电脑连服务器还好理解,因为服务器的IP地址是公网IP。但是服务器返回数据时是如何找到我们的主机的呢?通过192.168.1.100?显然不可能,因为别的不说,单就我家里的电脑跟公司办公室的电脑就用的都是这个IP地址。

上网查一下,发现一个叫NAT(Network Address Translation)的东东,翻译过来就是,网络地址转换。大概意思是,我们局域网中的电脑共用一个外网IP,这个外网IP也是我们局域网连接外网服务器的出口。这个出口通常是一台路由器或具有NAT功能的主机,当局域网中的电脑发送外网服务器数据请求时,具有NAT功能的那个家伙会帮我们将我们的数据请求包中的源IP地址换成外网IP地址。外网服务器收到数据请求后将数据返回到我们的外网IP地址。路由器或具有NAT的那个家伙收到数据后再转交给我们,于是局域网主机就实现了上网功能。

说到这里,解释结束。我们也明白了为什么那么多IP地址为192.168.1.100的主机可以同时上网。但还有一个问题没有解决,那就是NAT如何知道外网服务器返回的数据属于局域网中的哪台主机?

这个问题困扰了自己很久,今天又上网查了下才弄明白原来是这么回事儿。NAT在进行地址替换时不仅仅包含IP地址,还有端口号。具体说来就是,我们在进行连接外网服务器请求的数据包中,除了源、目的IP地址外,还有源、目的端口号。其中目的端口号是固定的,比如21或80等等。但源端口号是随机生成的。当数据包到达进行NAT的设备时,除了私有IP地址会被替换成公网IP地址外,端口号也会被替换成NAT随机生成的端口号。NAT的端口号和局域网中的主机一一对应,同时NAT设备维护一张端口号和主机对应的表。当外网服务器返回数据到NAT设备时,NAT设备通过返回数据包中的端口号找到局域网中的主机并将数据转发。

这样就完整的实现了局域网主机上外网的功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值