当我在浏览器中使用“localhost:123456”作为地址时会发生什么?

当我在浏览器中使用“localhost:123456”作为地址时会发生什么?

只需输入 localhost 和一串数字即可在 Web 浏览器中打开某些应用程序,例如localhost:123456

当我这样做时我究竟在做什么?

抱歉,这个问题听起来太简单,但网络上的答案并不令人满意。

例如,我发现很多答案都说:

操作系统根据 TCP 端口 123456 解析主机名 localhost

但这假设一个普通的 joe MS word 文档编写高中 VBA 级别的互联网用户,没有任何网络知识,知道什么

  1. 解决意味着
  2. 主机名意味着
  3. TCP 端口意味着

以及“操作系统”如何完成所有这些工作。

对这个问题有更人性化的解释吗?

我先开始吧:操作系统是一种软件...当您在网络浏览器中输入 localhost:123456 时...它会“解析”或者换句话说...这样就会打开您的应用程序。

答案1

解析意味着将人类可读的地址“localhost”转换为计算机地址(称为 IP 地址)。计算机通常通过联系所谓的 DNS 服务器(通常由您的 ISP 设置)来执行此操作。具有讽刺意味的是,localhost 是一个特殊情况,通常存储在映射到自身的本地配置中。

“主机名”是人类可读的名称,例如 google.com、localhost、superuser.com。它们允许人们输入名称或地址来连接到网站或服务器,而不是输入可能看起来像:192.168.1.155 的 IP 地址。

TCP 端口是允许多个不同服务与单个主机通信的端点。当您在 Web 浏览器的地址栏中输入“localhost”时,Web 浏览器实际上会填写端口号 80,这是 Web 服务器的默认端口号。许多不同的服务都使用标准端口。通过添加“:60344”,您就是在告诉 Web 浏览器尝试使用端口 60344 与本地主机地址的 Web 服务器建立连接。

另外,仅供参考,端口是 16 位的,因此最高端口号是 2^16 = 65,535。它们具有一系列已建立的预留端口。此外,当您连接到网站时,您的计算机实际上会打开一个动态端口来与服务器通信。因此,尽管您连接到端口 80,但您的本地端口不会是 80。

请理解,我试图让解释变得简单,因为每个步骤都涉及更多内容。我的目标是给出一个概述。

有关端口的更多信息:这里

答案2

localhost 是一个主机名,系统中有一个文件会告诉您的 PC,localhost 解析为 127.0.0.1 [或 ::1: 如果是 ipv6] - 它始终指向您的系统。我们稍后会讲到这一点。

实际上,仅使用 IP 的最大问题是它们很难记住,而且如果您以后真的想查找东西,就无法轻易更改它们。

主机名是一种更友好的命名方式 - 但互联网的后端仍然是机器。主机名解析基本上是一种连接主机名和 IP 地址的方法。

nslookup 告诉你在哪里解析

C:\Users\faile>nslookup localhost
Server:  UnKnown
Address:  192.168.2.1

Name:    localhost
Addresses:  ::1
          127.0.0.1

将其与 superuser.com 的 nslookup 进行比较

C:\Users\faile>nslookup superuser.com
Server:  UnKnown
Address:  192.168.2.1

Non-authoritative answer:
Name:    superuser.com
Addresses:  151.101.1.69
          151.101.65.69
          151.101.129.69
          151.101.193.69

名称服务解析以两种方式进行。

(前两行是我的路由器。我们稍后会讲到)

系统上有一个文本文件,叫做hosts 文件。想象一下,这是一张贴在手机上的便签,上面写着电话号码。它的扩展性非常差,你不会需要所有这些电话号码。

在大多数现代设置中,我们改用 DNS 服务器。本质上,这是一种查找哪个 IP 与哪个服务器(如电话簿)关联的方法,该服务器会根据一组更新的“主”记录定期更新。

还有一个已知端口列表 - 对于 http 来说是端口 80,对于 https 来说是端口 443。如果没有明确指定端口 - 它将假定它是默认端口。

现在展示一个有用的工具是 netstat - 在这种情况下,我使用netstat -ban它显示二进制名称所有连接和数字(而不是名称)。

那里有很多东西,但这对我们有用的部分

  TCP    192.168.2.121:49800    151.101.1.69:443       ESTABLISHED
 [vivaldi.exe]

您看到 2 个 IP 地址 - 我的电脑(192.168.2.121)通过端口 49800 连接到 151.101.1.49(我们已确定是超级用户),通过端口 443 建立连接。

为什么是 443 端口?

因为我正在发布这个答案 - 并且通过 https 连接到超级用户

查看我的浏览器

在此处输入图片描述

您会注意到缺少明确的端口。

因此,基本上,当没有明确设置时,你的浏览器需要被告知两件事

  1. 主机 - 可以是数字(理论上,我可以连接到 151.101.1.69 并到达我要从中获取数据的服务器,但还有更深层次的问题,涉及缓存服务器、负载平衡器和其他类似有趣的东西)或主机名。这很重要。

  2. 协议 - 对于 Web 浏览器,只有很窄的可用协议范围。如果没有明确说明,客户端将假定服务的知名端口。您可以明确说明端口,因为您通常无法从默认端口进行托管。但是,您的客户端将使用较高的随机端口进行连接。

从更深层次来看,TCP 和 UDP 并不是最终用户过于担心的事情。它们是通过 IP 发送消息的独立方式,并且通常只有在打开端口时才重要。它们适用于不同的事情,仅此而已。

答案3

这里有一个简单的观察方法:

  • 解析 - 简单来说就是查找某物。就像现实世界的建筑物一样,互联网上的每样事物都有地址。
  • 主机名 - 您正在查找的服务器的名称。当您在电话簿或 Google 中查找企业时,您会按名称进行查找。
  • TCP 端口 - 就像建筑物中可能有多个不同的人和企业一样,端口是与他们交谈的正确“门”。

因此,当您键入时,localhost:12345计算机会查找(解析)“localhost”的位置以获取其地址。Localhost 恰好hostname你的计算机。现在它有了你的地址,它需要知道要与哪个门(TCP 端口)对话。就是这样。

相关内容