1、HTTP 协议
1).http是用于从万维网服务器传输超文本到本地浏览器的传送协议(HyperText Transfer Protocol)。超文本传输协议是面向事务的、一种应用层协议,其规定了在浏览器和服务器之间的请求和响应的格式和规则,它是万维网上能够可靠交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
2).HTTP是一个 客户端和 服务器端请求和应答的标准。客户端是终端用户,服务器端是网站。通过使用 Web浏览器、 网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认 端口为80)的HTTP请求。(我们称这个客户端)叫用户代理。
3).HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
2、Https 协议:
HTTPS在HTTP与TCP层之间插入SSL/TLS加密层,具体工作方式:
1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
5)Web服务器利用自己的私钥解密出会话密钥。
6)Web服务器利用会话密钥加密与客户端之间的通信。
2.2 HTTPS的加密
2.2.1 对称密钥加密
对称密钥加密也叫做共享密钥加密,其实就是加密和解密采用了同一个密钥。
双方在进行通信时,发送方会利用密钥进行加密,再将密钥一同发送给接收方,让其使用这个密钥进行解密。
这种方法看起来不错,但是也存在问题,如果在发送的时候被拦截下来,密钥就会泄露给中间人,此时中间人就可以通过密钥来对之后的数据进行解密,此时也就失去了加密的意义这时,就引入了非对称加密。
2.2.2. 非对称加密
非对称加密又叫做公开密钥加密,他使用一对非对称的密钥,一把叫做私有密钥,一把叫做公有密钥。故名思意,共有密钥是公开的,任何人都可以获得,而私有密钥则不能让任何人知道
当进行通信时,发送方使用对方的公有密钥进行加密,而接收方接收时则使用自己的私有密钥进行解密,这样一来,用于解密的私钥就完全掌握在接收者自己手里,中间人也无法从中窃取密钥,安全也一定程度的得到了保障。
2.2.3. 混合加密
从上述描述可以得出,由于非对称加密的处理方式比对称加密更为繁琐,因此持续使用非对称加密通信将显著降低通信效率。因此,HTTPS采用了混合加密机制,既包括对称加密又包括非对称加密。
如何实施呢?使用非对称加密来传输用于进行加解密的对称加密密钥。(因为对称加密面临的主要问题在于无法确保其安全性。但是通过采用非对称加密来传输该密码,则可以很好地避免这个问题。)一旦之前的交换被确认是安全的,则可以使用该对等密码进行通信。(由于非对称密码复杂处理导致效率降低,所以在安全情况下使用私钥密码就能大幅提高效率)。
2.3、https 加密协议
2.3.1. SSL(Secure Sockets Layer):是最初为 HTTPS 提供加密的协议,目前升级为TLS。
2.3.2. TLS(Transport Layer Security):是 SSL 的继任者,现行标准。它为网络通信提供了加密、身份验证、数据完整性等安全服务。
3、TCP协议
传输控制协议(TCP, Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1] 定义
TCP 连接过程:
1)、首先,建立连接阶段。这个阶段是通过“三次握手”来建立客户端和服务器之间的连接。
TCP 提供面向连接的通信传输。面向连接是指在数据通信开始之前先做好两端之间的准
备工作。所谓三次握手,是指在建立一个 TCP 连接时,客户端和服务器总共要发送三个
数据包以确认连接的建立
2)、其次,传输数据阶段。在该阶段,接收端需要对每个数据包进行确认操作,也就是接收端
在接收到数据包之后,需要发送确认数据包给发送端。所以当发送端发送了一个数据包之
后,在规定时间内没有接收到接收端反馈的确认消息,则判断为数据包丢失,并触发发送
端的重发机制。同样,一个大的文件在传输过程中会被拆分成很多小的数据包,这些数据
包到达接收端后,接收端会按照 TCP 头中的序号为其排序,从而保证组成完整的数据。
3)、最后,断开连接阶段。数据传输完毕之后,就要终止连接了,涉及到最后一个阶段“四次
挥手”来保证双方都能断开连接。
4、http tcp 的关系
TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”
“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。
HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端