最近看计算机网络,了解到了动态ip这一概念,但是怎么也想不到这个功能是怎么实现的。
一个终端要接入因特网就需要有一个ip先,动态ip是每次上网的时候都给该终端分配一个随机的公网ip,也就是说还得先接入因特网才能获得动态ip,但是此时都没有公网ip,谈何做到接入因特网,获得本次上网的公网ip的呢。一直想不明白,感觉陷入了悖论,恳请大神解答!
最近看计算机网络,了解到了动态ip这一概念,但是怎么也想不到这个功能是怎么实现的。
一个终端要接入因特网就需要有一个ip先,动态ip是每次上网的时候都给该终端分配一个随机的公网ip,也就是说还得先接入因特网才能获得动态ip,但是此时都没有公网ip,谈何做到接入因特网,获得本次上网的公网ip的呢。一直想不明白,感觉陷入了悖论,恳请大神解答!
你应该没看完整,随机分配到的应该是一个局域网ip。
有个关键词是网络地址转换(NAT)。
假设有个拓扑网络是这样的:
公网服务器不知道本地主机的存在,
而路由器有一张 ip+端口
的地址转换表,转发本地主机、公网间的包。
主机 | 路由器 | 公网 |
---|---|---|
192.168.0.2:1 | x.x.x.1:1 | x.x.x.2:80 |
192.168.0.2:2(同台主机另一个请求) | x.x.x.1:2 | x.x.x.2:80 |
并不是说一定要有公网IP才行。比如说你的手机获取你家局域网wifi的地址,设备连接上的时候你家的路由器就已经给你分配好IP了。只不过这个IP是局域网内的IP。
再往外也是同理的从你家出去到小区的运营商交换机也是一个子网,交换机也会给你分配地址。从小区的交换机出去一直到运营商的交换机上也是同理的一环套一环,中间交叉重叠的部分就是这些设备。
你家的路由器、小区的交换机都是一个转发你请求的设备,转发到目标服务器上面。只不过大部分情况都是使用的子网IP在通讯。
你也可以粗犷的把中间的交换机、路由器理解成把你的网线延长的节点,把你的网线一直通到运营商分配IP的服务器上联通到互联网上。
以家用局域网为例。
路由器提供DHCP服务,局域网中的设备可以自动获取IP地址(局域网的IP地址,如 192.168.0.1
)、子网掩码、DNS和网关(即该路由器的IP地址,如192.168.0.254
)。
这时候如果要请求一个公网连接,是通过网关(路由器)来连接外网的。你去找运营商开通了网络服务,那么你家的路由器接入了互联网,至于说在公网中你的IP地址是多少则是运营商考虑的事了。
简单来说,家里搞了局域网,通过路由器来接入互联网,一开始不需要公网IP。
没有 IP 地址,不能点对点发消息,DHCP 的很多消息都是通过广播的方式完成的,就是发送给能够连接到的所有机器。