1、HTTP和HTTPS基本概念
(1)HTTP:超文本传输协议,位于应用层
(2)HTTPS:超文本传输安全协议,它并非新的传输协议,只是在原有HTTP的基础上将接口协议替换成SSL/TLS协议
2、通信过程
(1)HTTP
简要的来说就是:建立连接——发送请求数据包——返回响应数据包——关闭连接
(2)HTTPS
①大致分为四大阶段:
TCP三次握手——SSL/TLS连接——HTTP请求以及响应——TCP四次挥手
②简要分析其实就是:建立连接——Request请求数据包数据格式——Request返回数据包数据格式——关闭连接
③但真正的HTTPS通信过程不止如此,具体如下:
客户端发起SSL通信(报文中包含了客户端支持的SSL指定版本,加密组件列表)
————服务端通过SSL通信,将与客户端的SSL版本及加密组件列表相同的一组发送到客户端,同时服务端回想客户端发送Certificate报文(报文包含公开密钥证书)
————客户端验证证书是否合法(如果证书可信任,则在网址前面会出现这个图标,否则会给出不受信任的提示)。如果合法且受信任或用户接受了不受信证书,客户端将随机生成一个Pre-master secret,并且通过接收到的公钥加密
————服务端会通过私钥解密出Pre-master secret随机密码穿,解密通过Pre-master secret加密发来的握手信息,同时验证hash与浏览器发来的hash是否一致,然后通过密码加密一段握手信息,发送给客户端
————客户端解密计算握手信息中的hash,如果与服务端发来的hash一致时,握手过程结束,利用对称加密算法进行加密
3、HTTP和HTTPS的区别
(1)使用的端口的不同
HTTP使用的端口号是80,HTTPS使用的端口号是430
(2)可以这么说HTTPS是HTTP的安全版,可以在下面的表看出,HTTP是超文本传输,连接是非常简单的且是无状态的;而HTTPS则是使用了根据安全性的SSL/TLS加密传输协议。
HTTP | HTTPS |
---|---|
TCP | TCP |
/ | SSL/TLS |
IP | IP |
4、Request请求数据包数据格式
(1)请求头
(2)请求行
(3)空行
(4)请求体
5、Response返回数据包数据格式
(1)状态行
(2)响应头标
(3)空行
(4)响应数据
6、HTTP规划定义的8中可能的请求方法
(1)GET:检索URL中标识资源的一个简单请求
(2)HEAD:与GET方法相同,服务器只返回状态和头标,并不返回请求文档
(3)POST:服务器接收被写入客户端输出流中的数据请求
(4)PUT:服务器保存请求数据作为指定URL新内容的请求
(5)DELETE:服务器删除URL中命令的资源请求
(6)OPTIONS:关于服务器支持的请求方法信息的请求
(7)TRACE:web服务器反馈HTTP请求和其头标的请求
(8)CONNECT:文档化,但当前未实现的一个方法,预做隧道处理
7、主要的字符意思
下图是登录百度网站时的网页响应头标、请求标头源代码
(1)HOST:主机豁域名地址
(2)Accept:浏览器豁其他客户可以接受的MIME文件格式,Servlet可以根据它判断并返回适当的文件格式
(3)User-Agent:客户浏览器名称
(4)Host:对应网址URL中的Web名称和端口号
(5)Accept-Langeuage:浏览器支持的语言类
(6)connection:服务器是否可以维持固定的HTTP连接。HTTP是无连接的;HTTP/1.1使用Keep-Alive为默认值
(7)Cookie:具体是指浏览器寄存的小型数据体,它可以记载和服务器相关的用户信息,也可用来实现会话功能。
(8)Rerferer:表明产生请求的网页URL
8、HTTP响应码
(1)1xx:请求收到信息,继续处理信息
(2)2xx:行为被成功接收、解析和采纳
(3)3xx:重定向,为完成请求,必须进一步执行动作
(4)4xx:客户端错误
(5)5xx:服务器错误