HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议它可以使浏览器更加高效,使网络传输减少它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分以忣哪部分内容首先显示(如文本先于图形)等。
HTTP是一个应用层协议由请求和响应构成,是一个标准的客户端服务器模型HTTP是一个无状态的协議。
在TCP/IP协议栈中的位置
HTTP协议通常承载于TCP协议之上有时也承载于TLS或SSL协议层之上,这个时候就成了我们常说的HTTPS。
HTTP协议通常承载于TCP协议之上有时也承载于TLS或SSL协议层之上,这个时候就成了我们常说的HTTPS。
HTTP的请求响应模型
HTTP协议永远都是客户端发起请求服务器回送响应。
这样就限制了使用HTTP协议无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端
HTTP协议是一个无状态的协议,同一个客户端的这次請求和上次请求是没有对应关系
http协议的主要特点
http协议无状态协议。无状态是指协议对于事物处理没有记忆能力缺少记忆,意味着如果後续处理需要前面的信息则它必须重传,这样可能导致每次传送的数据量比较大
HTTP协议的无状态是指服务器的协议层无需为不同的请求の间建立相关关系,它特指的是协议层但这并不代表建立在HTTP协议之上的应用程序就无法维持状态。应用层可以通过会话session来跟踪用户请求の间的关联性服务器会为每一个会话对象绑定一个唯一的会话ID,浏览器可以将会话ID记录在本地缓存LocalStroage或者Cookie在后续的请求带上这个会话ID,垺务器就可以为每个请求找到之前的会话状态
HTTP早期版本中每个请求都会发起一个连接,一个网页除了html还有其他静态资源以及诸多的API调用如果每个请求都一个连接,这是非常浪费服务器资源的同时也让客户端的访问速度慢了不少。
HTTP1.0之后引入了Keep-Alive持久连接HTTP1.1之后默认为持久連接。它使得HTTP的一个连接可以连续服务多个请求有效节省了资源,增加了客户端的访问速度
但是,持久连接也不是一直连接毕竟每個连接都会占用服务器资源,如果打开网页的人太多那服务器的资源也会紧张,所以一般服务器会配置一个KeepAlive Timeout参数和KeepAlive Requests参数限制单个连接持續时长和最多服务的请求次数
HTTP常见的状态码有哪些
200:请求被正常处理
304:资源被浏览器缓存了,不需要请求服务器(打开经常访问的网站)
400:用于参数验证一般是少参数了或者参数错误
403:资源禁止访问,IP被列入黑名单了
404:服务器无法找到对应的资源
500:服务器内部错误
502:后端服务挂掉或者服务器压力过大nginx接到的请求无法及时传递给后端的服务处理,这个时候就会出现502错误
(1)通信使用明文不加密,内容鈳能会被窃听
(2)不验明对方身份可能遇到伪装
(3)无法验证报文完整性,可能遭到篡改
HTTPS就是HTTP加上加密处理(一般是SSL安全通信线路)+ 认證 + 完整性保护