现在的位置: 首页 > 搜索技术 > 正文

一次完整的HTTP请求是什么样的

2020年01月13日 搜索技术 ⁄ 共 817字 ⁄ 字号 评论关闭

  写完了HTTP服务器项目,但是对于一个完整的HTTP请求还不是很懂,在这里总结一下,当然这里的总结只是将每个过程进行简化,并没有去深入讲解(实属小弟实力不足啊)

  我们都知道,如果我们打开浏览器几秒后就会跳转出百度的首页,接下来就讲解一下这个过程!!

  一个完整的HTTP请求过程

  1.解析URL

  首先浏览器会检测这个url是否正确存在,如果不合法,将会返回一个默认的搜索引擎。

  如果存在并合法,那么可以解析得到协议(http或者https)、域名(baidu)、资源(首页)等信息。

  2.DNS查询

  浏览器会先检查域名信息是否在缓存中。

  再检查域名是否在本地的Hosts文件中。

  如果还不在,那么浏览器会向DNS服务器发送一个查询请求,获得目标服务器的IP地址

  3.TCP传输及运输

  这时候浏览器获得了目标服务器的IP(DNS返回)、端口(URL中包含,没有就使用默认(HTTP默认80端口)),浏览器会调用库函数socket,生成一个TCP流套接字,也就是完成了TCP的封包。

  TCP封包完成之后,就可以传输了,浏览器和服务器就完成了TCP的三次握手,建立了连接,后面就可以请求服务器资源了。

  4.服务器接收请求并响应

  HTTP有很多请求方法,比如:GET/POST/PUT/DELETE等等,我们浏览器输入URL这种,是GET方法。

  服务器接收到GET请求,服务器根据请求信息,获得相应的相应内容。例如我们输入的是:\百度一下,你就知道\,那么意味着访问百度的首页文件

  5.浏览器解析并渲染

  浏览器从服务器拿到了想要访问的资源,大多数时候,这个资源就是HTML页面,当然也可能是一个其他类型的文件。

  浏览器先对HTML文档进行解析,生成解析树(以DOM元素为节点的树)。

  加载页面的外部资源,比如JS、CSS、图片。

  遍历DOM树,并计算每个节点的样式,最终完成渲染,变成我们看到的页面。

抱歉!评论已关闭.