输入一个URL发生了什么

Posted 楠c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入一个URL发生了什么相关的知识,希望对你有一定的参考价值。

孤单小弟 HTTP

一个URL的组成

首先浏览器需要对URL进行解析,从而生成发送给web服务器的请求信息。

URL是就是请求服务器的文件资源。

假如不带文件路径呢?通常服务器会在根目录下放置一个默认的Index.html,返回他即可。

浏览器解析出URL,确定了对方的web服务器和文件名。生成请求。

一个孤单的HTTP数据包背起了行囊。

真实地址查询DNS

通常输入的服务器域名是字符串,因为直接输入IP难以记忆。DNS服务器(端口为53)专门保存了web服务器域名和IP之间的对应关系。

就像外国人说一个地点,xx街道xx区xx市xx省一样。他们的习惯与我们相反。


根域处于互联网任意一个DNS服务器中。

讲清楚这些再看。

  • 此时浏览器发出一个dns请求,询问本地DNS服务器,域名对应的IP是啥。假如本地有缓存过它对应的IP,直接返回。
  • 假如没有,本地DNS服务器会向根域DNS服务器询问,“大哥,请问这个域名的IP地址是啥”
  • 根域收到它请求,看见后缀为.com,指明一条道路,归.com管,我给你.com的顶级域服务器地址,你去问他。
  • 它(本地DNS服务器)找到了顶级域服务器,“二哥请问这个域名对应的IP地址是啥”
  • 二哥一看,这个域名,归权威DNS服务器管,你去问他
  • 它又找到了权威DNS服务器,问道"三哥,这个域名对应的IP是啥",权威服务器一查,本地DNS服务器拿到对应的IP,返回给自己的浏览器。

经过不断的问路,终于找到了目的地。接下来该怎么发呢?

可靠传输TCP

数据链路层确定点到点,中间经过一个个源mac地址,目的mac地址的区间,不断跳转

首先,三次握手,建立链接。浏览器就可以发送自己的请求报文,假如数据大小大于MSS还会进行分段之后加报头,同时TCP还有保证可靠性,效率的一些机制。
有了TCP的保证,很心安,可是我该往哪走?

远程定位IP

IP协议将数据拿到,假如数据大小大于MTU,会进行分片后加IP报头,IP报头中拥有源IP,目的IP这两个IP始终是不会变化的。

  • 源IP:客户端有多个网卡,就有多个IP,经过route-n查看路由表,根据目的ip按位与子网掩码,算出网段。观察与哪个网卡相匹配,填入网卡的IP。假如没有填默认的。
  • 目的IP:就是之前DNS解析拿到的。
    知道了源IP,目的IP,经过多次路由选择,就确定了本主机到另一台主机之间的路径。
    路由选择:
    目的IP,按位与子网掩码。算出网段。观察本主机路由表,假如有找到下一跳,假如没有转发给默认路由1。路由器1在路由表匹配到了转发给下一跳路由器,路由器匹配到了而且发现是自己局域网主机,将IP数据报经过交换机转发至目标主机。

有了IP,不再迷茫,可是那么远,我下一站在哪?

两点传输MAC

数据链路层根据MAC地址在一个接一个的区间中进行传输,每个区间的起始地址就是源MAC地址,目的地址就是目的MAC地址。

源MAC地址:直接从网卡的ROM里读取。经过路径选择,我们知道了各个路由器的IP,同时经过ARP协议,拿到他们的MAC地址。然后在两点之间传输数据。所以源MAC,目的MAC是不断变化的。

ARP协议:以广播的形式对所有设备询问,这个IP地址是谁的,请把你的MAC地址告诉我。同时划分一个ARP缓存存储IP地址到MAC地址的映射。
谢谢大家的帮助,现在我终于可以出门了。

最终

自底向上不断分离报头,可靠地收到这些数据后,处理请求,返回响应。经过同样的步骤,将响应报文送给客户端浏览器。浏览器收到响应后,渲染数据。四次挥手断开链接。

以上是关于输入一个URL发生了什么的主要内容,如果未能解决你的问题,请参考以下文章

在浏览器输入URL发生了什么

输入一个URL后发生了什么?

输入一个URL之后发生了什么?

输入一个URL发生了什么

输入一个URL发生了什么

在浏览器输入 URL 回车之后发生了什么