Http、Https以及webSocket的简述。
上图包括三个部分:建立连接,数据传输,断开连接
第一次握手:客户端发送syn包(seq = x)到服务器,并进入SYN_SENT状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack = x+1),同时自己也发送一个SYN包(seq = y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器确认包ACK(ack = y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
四次挥手
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动方的数据传输,也就是主动关闭方告诉被动关闭方:我已经不会再给你发送数据了(当然,在FIN之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接收数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号加1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传输,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发送数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到的序号+1,至此完成四次挥手。
HTTP与HTTPS的区别以及如何实现安全性
两者的区别:
(1)、HTTP是明文传输,传输内容容易被篡改或者被窃取;HTTPS是密文传输,https相当于包装了SSL\TLS协议的HTTP。
(2)、https在网络请求效率上会低于http,因为采用了不同的请求协议以及更复杂的安全验证操作。
(3)、https需要申请CA证书,用于验证公钥这个证书收费,HTTP不用。
主要通过非对称加密+对称加密+CA证书来保证请求安全的。
如何验证证书的合法性?
(1)、验证证书是否在有效期内。
(2)、验证证书是否被吊销了。
(3)、验证证书真实性,是否是由上级CA签发的。
https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)?
https协议中加密使用了SSL协议,SSL的加密既用了对称加密也用了非对称加密,对称加密速度快,平时传输用对称加密,非对称加密传密码比较安全,所以对称加密的密码是用非对称加密来传的,这种加密的关键是用非对称加密的方式用密文传输对称加密用的密码。
对WebSocket的理解
WebSocket是应用层html5出的一种协议,相比较http而言优势是支持长连接,WebSocket只需要一次HTTP握手,整个通信过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到关闭请求;同时WebSocket协议解决了服务器与客户端全双工通信的问题。
信息只能单向传送为单工;信息能双向传送,但不能同时双向传送称为半双工;信息能够同时双向传送称为双工。
WebSocket与socket的区别
WebSocket是应用层html5出的一种协议,相比较http而言优势是支持长连接,WebSocket只需要一次HTTP握手,整个通信过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到关闭请求;同时WebSocket协议解决了服务器与客户端全双工通信的问题。
信息只能单向传送为单工;信息能双向传送,但不能同时双向传送称为半双工;信息能够同时双向传送称为双工。
Socket处于抽象层,是Http底层协议;而WebSocket是类似于http应用层协议,WebSocket是应用层html5出的协议。
Http协议有个缺陷:通信只能从客户端发起,做不到服务器主动向客户端推送信息。
WebSocket最大的特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。