当开发者在本地调试时,经常与localhost这个名字交互,比如只需运行npm run在浏览器中打开他们的网页,地址栏显示类似http://localhost:xxx/index.html.
还有一个ip地址,那就是127.0.0.1,也指的是本地主机。许多人在使用它时并没有考虑两者之间的区别。
考虑到我过去的合作和经验,一些对他们的差异缺乏清晰的了解,我觉得传播一些关于这个主题的知识至关重要。
1. 在浏览器中输入google.com后,首先向DNS查询google.com的IP地址。
什么是IP地址?打个比方,如果有人向你的公司发送包裹,递送单将包括公司的地址、手机号和收件人等详细信息。投递过程依赖于地址进行路由,最终到达收件人。同样,在网络中,域名就像公司名称,IP 地址就像物理地址。在网络世界中,IP 地址对于定位相应的程序至关重要。
而DNS( domain name service)的作用就如同一个公司目录,列出每个域名对应的 IP 地址。如果域名未注册,所以其 IP 地址无法找到,而另一些域名可能有多个 IP 地址,DNS 根据某些规则自动返回一个 IP 地址。当你成功购买域名后,域名服务提供商通常会提供 DNS 解析服务,在 DNS 中注册域名及其对应的 IP 地址。
IP地址从哪里来?每台在线计算机都有一个IP地址,但个人计算机IP通常不适合公共访问,类似于公司内部位置,只有内部人员清楚,外部人员则不清晰。对于 Google 网站是提供的外部服务,需要公共 IP 地址,通常由互联网服务提供商提供。例如,如果你的公司使用中国联通访问互联网,你可以让他们为公司的网关服务器分配一个公共IP地址。网关服务器就像一个交换机,处理所有内部网络通信,并设置转发规则以将传入请求路由到适当的本地服务器。
2.有了IP地址,浏览器向该地址发送请求,由操作系统将请求封装成IP数据包,然后通过网络进行传输。网络的路由协议基于提供的 IP 地址并通过各种路由器,最终到达绑定该 IP 的计算机。
3. 一台计算机上可能部署多个Web应用程序。哪一个应该收到请求?这就是端口发挥作用的地方。每个Web应用程序都可以绑定到一个或多个端口,系统可以防止重叠。在请求中指定端口会将其路由到正确的应用程序。
但是,当访问Google.com时,我们并没有指定端口。这是因为在未指定端口时,将使用默认端口(HTTP 为 80,HTTPS 为 443)。启动Web程序时必须绑定端口,尽管某些框架会自动选择计算机上未使用的端口。
三级域(3LD):在二级域之下,通常用于指向特定的服务器或子网。在 blog.example.com 中,“blog”是一个三级域名。“www”是最常见的三级域名,代表网站的主页或主站点,但这只是一种约定,现在许多网站建议通过二级域名直接访问。
根据这个定义,我们可以将 localhost 视为顶级域名,尽管是保留域,仅用于访问当前计算机。
当网站请求到达Nginx的80端口时,它会根据请求中的域名识别配置了相应主机头的相应Web应用程序或网站。
然后,Nginx 将请求转发到该Web程序,并在必要时启动它。
A 类:从 10.0.0.0 到 10.255.255.255
B 类:从 172.16.0.0 到 172.31.255.255
C 类:从 192.168.0.0 到 192.168.255.255。
这些私有 IP 地址仅供内部网络使用,不能在公共互联网上使用。除了上面提到的三个私有IPv4地址范围外,还有一些保留的IPv4地址范围:
127.0.0.0到127.255.255.255地址范围用于回环测试,其中包括问题中提到的127.0.0.1地址。你还可以为自己分配一个 IP 地址,例如 127.0.0.2,其功能与 127.0.0.1 相同。
169.254.0.0 到 169.254.255.255 地址范围亦用于本地网络。这种情况比较少见;如果你的计算机无法连接到 LAN,可能会看到此 IP 地址,该地址是临时指定 LAN 局域网地址的。
这些地址范围也不能在公共互联网上使用。
还有一些不太常见的专用 IPv4 地址范围。IP 地址范围的完整定义可以在这里找到:www.iana.org/assignments...
尽管人们都谈论了很多年,IPv4 仍然得到更广泛的使用。造成这种情况的原因有很多,这里不再讨论。
IPv6 地址类似于:
XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX。
它的长度为 128 位,用冒号分为 8 段,其中每个 X 代表一个十六进制数(范围从 0 到 F)。
IPv6 地址空间明显大于 IPv4。例如,2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b 是有效的 IPv6 地址。
关于 IPv6 的进一步讨论超出了本文的范围,但有兴趣的同学可以进一步探索。
感谢你阅读到最后,如果对你有用,请考虑点赞分享本文,鼓励作者的创作!
作者:金宝
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。