美文网首页
HTTP请求

HTTP请求

作者: 方_糖 | 来源:发表于2020-05-08 16:18 被阅读0次

而 HTTP 协议,正是建立在 TCP 连接基础之上的,是一种应用层协议HTTP 是一种允许浏览器向服务器获取资源的协议,是 Web 的基础,通常由浏览器发起请求,用来获取不同类型的文件,例如 HTML 文件、CSS 文件、JavaScript 文件、图片、视频等。此外,HTTP 也是浏览器使用最广的协议,所以要想学好浏览器,就要先深入了解 HTTP。

HTTP和TCP的关系

HTTP 的内容是通过 TCP 的传输数据阶段来实现的(TCP是如何传输的详情请参考上篇文章IP、UDP、TCP

TCP 和 HTTP 的关系示意图

浏览器是怎么发起HTTP请求的?

如果你在浏览器地址栏里输入网站的地址 https://www.jianshu.com/p/071e86a20cda 会发生什么呢?

1. 构建请求行

请求行信息:GET /index.html HTTP1.1

2. 查找缓存

在真正发起网络请求之前,浏览器会先在浏览器缓存中查询是否有要请求的文件。

当浏览器发现请求的资源已经在浏览器缓存中存有副本,它会拦截请求,返回该资源的副本,并直接结束请求,而不会再去源服务器重新下载。这样做的好处有:

  • 缓解服务器端压力,提升性能(获取资源的耗时更短了)
  • 对于网站来说,缓存是实现快速资源加载的重要组成部分。

如果缓存查找失败,就会进入网络请求过程了。

3. 准备 IP 地址和端口

怎么获取 IP 地址 ?
把url(如:time.geekbang.org)通过DNS(域名系统)转换为IP地址(如 39.106.233.176)

浏览器还提供了 DNS 数据缓存服务,如果某个域名已经解析过了,那么浏览器会缓存解析的结果,以供下次查询时直接使用,这样也会减少一次网络请求。

拿到 IP 之后,接下来就需要获取端口号了。通常情况下,如果 URL 没有特别指明端口号,那么 HTTP 协议默认是 80 端口

4. 等待 TCP 队列

现在已经把端口和 IP 地址都准备好了,那么下一步是不是可以建立 TCP 连接了呢?
答案依然是“不行”。
Chrome 有个机制,同一个域名同时最多只能建立 6 个 TCP 连接,如果在同一个域名下同时有 10 个请求发生,那么其中 4 个请求会进入排队等待状态,直至进行中的请求完成。当然,如果当前请求数量少于 6,会直接进入下一步,建立 TCP 连接。

5. 建立 TCP 连接
6. 发送 HTTP 请求
HTTP 请求数据格式

服务器端如何处理 HTTP 请求流程?

1. 返回请求
服务器响应的数据格式
2. 关闭 TCP 连接
3. 重定向

到这里似乎请求流程快结束了,不过还有一种情况你需要了解下,比如当你在浏览器中打开 geekbang.org 后,你会发现最终打开的页面地址是 https://www.geekbang.org

这两个 URL 之所以不一样,是因为涉及到了一个重定向操作。

重定向到另一个网址时,返回的状态码是301

相关文章

  • 【HTTP】HTTP请求

    1、HTTP协议通信流程: 2、HTTP请求包含内容 一个HTTP请求报文由请求行(request line)、请...

  • 动脑学院架构篇-HTTP请求、响应报文格式

    【HTTP】HTTP请求、响应报文格式 HTTP请求报文格式: HTTP请求报文主要由请求行、请求头部、请求数据3...

  • IDEA自带http请求工具

    编辑http请求文件(文件名后缀为.http) GET请求 POST请求 执行http请求 查看http结果

  • HTTP

    HTTP简介 HTTP请求格式 HTTP规定,HTTP请求由如下3部分构成 请求方法、URI和HTTP的版本 请求...

  • HTTP协议报文及Chrome Network常用功能

    HTTP协议报文 Http协议报文分为【Http请求报文】和【Http响应报文】 HTTP请求报文 Http请求报...

  • HTTP 请求

    Code=-999 错误400 ------参数错误网络请求出现Code=-1022

  • http请求

    Request 请求行。 Method+URL+Version 请求头。 字段名+字段值----+请求内容 R...

  • http请求

    ajax原生 angular rxjs

  • http 请求

  • Http请求

    首先让我们从一个问题入手,当我们在浏览器中输入http://www.baidu.com/访问百度的时候浏览器做了哪...

网友评论

      本文标题:HTTP请求

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