了解一下“从URL到页面显示的过程”也无妨

应该多数人在面试的过程当中,都会被面试官问过,“从浏览器输入一个URL到显示页面内容,这个过程都经历了什么?”面试

那么你们回答得也应该是各类各样,各有所长吧。浏览器

那么这个过程到底都经历了些什么东西,才把页面得内容拿回来呢?

这个过程会经历TCP/IP的各个层以及各个层中的针对性的处理。服务器

TCP/IP

  • 应用层网络

    • DNS
    • HTTP
  • 传输层spa

    • TCP
  • 网络层blog

    • IP
  • 链路层事务

    • 网络

那么应用层,传输层,网络层,链路层,是什么东西呢?

由于TCP/IP协议是经过分层管理的,每一个层有每一个层的事务。资源

应用层

应用层决定了向用户提供应该服务时通讯的活动。rem

传输层

传输层对上层应用层,提供处于网络链接中的两台计算机之间的数据传输。域名

网络层

网络层用来处理在网络上流动的数据包。

链路层

用来处理链接网络的硬件部分。(如光纤)

那么各层下的DNS,HTTP,TCP,IP又作些什么?

DNS

DNS位于应用层,DNS协议提供经过域名查找IP地址,或逆向从IP地址反查域名的服务。

HTTP

HTTP协议也位于应用层,HTTP协议负责各类报文(是报文不是豹纹)的处理。

TCP

TCP协议位于传输层,TCP协议为了传输方便,会将报文切成报文片,并打上标记;并且为了传输的可靠性,TCP协议还会进行“三次握手”的验证行为。

IP

IP协议位于网络层,IP协议会经过ARP协议经过IP地址去查询目标服务器的MAC地址,也可经过MAC地址反查IP地址。

什么?他喵的,你不知道报文是什么?还不知三次握手是什么?

报文

报文类型

  • 请求报文
  • 响应报文

报文组成

  • 报文首部
  • 空行
  • 报文主体

报文首部组成

  • 请求行/响应行
  • 请求首部/响应首部
  • 通用首部
  • 实体首部

请求行

  • 请求方法
  • 请求资源
  • HTTP协议版本

响应行

  • HTTP协议版本
  • 状态码
  • 缘由短语

这部分这里就不说太具体了,要想了解HTTP更多的内容,掘金有不少大佬写的好文章,能够自行查阅,这里本渣渣就不班门弄斧了。

三次握手

首先客户端会先向服务端发一个SYN的数据包,告诉服务端,“老子要链接你”;服务端接收到后,会给客户端发送一个SYN/ACK的数据包,告诉客户端,“爸爸知道了,连吧”;最后,客户端收到后会再给服务端发一个ACK的数据包,告诉服务端,“好的,儿子,那我连了”。

--剧终--

逼逼了那么多,如今把以上的知识点串联起来就能够回答一开始的那个问题了。

结案

当在浏览器输入一个URL的时候,会先进入,TCP/IP协议的应用层,在应用层会先经历DNS服务对域名的解析查找对应的IP地址,找到的话就继续,找不到就完事了。找到后,应用层先将IP地址和HTTP报文转给运输层;在运输层,TCP协议会将报文切成报文段,并打上标记,且为了保证可靠的将数据送达给目标服务器,TCP还会进行一次“三次握手”的验证行为;接着运输层,将处理权转给网络层,在网络层(IP协议)会经过ARP协议结合IP地址去查找目标服务器的MAC地址,并增长该地址后转发给链路层;这样一来,发往网络的通讯请求就准备齐全了。接收端的服务器在链路层接收到数据,按序往上发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。最后,当服务端查找到客户端须要的内容以后,按以上客户端到服务端的流程,再走一遍,不过此次开始的服务端的应用层而已,当再次回到客户端的应用层,浏览器就能看到页面内容了。(再细一点的话,还会经历浏览器的重绘,回流等行为)

相关文章
相关标签/搜索