HTTP、HTTPS和SSH协议:
HTTP、HTTPS和SSH协议都属于应用层协议;
HTTP:
超文本传输协议;
HTTPS:
安全的超文本传输协议;(在HTTP协议基础上加入了SSL协议保证安全传输);
SSH:
安全外壳协议;
HTTP&HTTPS主要应用于Web浏览器和网站服务器间传递数据
HTTP以铭文方式发送,不提供任何方式的加密,如果被攻击者截取了web浏览器和网站服务器之间传输的报文,就可以直接读取其中的信息;
HTTPS为了数据传输的安全,在HTTP协议的基础上加了SSL;(SSL协议依靠正数来验证服务器的身份,并为浏览器和服务器之间的通信加密)
SSH协议为建立在应用层基础上的安全协议,SSH式目前较可靠的,专门为远程登陆会话和其他网络服务提供安全性的协议,并且SSH传输的数据是经过压缩,加快了数据的传输速度;
SSH提供两种级别的验证:基于口令的安全验证;基于密钥的安全验证;
SSH协议的组成部分:传输层协议;用户认证协议;连接协议
HTTP方法
报文结构:开始行、首部行、实体主题(数据部分)
HTTP请求报文中的请求方法:
get:获取资源
当前网络中绝大部分请求是get方法。
head: 获取报文首部
和get方法一样,但是不返回报文实体的主体部分。
主要用于确认URL的有效性以及资源更新的日期时间等。
post: 传输实体的主体
post请求主要用来传输数据,而get请求主要用来获取资源。 下文有
具体比较。
put:上传文件
由于自身不带验证机制,任何人都可以上传文件,存在安全性问题,一般不使用该方法。
patch:对资源进行部分修改
put也可以用于修改资源,但是只能完全替代原始资源,patch允许部分修改。
delete :删除文件
与put功能相反,并且不带验证机制,任何人都能删。
options :支持查询的方法
查询指定的url能够支持的方法。会返回Allow:GET,POST.,OPTIONS 等这样的内容。
connect:要求在与代理服务器通信时建立隧道
使用SSL和TLS协议把通信内容加密后经网络隧道传输。
trace :追踪路径
服务器会将通信路径返回给客户端。
发送请求时,在MAX-Forwords首部字段中填入数值,每经过一个服务器就会减1,当数值为0时就会停止传输。
HTTP状态码
1xx开头 : 信息
100 Continue: 表明到目前为止都很正常。
2xx开头 : 成功
200 OK
204 No content: 请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端给服务端发送消息,而不需要返回数据时使用。
3xx开头:重定向
301 :永久性重定向
302 :临时重定向
303 : 临时性重定向,但是明确要求客户端应该采用get方法获取资源。
4xx开头:客户端错误
400 :请求报文中存在语法错误
401 :该状态码表示发送的请求需要认证信息(BASIC认证,DIGEST认证)。 如果之前进行过一次认证,则表示用户认证失败。
403 :请求被拒绝
404 :没有发现url对应的ip
5xx 服务器错误:
500 : 服务器正在执行请求时发生错误。
503: 服务器暂时处理超负荷或者停机维护状态,无法处理请求。
HTTPS如何保障安全的
HTTP是应用层协议,位于HTTP协议之下是传输协议TCP。TCP负责传输,HTTP则定义则定义了数据如何进行包装;
HTTPS(端口号:443)相对于HTTP(端口号80)其实就是在HTTP跟TCP中间多加了一层加密层SSL/TLS
安全传输曾协议(TSL)用于在两个通信应用程序之间提供保密性和数据完整性;
HTTPS如何加密数据的:
常见的加密手段:对称加密;非对称加密;
**对称加密:**加密数据所用的密钥和解密数据用的密钥是一样的;
优点:加密,解密效率较高;
缺点:数据发送方,数据接收方需要协商,共享同一把密钥,并确保密钥不泄露给其他人。对于多个有数据交换需求的个体,两两之间需要分配并维护同一把密钥,这个带来的成本基本是不可接受的。
非对称加密:加密数据用的密钥(公钥),跟解密数据用的密钥(私钥)是不一样的;
优点:安全性更强;
缺点:公钥佛如获取需要证书,成本较高,效率也低;