美文网首页
在浏览器中输入www.baidu.com后执行的流程

在浏览器中输入www.baidu.com后执行的流程

作者: InnocenceYWQ | 来源:发表于2018-10-09 16:55 被阅读9次

    输入地址

    当我们开始在浏览器中输入网址www.baidu.com的时候,浏览器其实就已经在智能的匹配可能的url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。对于 google的chrome 的浏览器,他甚至会直接从缓存中把网页展示出来,就是说,你还没有按下 enter,页面就出来了。

    浏览器查找域名的 IP 地址

    1、请求一旦发起,浏览器首先要做的事情就是解析这个域名,一般来说,浏览器会首先查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。

    2、如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地DNS服务器(如果是首次,由于没有DNS服务器的MAC地址,所以只需要将数据发送给网关路由器192.168.1.1(通过ARP获取其MAC地址),他会想办法发给DNS服务器)。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。

    3、查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果,此过程是递归的方式进行查询。如果没有,本地DNS服务器还要向DNS根域名服务器进行查询。

    4、根域名DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到顶级域服务器上去继续查询,并给出顶级域服务器的地址。这种过程是迭代的过程。

    5、本地DNS服务器继续向其他域名服务器发出请求,在这个例子中,请求的对象是.com域名服务器。.com域名服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。

    6、最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址220.181.27.48****对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

    网络部分

    1、应用层DNS解析域名发起HTTP请求报文(域名 to IP)

    通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话(HTTP请求包)到220.181.27.48。然后通过传输层(TCP进行封装数据包,输入到网络层)。

    其中:http请求包括

    请求行:GET/POST…,目标URL,HTTP 版本

    请求头:客户端的Cookie和User-Agent就放在这里

    请求体:比如客户端POST的数据就放在这里(对比:GET的数据放在请求行的URL里).

    2、传输层TCP分割成报文段并加端口

    在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割(报文段),并在各个报文上打上标记序号及端口号后转发给网络层。

    TCP协议为传输报文提供可靠的字节流服务。它为了方便传输,将大块的数据分割成以报文段为单位的数据包进行管理,并为它们编号,方便服务器接收时能准确地还原报文信息。把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用网络层的IP地址查找目的端。TCP协议通过“三次握手”等方法保证传输的安全可靠。

    3、网络层查找MAC地址(路由器)(IP、ICMP、ARP、RARP)(IP to MAC)

    IP协议的作用是把TCP分割好的各种数据包加上IP首部后传送给接收方。而要保证确实能传到接收方还需要接收方的MAC地址,也就是物理地址。IP地址和MAC地址是一一对应的关系。ARP协议可以将IP地址解析成对应的MAC地址。当通信的双方不在同一个局域网时,需要多次中转才能到达最终的目标,在中转的过程中需要通过下一个中转站(交换机)的MAC地址来搜索下一个中转目标。

    4、网络接口层

    在找到对方的MAC地址后,就将数据发送到数据链路层传输,由数据链路层的网桥、交换机根据mac地址进行端口转发,再由物理层的中继器、集线器进行信号传输放大等。这时,客户端发送请求的阶段结束

    5、服务器接收数据

    接收端的服务器在链路层接收到数据包,再层层向上直到应用层。这过程中包括在传输层通过TCP协议将分段的数据包重新组成原来的HTTP请求报文。

    6、服务器响应请求,返回HTTP响应

    服务接收到客户端发送的HTTP请求后,查找客户端请求的资源,并返回响应报文,响应报文中包括一个重要的信息——状态码。状态码由三位数字组成,其中比较常见的是200 OK表示请求成功。301表示永久重定向,即请求的资源已经永久转移到新的位置。在返回301状态码的同时,响应报文也会附带重定向的url,客户端接收到后将http请求的url做相应的改变再重新发送。404 not found 表示客户端请求的资源找不到。

    其中:HTTP响应如下

    响应行:HTTP版本,状态码,状态码描述

    响应头:set-cookies,server信息

    响应体:cookie,html,image,后端返回的请求数据等等

    7、服务器返回相应文件

    请求成功后,服务器会返回相应的HTML文件。接下来就到了页面的渲染阶段了。

    四、浏览器方面:页面渲染,显示HTML

    相关文章

      网友评论

          本文标题:在浏览器中输入www.baidu.com后执行的流程

          本文链接:https://www.haomeiwen.com/subject/ezkyaftx.html