HTTP--Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。
1 主要特点
1)支持客户端/服务器模式
2)简单快速:客户端向服务器请求服务时,只需传送方法和路径。请求常用的方法有GET、HEAD、POST,每种方法规定了客户端与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度快
3)灵活:HTTP协议允许传输任意类型的对象,正在传输的类型由Content-Type标记。
4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求,收到客户端的应答后,即断开连接。采用这种方式,可以节省传输时间。
5)无状态:HTTP协议是无状态协议,无状态是指协议对于事务处理是没有记忆功能的。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就比较快。
2 HTTP协议请求/响应步骤
- 客户端连接到web服务器
- 发送HTTP请求
- 服务器接收HTTP请求并返回HTTP响应
- 释放TCP连接
- 客户端浏览解析HTML内容
3 HTTP状态码:5种可能的取值
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已成功接收、理解、接受
3xx:重定向--要完成请求必须进行更近一步的操作
4xx:客户端错误--请求语法错误或者请求无法实现
5xx:服务端错误--服务器未能实现合法的请求
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。
1 SSL(Security Sockets Layer 安全套接层)
- 为网络通信提供安全及数据完整性的一种协议
- 是操作系统对外的API,SSL 3.0后更名为TLS
- 采用身份验证和数据加密来保证网络通信的安全和数据的完整性
2 HTTPS的传输流程
- 浏览器将支持的加密算法发送给服务器
- 服务器选择一套浏览器支持的加密算法,以证书的形式会发给浏览器
- 浏览器验证证书的合法性,并结合证书公钥进行加密消息发送给服务器
- 服务器使用私钥解密信息,验证哈希,加密响应消息回复给浏览器
- 浏览器解密响应消息,并对消息进行验证,之后进行加密交互数据
问题:
1)在浏览器地址栏键入URL,按下回车之后经历的流程
- DNS解析
- TCP连接
- 客户端发送HTTP请求
- 服务器接收请求并发送HTTP响应
- 客户端浏览器解析渲染页面
- 连接结束
2)GET请求和POST请求的区别
从三个层面来答:
1、HTTP报文层面:
- GET将信息放在URL中,POST放在报文体中
- 因为GET请求将信息放在URL中,所以GET请求只能进行URL编码,ASCII字符,且在URL中传送的参数长度是有限的。而POST支持多种编码、多种字符,长度没有限制
- GET没有POST安全,因为GET参数暴露在URL中,所以不能用来传递敏感信息
- GET产生一个数据包,而POST产生两个:对于GET请求,浏览器会把HTTP header和data一起发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
2、数据库层面:GET符合幂等性和安全性,POST不符合
3、其他层面:
- GET在浏览器回退时是无害的,而POST会再次提交请求
- GET请求会被浏览器主动缓存,而POST不会,除非手动设置
- GET请求参数会被完整的保留在浏览器的记录里,而POST中的参数不会被保留
3)HTTPS和HTTP的区别
- HTTPS需要到AC申请证书,HTTP不需要
- HTTPS是密文传输,HTTP是明文传输
- 连接方式不同,HTTPS默认端口是443,HTTP默认使用80端口
- HTTPS=HTTP+加密+认证+完整性保护,较HTTP安全