HTTP和HTTPS

一、HTTP

(1)定义

  HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。

  HTTP 是一种无状态 (stateless) 协议, HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理(非持久化)。

(2)HTTP请求组成

  由请求行,消息报头,空行,请求正文三部分构成

  

 

 

 

 

 

 

 

HTTP请求状态行:请求行由请求MethodURL 字段和HTTP Version三部分构成

  HTTP请求头:消息报头由一系列的键值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息,主要包括:

 

 

 HTTP请求正文:只有在发送POST请求时才会有请求正文,GET方法并没有请求正文。

(3)HTTP响应组成

  状态行,消息报头,响应正文

 

 

 HTTP响应状态行:状态行也由三部分组成,包括HTTP协议的版本,状态码,以及对状态码的文本描述

HTTP响应状态码:200: OK - 客户端请求成功 400: Bad Request - 客户端请求有语法错误,不能被服务器所理解 401: Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403: Forbidden - 服务器收到请求,但是拒绝提供服务 404: Not Found - 请求资源不存在,eg:输入了错误的URL 500: Internal Server Error - 服务器发生不可预期的错误 * 503: Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后,可能恢复正常

 (4)五大特点

  1. 支持客户/服务器模式。
  2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GETHEADPOST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  3. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  4. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。早期这么做的原因是请求资源少,追求快。后来通过Connection: Keep-Alive实现长连接
  5. 无状态HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

(5)非持久连接和持久连接

 在实际的应用中,客户端往往会发出一系列请求,接着服务器端对每个请求进行响应。对于这些请求|响应,如果每次都经过一个单独的TCP连接发送,称为非持久连接。反之,如果每次都经过相同的TCP连接进行发送,称为持久连接。

(6)缺点

  1. 通信使用明文(不加密),内容可能会被窃听
  2. 不验证通信方的身份,因此有可能遭遇伪装
  3. 无法证明报文的完整性,所以有可能已遭篡改

 二、HTTPS

  HTTP 协议中没有加密机制,但可以通 过和 SSL(Secure Socket Layer, 安全套接层 )或 TLS(Transport Layer Security, 安全层传输协议)的组合使用,加密 HTTP 的通信内容。属于通信加密,即在整个通信线路中加密。

  HTTP + 加密 + 认证 + 完整性保护 = HTTPS(HTTP Secure )

  HTTPS 采用共享密钥加密(对称)和公开密钥加密(非对称)两者并用的混合加密机制

 

 

 

HTTPS握手过程的简单描述如下:

 

 

 HTTPS的不足

  1. 加密解密过程复杂,导致访问速度慢
  2. 加密需要认向证机构付费
  3. 整个页面的请求都要使用HTTPS

HTTP的端口号是80

HTTPS的端口号是443

posted @ 2021-03-29 20:46  Eliphaz  阅读(102)  评论(0编辑  收藏  举报