如何解决IP地址不够用的问题

前言

为了准备面试,也是看了许多计算机网络的文章,但是有个问题困扰了我很久,那就是如何解决ip地址不够用的问题!如果说一个局域网只有一个公网ip,那么出去的时候还好说,就用那个公网ip出去就好了,但是服务器返回消息的时候怎么办呢?返回的是目的主机的ip是公网的ip,那怎么知道要给哪台局域网的电脑?
答案其实很简单,就是NAT协议(网络地址转换协议)

NAT协议

发送

当一个局域网的主机发送一个http请求的时候,会进行如下操作:
1. 在tcp数据报报头里面会加上主机发送的端口地址。
2. 然后在ip层会加上主机在局域网的ip地址。

当传输到DHCP服务器的时候,会将报文里面的内容进行替换:
1. 将tcp报头的端口更改为另外一个(没有被使用的)
2. 将ip报头的ip地址更改为公网ip

所以从服务器看来,这个数据就是这个机器发送的,而不会察觉到局域网的存在。

然后维护一张NAT转化表:
即局域网ip:端口号 与 公网ip:端口号 的映射表

服务器响应

服务器肯定是回复公网ip+端口号,所以通过查询NAT转化表,就可以定位到局域网的主机ip和端口号,也就实现了局域网多个主机访问外网的效果。
即那个进程发送的数据,服务器响应的时候还是会响应给哪个进程(即ip地址和端口号和发送的时候是一样的)。

体会

所以NAT就是通过一个具有公网ip的机器,将局域网机器发送的报文的ip地址和端口号进行更改,达到欺骗服务器的效果。

参考文章:点我查看

猜你喜欢

转载自blog.csdn.net/q1242027878/article/details/80377121