domain-name-system – 我的浏览器如何知道从服务器获取数据的位置?

前端之家收集整理的这篇文章主要介绍了domain-name-system – 我的浏览器如何知道从服务器获取数据的位置?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这很可能不是发布此类事情的正确论坛,但这个问题困扰了我多年.

我非常清楚服务器本身是如何工作的,并且在大多数计算机上都非常精通.

以serverfault.com为例.

我在我的浏览器地址栏中键入http://www.serverfault.com/.此时,我的计算机执行反向DNS查找以获取IP地址.

我知道dns信息位于DNS服务器上,但我的计算机如何知道在哪里立即查找?是否有我的计算机自动寻找的固定IP地址的DNS服务器?

其次,一旦我的计算机拥有serverfault.com的IP地址,它将进入(在我的情况下)comcast以开始进入serverfaults服务器.这个过程如何运作?当运行到serverfault.com的跟踪路由时,它会产生大约16个跃点,直到它找到我正在寻找的内容.

显然它无法与serverfault.com建立直接连接,因为这会直接连接到服务器,但是通过网络控制请求的是什么?是什么让我在跟踪路线中看到的路线?

我知道这个问题是疯狂的,但如果我至少可以获得一些外部来源的链接或知道搜索谷歌的内容将是非常有帮助的.

解决方法

(我已经迟到了这个派对,但不管怎样,让我们​​看看我能做什么.)

您要问的是两个截然不同的事情 – 通过DNS和IP路由解析名称.让我们分别处理它们.

DNS部分

I know that the dns information is located on a DNS server,but how does my computer know where to immediately look for that? Are there DNS servers at fixed IP addresses that my computer automatically goes looking for?

通常,客户端计算机通过其DHCP服务器(为客户端提供“租用”未使用的IP地址的“服务器”的“选项”中的数据通知他们将要使用的DNS服务器的IP地址.使用).

某些计算机不使用DHCP来获取IP地址,而是使用静态分配的IP地址.如果计算机已静态分配IP地址,则DNS服务器IP地址也会在计算机的配置中静态分配.

(有更多深奥的方法可以向客户端提供DNS服务器信息,但上述两种方法覆盖了超过90%的情况.)

听起来您的计算机位于家庭网络上,并且可能从在家庭网络中的路由器或ISP上的DHCP服务器上运行的DHCP服务器获取其IP地址.

对于家庭路由器,它将从您的ISP的DHCP服务器获得IP地址,并且在获取该IP地址的过程中,将学习您的ISP打算使用的DNS服务器的IP地址.一些家用路由器将为路由器的DHCP服务器的客户端提供ISP DNS服务器地址.还有一些家用路由器将自己运行“迷你”DNS服务器,并将DHCP客户端引导到其自己的“迷你”DNS服务器.通常,这个“迷你”DNS服务器只会将请求转发到ISP的DNS服务器.

如果您的计算机直接连接到没有路由器的ISP网络,那么很可能是ISP的DHCP服务器为您的计算机提供了ISP的DNS服务器的IP地址.

IP数据报包含目标IP地址,而不是人类可读的名称.为了与远程服务器“通信”,您的计算机需要该远程服务器的IP地址.将人类可读名称“解析”为IP地址(适合将IP数据包作为目标地址包含在内)的过程称为正向DNS查找.

我不会在这里详细介绍递归前向DNS解析,但基本上,您的客户端计算机会向其DNS服务器(从DHCP了解到的或静态配置的)发送请求,名称为“www.serverfault” .COM”.该请求最终将成为您ISP的DNS服务器. ISP的DNS服务器将向众所周知的“根DNS服务器”列表中的一个发出请求.根DNS服务器返回的答案将反过来将ISP的DNS服务器的请求引导到“.com”DNS服务器,然后引导到“serverfault.com”DNS服务器.最终,ISP的DNS服务器会将答案返回给您的计算机(可能通过家用路由器中的DNS服务器,如上所述).

如果您对细节感兴趣,我建议您查看有关DNS协议如何工作的更多技术说明.

这让我们了解了您问题中与DNS相关的部分.现在,让我们继续讨论问题的IP路由部分.

IP路由部分

What makes it take the route that I see in the trace route?

所有这些DNS查询的结果将是IP地址(或多个IP地址,是技术性的).您的浏览器将启动与DNS查询返回的地址之一的TCP连接.这将导致您的计算机将IP数据报(发往我们之前的DNS查询返回的IP地址)发送到您的计算机已知的“默认网关”. “默认网关”只不过是另一台计算机(通常是路由器)的IP地址,您的计算机将“切换”数据包以便传送到Internet.假设您正在使用以太网,那么您的计算机“切换”IP数据报的具体细节涉及ARP协议以及可能对此答案而言过于深入的细节.

您可能会问:您的计算机如何知道其默认网关的IP地址是什么?

类似于计算机从DHCP计算机接收其DNS服务器地址的方式,当从DHCP“租用”IP地址时,通过接收的“选项”向其提供“默认网关”.如果计算机具有静态分配的IP地址,则通常也会静态分配其“默认网关”.

从根本上说,IP路由是一种将数据包从一台计算机(路由器)“切换”到另一台计算机的游戏,直到数据包到达其目的地(如果数据包被转发太多次,则“尝试”).每个路由器都有许多网络接口,可将其连接到其他路由器.当它收到一个数据包时,路由器“决定”哪个网络接口将是该数据包通过的“最佳”,并且在做出“路由决定”之后,它通过所选择的网络接口将数据包交给另一个路由器.重复此过程,直到您的数据包到达目的地.

我的epic subnetting answer讨论了静态IP路由的基础知识.在静态IP路由中,每个路由器都有一个静态分配的目标网络列表,并了解网络与路由器网络接口的“邻接”.在Real LifeTM中,静态IP路由不在大型网络中使用,因为它的维护过于繁琐,并且没有考虑到拥塞或链路故障的路由.

您执行的“traceroute”显示路由器沿数据包路径的每个“跳”做出的路由决策的结果.这些路由器使用动态路由协议(如边界网关协议(BGP)或开放最短路径优先(OSPF))来决定如何将数据包路由到另一个路由器.这些动态路由协议可以考虑链路拥塞或可用性,数据包沿每条预期路径传输的相对“距离”等因素,以及可能的其他因素(包括“政治”因素,如对等协议),以确定数据包的去向.

各个动态路由协议如何工作的细节远远超出了这个答案.幸运的是,Internet的体系结构使得端点(如您的计算机或Serverfault.com上的服务器)不需要了解有关“云”内部数据包路由的任何信息.只要网络中的所有路由器都按照适当的规则播放,就会传送数据包(虽然IP允许无序传送和丢失数据包 – 更高级别的协议负责处理这些事件).更好的是,可以在“云”内设计和实施新的动态路由协议,并且不需要为所有端点改变以利用改进的路由.

猜你在找的HTML相关文章