# Nginx 基础 Http 协议

# 1.Http 协议介绍

# 1.1 什么是 URL

通常我们在访问一个网站页面时,请求到的内容通称为 "资源"。而 “资源 “这一概念非常宽泛,它可以是一份文档,一张图片,或所有其他你能够想到的格式。每个资源都由一个 URI 来进行标识;比如: http://fj.ixuyong.cn/public/tt.jpeg 这样的资源,我们会将该其称为 URL 地址;百度百科解释:URL 简称统一资源定位符,用来唯一地标识万维网中的某一个资源。URL 由协议、主机名称、端口以及文件名几部分构成。

# 1.2 什么是 HTML

Html 简称 Web Page,一个完整的 Html 页面可能会包含很多个 URL 的资源。(反之:我们也可以理解一个 HTML 文件是由多个不同的 URL 资源拼接而成的。)

# 1.3 什么是 HTTP

HTTP (Hyper Text Transfer Protocol) 中文名为超文本传输协议。是一种能够获取如 HTML 这样网络资源的通讯协议。它是在 Web 上进行数据交换的基础。HTTP 的概述参考 URL 简单理解:HTTP 协议就是将用户请求的 HTML 页面从一台 Web 服务器传输到客户端浏览器的一种协议。

# 1.4 URL、HTML、HTTP 之间关系

一个完整的 HTML 页面是由多个不同的 Url 资源组成的;而 HTTP 协议主要是用来传输这种 HTML 页面的;

# 2.Http 工作原理

# 2.1 图解 HTTP 工作原理

我们详细的了解下 HTTP 的工作原理,我们到底是如何获取到服务器上的页面。

3.png

# 2.2 HTTP 工作原理总结

整个用户访问网站过程就是 DNS-TCP-HTTP

2.png

# 3.Http 请求 Request

HTTP 请求的一个例子:

4.png

# 3.1 请求 Method

客户端向服务端发送请求时,会根据不同的资源发送不同的请求方法 Method:

  • GET:用于获取 URI 对应的资源;(比如看朋友圈)
  • POST:用于提交请求,可以更新或者创建资源,是非幂等的;(发布朋友圈)
  • PUT:用于向指定的 URI 传送更新资源,是幂等的;(更新朋友圈)
  • DELETE:用于向指定的 URI 删除资源;(比如删朋友圈)
  • HEAD:用于检查 (仅获取 Header 部分的内容);

一般创建对象时用 POST,更新对象时用 PUT;

  • PUT 是幂等的,POST 是非幂等的;
  • 幂等:对于相同的输入,每次得到的结果都是相等的;
# 3.2 请求 Header
:authority: www.xuliangwei.com
:method: GET
:path: /
:scheme: https
Accept: text/html,  # 请求的类型
Accept-Encoding: gzip, deflate  # 是否进行压缩
Accept-Language: zh-CN,zh;q=0.9 # 请求的语言
Cache-Control: max-age=0 # 缓存
Connection: keep-alive   # TCP 长连接
Host: www.oldboyedu.com  # 请求的域名
If-Modified-Since: Fri, 04 May 201808:13:44 GMT  # 修改的时间
User-Agent: Mozilla/5.0  # 请求浏览器的工具
# 3.3 请求 Connection

Http 请求中的长连接与短连接是什么:

  • http1.0 协议使用的是短连接:建立一次 tcp 的连接,发起一次 http 的请求,结束,tcp 断开。
  • http1.1 协议使用的是长连接:建立一次 tcp 的连接,发起多次 http 的请求,结束,tcp 断开。
  • HTTP 协议版本参考下图,HTTP1.0 使用的是短连接,HTTP1.1 串行连接,与 HTTP2.0 并行连接。

5.png

# 4.Http 响应 Response

HTTP 响应的一个例子:

6.png

# 4.1 响应 Header
HTTP/1.1 200 OK        # 返回服务器的 http 协议,状态码
Date: Fri, 14 Sep 2018 09:14:28 GMT  # 返回服务器的时间
Server: Apache/2.4.6   # 返回服务器使用的软件 Apache
Connection: Keep-Alive # TCP 长连接
Keep-Alive: timeout=5, max=100  # 长连接的超时时间
# 4.2 响应 Code

http 响应状态码 Status-Code 以 3 位数字组成,用来标识该请求是否成功,比如是正常还是错误等。

Code说明
200表示成功客户端成功接收到了服务端返回的数据,这是最常见的状态码
206客户端发完请求后,服务端只是返回了部分数据,就会出现该状态码,例如当下载一个很大的文件时,在没有下载完成前就会出现该状态码
301永久重定向 (redirect) http-->https
302临时重定向 (redirect)
400客户端请求语法错误,服务端无法理解
401服务端开启了用户认证,而客户端没有提供正确的验证信息
403服务端不允许客户端访问,或者没有找到默认返回页面 (默认所有的 web 服务器返回的页面都是 index.html、也可以调整默认返回页面 app.html)
404客户端请求的资源不存在 (路径写错了;服务端真的没有;)
413客户端向服务端上传一个比较大的文件,并且文件大小超过了服务端的限制 1MB;
500服务端出现了内部错误,需要进行人为排查故障 (链接数据库类服务异常,会出现 500 错误)
502服务器充当代理角色时,后端被代理的服务器不可用或者没有正常回应
503服务当前不可用,由于超载或系统维护,服务器暂时的无法处理客户端请求
504服务器充当代理角色时,后端的服务端没有按时返回数据,超时了

# 5.Http 相关术语

# 5.1 什么是 PV

PV 即页面浏览量:比如用户访问一个网站算 1 个 pv,刷新一次页面则累计 pv+1,如果多次打开或刷新同一页面则浏览量累计。

# 5.2 什么是 UV

UV 即独立访客,访问网站的一台电脑客户端为一个访客。可以理解成访问某网站的电脑的数量。比如电脑、手机算 2 个 UV,无论访问多少次网站,最终 UV 数量就是 2。

# 5.3 什么是 IP

IP 即独立公网 IP 数,是指 1 天内多少个独立的 IP 浏览了页面,比如你在家通过拨号上网访问某个网站,此时网站会记录你的公网 IP 地址。那如果你在公司和很多同事同时访问一个网站,那该网站会记录多少个公网 IP 呢?(看公司有多少个出口公网地址)

# 5.4 什么是并发

并发:指的是同时,我们可以理解为一段时间内 (比如 10 秒),网站支持同时访问的人数,假设 10s 并发值如果为 500 时,一天能达到多少 PV? 500 * 6 * 60 * 24 =4320000

此文章已被阅读次数:正在加载...更新于

请我喝[茶]~( ̄▽ ̄)~*

Xu Yong 微信支付

微信支付

Xu Yong 支付宝

支付宝