假设我在浏览器中输入网站名称 www.yahoo.com。正向 DNS 查找将获取服务器的 IP 地址,但客户端(浏览器)如何知道应用程序正在运行的端口号?
答案1
只要我们谈论网页浏览,这都是相当琐碎的事情。
假设你写入http://example.com
。浏览器将连接到端口 80。同样https://example.com
将连接到端口 443。
还可以将 Web 服务器配置为在备用端口上运行(例如端口 8080)。
在这种情况下,您需要写入:(http://example.com:8080/
如果网站已加密,则需要写入 https)。
但是有时您会使用不同的应用程序连接到 IMAP、SMTP、SIP(IP 电话)等服务。
可以手动输入主机名、端口号等,但对于不太懂技术的人来说,他们更喜欢尽可能多的即插即用。
DNS 有答案:服务记录!
例如,您可能有以下 DNS 条目:
_imap._tcp.example.com IN SRV mail.example.com 10 60 143 43200
_smtp._tcp.example.com IN SRV mail.example.com 10 60 25 43200
mail.example.com IN A 1.2.3.4
它的工作原理是,假设您有一个电子邮件地址[email protected]
。当您首次设置邮件客户端时,它会首先询问您的用户名和密码,然后自行找出其余信息。
邮件客户端会依次进行 DNS 查找:“example.com 的 IMAP 服务在哪里?”
DNS 将回复:“主机 mail.example.com 具有 IMAP 服务并且它在端口 143 上运行”。
以下 DNS 条目显示:mail.example.com 的 IP 地址为 1.2.3.4。
SMTP 也适用同样的程序。
从最终用户的角度来看,他们所看到的只是要求输入用户名和密码,然后邮件客户端会说:“一切都已设置好,您可以使用了。”
维基百科对 SRV 记录有更详细的解释,比我在这里写的要详细。