美文网首页前端笔记
在浏览器中输入url后发生了什么

在浏览器中输入url后发生了什么

作者: 大脸猫_2e21 | 来源:发表于2017-11-09 13:39 被阅读21次

    这个问题说大不大,说小不小,我其实对这其中的牵扯的协议并没有很深刻的理解,所以也不敢轻易下笔来写这篇文章。

    简单过程

    简单来说在浏览器中输入网址之后,实际上是由客户端发起了一个http请求,经过以下过程:
    DNS域名解析---->发起TCP的三次握手---->建立TCP连接后发起http请求----->服务器响应http请求----->服务器返回相应文件,浏览器得到html代码------>浏览器解析html代码,并请求html中的资源,例如css,图片,js----->浏览器对页面进行渲染呈现给用户。

    具体过程

    在以上的过程中依次经过了以下几个过程:

    DNS解析

    例如在浏览器中输入baidu.com,那么dns解析要将百度的这个域名解析为百度的ip地址(互联网中每台计算机都有唯一的标识它的ip地址,但是由于ip地址并不方便记忆),将一个域名解析为相对应的ip地址的过程称为DNS解析。dns解析是一个递归查询过程,会依次在以下地方查找:

    • 浏览器缓存
    • 系统缓存
    • 路由器缓存
    • isp dns缓存
    • 如果都没有找到,则向根域名服务器查找域名对应ip,根域名服务器把请求转发到下一级,直到找到ip

    tcp连接

    tcp连接过程中的tcp三次握手:
    第一次握手:客户端发送syn包到服务器,并进入syn_send状态,等待服务器确认
    第二次握手:服务器收到syn包,必须确认客户的syn,同时自己也发送一个syn包,即syn+ack包,此时服务器进入syn_recv状态
    第三次握手:客户端收到服务器的syn+ack包,向服务器发送ack包,此包发送完毕,客户端和服务器进入estabalished状态,完成三次握手。
    握手过程中传送的包里并不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,tcp连接一旦建立,在通信双方中的任何一方主动关闭连接之前,tcp连接都将一直被保持下去。

    发送http请求

    发送http请求的过程就是构建http请求报文并通过tcp协议中发送到服务器指定端口。报文由3部分组成:请求行,请求报头和请求正文

    服务器处理请求并返回http报文

    http相应报文由三部分组成:状态码、响应报头,响应报文
    通常响应报文中包含了服务器返回给浏览器的文本信息,通常html,css,js,图片等文件放在这一部分

    浏览器解析渲染页面

    浏览器解析html代码,并对页面进行渲染

    总结

    由于对计算机网络之间的协议关系并不是有太深刻的理解,在这里只是写了一些皮毛的东西,其实在浏览器中输入一个url这个过程牵扯的协议每一个都可以拿出来深挖好长,由于笔者对于这部分没有深刻的理解,所以文中都是浅尝辄止,也给自己做了一个粗糙的总结,有兴趣的可以自己去查下。

    相关文章

      网友评论

        本文标题:在浏览器中输入url后发生了什么

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