http和https

HTTP

http的请求报文和响应报文结构

http请求报文

分为请求行、请求头、空行、请求正文(可选项,get没有)算法

  1. 请求行:包括请求方法、URL以及消息版本,用空格分隔浏览器

  2. 请求头:为请求报文添加了一下附加信息,由“名:值”组成缓存

  3. 空行:表示头部的结束,接下来是正文,必不可少的一行安全

  4. 请求正文:可选部分,如:get就没有请求正文服务器

http响应报文

主要由状态行、响应头、空行、响应正文四部分组成cookie

  1. 状态行session

    包括协议版本,状态码,状态码描述并发

  2. 响应头网站

    为响应报文添加附加信息加密

  3. 空行

  4. 响应正文

http状态码的含义
  1. 200 OK 服务器已成功处理了请求并提供了请求的网页。

  2. 202 Accepted 已经接受请求,但处理还没有完成。

  3. 204 No Content 没有新文档,浏览器应该继续显示原来的文档。

  4. 206 Partial Content 客户端进行了范围请求。响应报文中由Content-Range 指定实体

  5. 301 Moved Permanently 永久性重定向。请求的网页已永久移动到新位置。

  6. 302(或307) Moved Temporatily 临时性重定向。请求的网页临时移动到新位置。

  7. 304 Not Modified 未修改。自从上次请求后,请求的内容未修改过。

  8. 401 Unauthorized 客户试图未经受权访问受密码保护的页面。应答中会包含一个WWW-Authenticate 头,浏览器据此显示用户名字/密码对话框, 而后在填写合适的Authorization 头后再次发出请求。

  9. 403 Forbidden 服务器拒绝请求。

  10. 403.6- IP address rejected

  11. 404 Not Found 服务器上不存在客户机所请求的资源。

  12. 500 Internal Server Error 服务器遇到一个错误,使其没法为请求提供服务

http1.1新特性
  1. 默认持久链接和流水线

    HTTP/1.1 默认使用持久链接,只要客户端服务端任意一端没有明确提出断开TCP 链接,就一直保持链接,在同一个TCP 链接下,能够发送屡次HTTP 请求。同时,默认采用流水线的方式发送求,即客户端每遇到一个对象引用就当即发出一个请求,而没必要等到收到前一个响应以后才能发出一个请求,但服务器端必须按照接收到客户端请求的前后顺序依次回送响应结果,以保证客户端可以区分出每次请求的响应内容,这样也显著地减小了整个下载过程所须要的时间

  2. 分块传输数据

    HTTP/1.1 引入了分块(chunked)的传输方法。该方法使发送方能将消息实体分割为任意大小的组块(chunk),并单独地发送他们。在每一个组块前面,都加上了该组块的长度,使接收方可确保本身可以完整地接收到这个组块。更重要的是,在最末尾的地方,发送方生成了长度为零的块,接收方可据此判断整条消息都已安全地传输完毕。这样也避免了在服务器端占用大量的缓存。Transfer-Encoding:chunked 向接收方指出:响应将被分组块,对响应分析时,应采起不一样于非分组块的方式。

  3. 状态码100 Continue

    Continue,用于客户端在发送POST 数据给服务器前,征询服务器的状况,看服务器是否处理POST 的数据

  4. Host 域

经常使用的HTTP 方法
  1. GET: 从服务器中获取一份文档,即用于请求访问已经被URI(统一资源标识符)识别的资源,能够经过URL 传参给服务器。

  2. POST:用于传输信息给服务器,主要功能与GET 方法相似,但通常推荐使用POST方式。

  3. PUT: 传输文件,报文主体中包含文件内容,保存到对应URI 位置。

  4. HEAD: 得到报文首部,与GET 方法相似,只是不返回报文主体。

  5. DELETE:删除文件,与PUT 方法相反,删除对应URI 位置的文件。

  6. OPTIONS:查询相应URL 支持的HTTP 方法。

  7. trace:对可能通过代理服务器传送到服务器上去的报文进行追踪

HTTP 的特色
  1. 支持客户端/服务器端通讯模式。

  2. 简单方便快速:当客户端向服务器端发送请求时,只是简单的填写请求路径和请求方法便可,而后就能够经过浏览器或其余方式将该请求发送就好了。HTTP 协议比较简单,因此HTTP 服务器的程序规模相对比较小,从而使得

  3. 通讯的速度很是快。

  4. 灵活:Http 协议容许客户端和服务器端传输任意类型任意格式的数据对象。这些不一样的类型Content-Type 标记。

  5. 无链接:无链接的含义是每次创建的链接只处理一个客户端请求。当服务器处理完

  6. 客户端的请求以后,而且收到客户的反馈应答后,服务器端当即断开链接,节省传输时间。

  7. 无状态:指协议对于请求的处理没有记忆功能。无状态意味着若是要再次处理先前的信息,则这些先前的信息必需要重传,这就致使了数据量传输的增长。可是从另外一方面来讲,当先前的信息服务器不在使用的时候,则服务器的响应将会很是的快。

http 的安全问题
  1. 通讯使用明文不加密,内容可能被窃听

  2. 不验证通讯方身份,可能遭到假装

  3. 没法验证报文完整性,可能被篡改

HTTPS 就是HTTP 加上加密处理(一般是SSL 安全通讯线路)+认证+完整性保护

HTTPS

做用
  1. 内容加密:创建一个信息安全通道,来保证数据传输的安全

  2. 身份认证:确认网站的真实性

  3. 数据完整性:防止内容被第三方冒充或者篡改

基于https请求的数据传输中用到的技术
  1. 对称加密算法

  2. 非对称加密算法

  3. 散列算法

  4. 数字证书

HTTP 协议运行在TCP 之上,HTTPS 是运行在SSL/TLS 之上的HTTP 协议,SSL/TLS 运行在TCP 之上

session 何时被建立

直到某server端程序(如Servlet)调用HttpServletRequest.getSession(true)这样的语句时才会被建立。

session 什么时候被删除
  1. 程序调用HttpSession.invalidate()

  2. 距离上一次收到客户端发送的session id 时间间隔超过了session 的最大有效时间

  3. 服务器进程被中止

Cookie 与Session 的区别
  1. cookie 数据存放在客户端,用来记录用户信息的,session 数据放在服务器上。

  2. 正是因为Cookie 存储在客户端中,对客户端是可见的,客户端的一些程序可能会窥探、复制甚至修改Cookie 中的内容。而Session 存储在服务器上,对客户端是透明的,不存在敏感信息泄露的危险。

  3. Session 是保存在服务器端的,每一个用户都会产生一个Session。若是并发访问的用户很是多,会产生很是多的Session,消耗大量的服务器内存。所以并发访问量极高的网站,是不太可能使用Session 来追踪客户会话的。

  4. cookie 的容量和个数都有限制。单个cookie 的容量不能超过4KB,不少浏览器都限制一个站点最多保存20 个cookie,而session 没有此问题。

相关文章
相关标签/搜索