domain-name-system – HTTP get方法是否依赖端口53进行DNS解析?

我正在阅读关于DNS如何工作的一般情况,我偶然发现了 this问答.

根据the accepted answer,第二步是当DNS与ISP服务器通信以获得主机名的IP地址时.

DNS: “Right… wait a sec,I’ll ask the ISP servers. Ok,it looks like
157.166.226.25.”

我碰巧读了this answer,说,

CLIENT running browser asks DNS Server using UDP protocol for A record of www.pippo.it

on client it is the operating system that does resolving part and
talks back to browser,browser never talks to DNS directly,rather
through OS by invoking gethostbyname()
and on Linux resolving precedence is defined by /etc/nsswitch.conf

因此,如果我使用防火墙规则阻止我的机器中的端口53的所有出站流量,这是否意味着我根本无法解析任何主机名?

我认为不应该是这样的原因,这就是为什么我们有/etc/nsswitch.conf文件(在Linux机器上,虽然类似的概念也可能出现在其他操作系统中).该文件了解主机数据库,其中gethostbyname()和相关函数使用主机名和编号.

有人可以澄清我的理解是否正确或是否有误解?

解决方法

关于HTTP,需要记住的是,浏览器和Web服务器之间的所有通信都是通过TCP进行的,TCP使用IP地址.您所说的名称解析首先发生,因为没有IP地址,就无法进行通信.

因此,只要您知道IP地址,即使您的主机文件中没有名称,因此Internet也能正常工作,您甚至可以访问没有DNS的网站.

现在,为了反驳我刚才所说的一点,因为你的问题是关于HTTP的,事实是如果你试图通过IP地址直接访问它们,一些网站将无法工作.

这可能有很多原因,但其中最常见的一个是Web服务器实际上在一个IP上托管了许多不同的网站,然后根据请求的主机名将请求区分到这些站点.

这是通过添加Host:标头作为HTTP请求的一部分完成的.浏览器使用您在地址栏中提供的名称在请求期间填写此标题,但严格来说,这与DNS无关.

另一种通过IP浏览可能有问题的方法是在HTTPS站点上,因为证书是发给某些主机名的.这不会阻止它们工作,但浏览器无法验证证书,因为名称不匹配,您将收到警告.

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在'',则表示换行,用''切割。
代码实现 option = { backgroundColor: '#080b30', tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...