浏览器输入URL后,网页的访问过程

网页的解析过程和实现方法

    场景描述,当客户端使用浏览器(IP:192.168.1.1)首次(如果不是首次则可能存在差异,后面会说明)访问http服务器2的内容时,整个过程是如何进行的?总体而言,整个过程分为5个环节,流程图如下:

客户端
解析域名
建立
TCP连接
客户端发送
HTTP请求
服务器发送
HTTP响应
客户端解析
HTML内容
断开
TCP连接

在这里插入图片描述

(1) 解析域名

    假设在浏览器输入网址:www.baidu.com,首先需要查找baidu.com所对应的ip地址,因此需要向DNS服务器查找。
DNS查找的过程如下:
    1.查找本地浏览器缓存
    2.浏览器通过系统调用查询本地系统缓存
    3.查找路由器缓存
    4.在ISP的DNS缓存中查找
    5.向根域名服务器查找
    假设我们需要向根域名服务器查找,则需要根域名服务器的IP地址,而通过查看网络连接信息可以发现,DNS服务器IP是已经存在的,或者说主机在一开始连接网络的时候就设置好了的。
    客户机向根域名服务器发送DNS请求,首先客户机需要发送ARP请求,获取所在局域网的网关信息,然后将DNS请求发送到网关,由网关将DNS请求消息发送给DNS服务器,DNS服务器经过解析后,再将所请求的www.baidu.com的服务器IP发送给客户机。至此,解析域名工作完成。
在这里插入图片描述

(2) 建立TCP连接

    借助在上一步中获得的ip地址,客户端开始与服务器建立TCP连接,通过TCP的三次握手完成与服务器的连接建立。HTTP的默认连接端口是80端口。

(3) 客户端发送HTTP请求

    在完成TCP连接的建立之后,客户端浏览器会向服务器发送一个HTTP请求,例如访问www.baidu.com请求如下所示:
在这里插入图片描述

(4) 服务器发送HTTP响应

    服务器在收到客户端发来的请求数据后,会根据URL信息及Accept-Encoding等信息,组织响应数据并发送给客户端。例如访问www.baidu.com的响应如下:
在这里插入图片描述

(5) 客户端解析HTML内容

    客户端在收到服务器返回的数据后,浏览器会对返回数据进行解析,然后在浏览器窗口进行展示。

(6) 断开TCP连接

    在上一步中,客户端获得了服务器的数据并进行了解析,至此,一次HTTP事务(发送请求+接收响应)完成,是否断开连接取决于connection字段的值,如果为keep-alive(一般还会携带一个维持时间),则表示保持长连接,在一次HTTP请求+回复交互结束后不会立刻断开连接,在维持时间结束后才会断开连接;而如果为close,则表示一次HTTP事务结束后立刻断开连接(即进行4次挥手)。此外,如果进行长连接除了connection字段为keep-alive外,还需要浏览器和服务器都支持长连接,否则无法进行长连接。一般在http 1.0中需要手动开启,而http 1.1中是默认开启的。

当connection字段为close时,HTTP访问过程如下图所示,即完成一次交互后即断开连接。
在这里插入图片描述
Keep-Alive的相关介绍
URL:https://www.cnblogs.com/happy-king/p/9603395.html

使用keep-alive与不使用的区别如下:
在这里插入图片描述

下面一段话摘抄自:https://www.cnblogs.com/happy-king/p/9603395.html

http的keep-alive与tcp的keep-alive
1、http keep-alive:
  在一次tcp连接中可以连续发送多次数据,即可以保持一段时间的tcp连接,在这个保持的通道上有多个request、多个response。而不用每发一次数据就要重新进行三次握手连接,发完一次数据就要立即进行四次挥手释放连接。 这样可以提高性 能和吞吐率。
2、tcp keep-alive:
  为了检测tcp的连接状况。经过设定的时间之后,服务器会发出检测包去确认tcp连接是否还在。如果出现了问题就关闭连接。
小结:
  http的keep-alive和tcp的keep-alive是完全不同的东西。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值