HTTP 协议详解

瘦欲@ 提交于 2020-02-18 00:41:06
  1. HTTP 协议定义

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议 (HTTP) 是一种通信协议,它允许将超文本标记语言 (HTML) 文档从 web 服务器传送到客户端的浏览器

  1. 网页是如何显示的
  2. Request 与 Response

我们输入 URL 后,我们的浏览器给 Web 服务器发送一个 Request,Web 服务器接到 Request 后进行处理,生成响应的 Response,然后发送给浏览器,浏览器解析 Response 中的 HTML,这样我们就看到了网页

图片

代理服务器 - 网络信息的中转站,功能如下:

1.提高访问速度,大多数的代理服务器都有缓存功能

2.突破限制,也就是翻墙

3.隐藏身份

b. 网页显示 浏览器需 发送多次 Request

1.当在浏览器输入 URL 时,浏览器发送一个 Request 取获取 URL 的html,服务器把 Response 发送回给浏览器

2.浏览器分析 Response 中的 HTML,发现其中引用了很多其他文件,如 图片、CSS文件、JS文件

3.浏览器会自动再次发送 Request 去获取图片、CSS、JS等

4.等所有文件都下载成功后,网页就被显示出来了

  1. HTTP 的无状态 与 Connection:keep-alive

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系

HTTP 是一个 无状态 的 面向连接 的协议,无状态不代表 HTTP 不能保持 TCP 连接,更不能代表 HTTP 使用的是 UDP 协议

从 HTTP/1.1 起,默认都开启了 Keep-Alive,保持连续特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

Keep-Alive 不会永久保存连接,它有一个保持时间,可以在不同的服务器软件中设定

  1. 状态码分类

HTTP 状态码被分为五大类

已定义范围 分类
1XX 100-101 信息提示(未见过)
2XX 200-206 成功
3XX 300-309 重定向
4XX 400-415 客户端错误
5XX 500-505 服务器错误
  1. HTTP 缓存
  2. 定义

HTTP 缓存指:当 Web 请求抵达缓存时,如果本地有 “已缓存” 的副本,就可以从本地存储设备而不是从原始服务器中提取这个文档

  1. 好处

减少冗余的数据传输,节省网费;

减少了服务器的负担,大大提高了网站的

加快了客户端加载网页的速度

  1. 如何判断新鲜度,即:是否使用

第一种,浏览器把缓存文件的最后修改时间通过 header “If-Modified-Since” 来告诉 Web 服务器。

第二种,浏览器把缓存文件的 ETag,通过 header “If-None-Match” 来告诉Web服务器

另:“If-Modified-Since” :存储的是时间,如 Mon,19 Nov 2019 04:58:57 GMT

“ETag”:是实体标签(Entity Tag)的缩写,根据实体内容生成的一段 hash 字符串

为啥使用 ETag ?-为了解决时间标签无法解决的问题

1.某些服务器不能精确得到文件的最后修改时间,无法通过时间来判断是否更新了

2.某些文件的修改非常频繁,在秒以下的时间内进行修改,而时间标签只能精确到秒

3.一些文件的最后修改时间变了,但内容未变,我们不希望客户端认为这个文件修改了

  1. Cookie
  2. cookie 由来与定义

cookie 是 记录用户状态的 一小段文本信息。

用于 客户端

由服务器发到客户端的特殊信息,这些信息以文本文件的方式存放在客户端;然后客户端每次向服务器发送请求时,都带上这些特殊信息。

当用户使用浏览器访问一个支持 Cookie 的网站的时候,用户会提供包括用户名在内的个人信息且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时,也会发回这些个人信息,存放在 HTTP 响应头中;

接收后,浏览器会想这些信息存放在一个统一的位置。

  1. 分类:会话 cookie 和持久 cookie

会话 cookie :是一种临时的 cookie,它记录了用户访问站点时的设置和偏好,关闭浏览器,会话 cookie 就被删除

持久 cookie:存储在硬盘上,不管浏览器退出,或电脑重启,持久 cookie 都存在,但持久 cookie 有过期时间

  1. Cookie 使用

浏览器把 cookie 通过 HTTP Request 中的 “Cookie: header” 发送给 Web 服务器

Web 服务器通过 HTTP Response 中的 “Set-Cookie: header” 把 cookie 发送给浏览器

  1. 使用 Cookie 自动登录原理

1.用户打开 IE 浏览器,在地址栏输入 URL 。

2.IE 首先会在硬盘中查找关于 URL 的 cookie(已保存用户名与密码),然后把 cookie 放到 HTTP Request中,再把 Request 发给 Web 服务器。

3.Web 服务器返回 URL 界面,此时已登录。

  1. Session 机制
  2. 由来与定义

用于 服务器,为客户端开辟的存储空间,把客户端信息以某种形式记录在服务器上,用于保持状态

如果说 cookie 机制是通过检查客户身上的 “通行证” 来确定客户身份的话,那 Session 就是通过检查服务器上的 “客户明细表” 来确认客户身份。

session 相当于程序在服务器上建立的一份客户档案,客户来访的时候只需查询客户档案表就可以了。

  1. Cookie与Session的区别
  2. cookie数据存放在客户的浏览器上,session数据放在服务器上;
  3. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;
  4. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE;
  5. 单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K;

Cookie和Session的方案虽然分别属于客户端和服务端,但是服务端的 session 的实现对客户端的 cookie 有依赖关系的。

服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie,因此当我们完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!