在浏览器中输入URL后都会发生什么

  1. 浏览器补全地址和DNS对域名进行解析;
    1>当搜索baidu.com,实际访问的是http://www.baidu.com,浏览器会补全地址。
    因为一个URL由协议、主机名、路径、搜索内容、哈希组成。
    2>DNS解析过程:客户机先插本地缓存,找不到再将域名发到DNS服务器,它先查它管理的区域,如果就查本地缓存,还找不到就发送给根域名DNS服务器。
    根域名解析请求域名的根域部分,把下一级域名信息的DNS服务器地址返回给客户机的DNS服务器地址。客户机DNS服务器利用根域名返回的DNS服务器地址一级一级查找DNS服务器地址。最终能在模板DNS服务器上找到相应的IP地址。
  2. 建立TCP连接(三次握手);
    第一次
    第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
    第二次
    第二次握手:服务器收到syn包,必须确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。

确认syn包都是回复ack以顺序号seq+1

第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念。

  1. 发送HTTP请求;
    浏览器把请求包装成请求报文,如GET/HTTP/1.0,当然请求也可能是POST。
    头部信息:User-Agent Hos成对出现
    主体:请求头部和主体之间有一个回车换行。如果是get请求,则没有主体部分,post有请求主体。

  2. 服务器处理请求;
    返回数据,比如请求的资源,一般是html页面。

  3. 返回响应结果;
    返回给客户端状态码。如果有错误,直接显示在页面上。
    1XX被接收,继续处理
    2XX成功
    3XX:重定向错误
    4XX:如404,属于客户端错误。
    5XX:服务器错误状态,一般是编码错误

  4. 关闭TCP连接(四次挥手);
    对于一个已经建立的连接,TCP使用改进的四次挥手来释放连接(使用一个带有FIN附加标记的报文段)。TCP关闭连接的步骤如下:
    第一步,当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)。
    第二步,主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。
    第三步,主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段。
    第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻底释放。

  5. 浏览器解析HTML;
    浏览器通过解析HTML,生成DOM(文档对象模型 Document Object Model)树(是一种HTML元素的树形数据结构),解析CSS,生成CSS规则树,然后通过DOM树和CSS规则树生成渲染树。渲染树与DOM树不同,渲染树中并没有head、display为none等不必显示的节点。

  6. 浏览器布局渲染;
    把html解析完,并且加载脚本文件,执行样式等,显示前端文件效果。
    html解析->外部样式、脚本加载->外部样式执行->外部脚本执行->html继续解析->dom树构建完成->加载图片->页面加载完成

你可能感兴趣的:(计算机网络)