什么是http?
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
由三部分组成
-
起始行(start line): 描述请求或者请求的基本信息
-
头部字段集合(header): 使用key-value 更新的说明报文
-
消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据
TCP(Transmission Control Protocol)面向连接的,可靠的,基于字节流的传输层通信协议
特点:
- 基于连接的:数据传输之前需要建立连接
- 全双工的:双向传输
- 字节流:不限制数据大小,打包成报文段,保证有序接收,重复报文自动丢失
- 流量缓冲:解决双方处理能力的不匹配
- 可靠的传输服务:保证可达,丢包时通过重发机制实现可靠性
- 拥塞控制:防止网络出现恶性拥塞
TCP连接管理
TCP连接:四元组[源地址,源端口,目的地址,目的端口]
建立连接TCP三次握手
- 同步通信双方初始序列号(ISN,initial sequence number)
- 协商TCP通信参数(MISS, 窗口信息, 指定校验和算法)
如何进行握手?
- 第一次:客户端发送一个SYN seq=x的请求报文…以及其他信息(x、y为一个序列号)
- 第二次:服务断接收SYN sqe=x的请求信息,并且准备向客户端发送ACK ack =
x+1的请求报文(通过这个过程能够保证数据的可靠性) ,其中的x为接收到的客户端数据,再次发送SYN seq =y 的请求报文 - 第三次:如上
四次挥手
-
A发送FIN数据包,代表A不在发送数据
-
B收到请求,开始应答,避免A重新发送FIN重试(应答机制)
-
B处理完数据之后关闭,关闭连接,及发送FIN请求
-
A收到q请求后发送ACK应答,B服务器可以释放连接等待2MSL后释放连接
1、防止访问丢失,导致B重复发送FIN 2、防止滞留在网络种的报文,对新建立的连接造成数据扰乱
什么是https?
由于HTTP天生"明文"的特点,整个传输过程完全透明,任何人都可以在链路种获取、修改或者伪造请求/影响报文,数据不具可靠性,因此诞生了HTTPS协议。
HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分。
客户端在使用 HTTPS 方式与 Web 服务器通信时有以下几个步骤
(1)客户使用 https 的 URL 访问 Web 服务器,要求与 Web 服务器建立 SSL 连接。
(2)Web 服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与 Web 服务器开始协商 SSL 连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web 服务器利用自己的私钥解密出会话密钥。
(6)Web 服务器利用会话密钥加密与客户端之间的通信。
https的优缺点?
虽然说 HTTPS 有很大的优势,但其相对来说,还是存在不足之处的:
(1)HTTPS 协议握手阶段比较费时,会使页面的加载时间延长近 50%,增加 10% 到 20% 的耗电;
(2)HTTPS 连接缓存不如 HTTP 高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL 证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗。
(5)HTTPS 协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。