面试题:http与https的区别、三次握手、四次挥手
·
一、http与https的区别:传输信息安全性不同,连接方式不同,端口不同,证书申请方式不同
1、传输信息安全性不同
(1)http协议:是超文本传输协议,信息是明文传输,如果攻击者截取了web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息
(2)https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输安全

2、连接方式不同
(1)http协议:http链接是简单的,无状态的
(2)https协议:是由SSL+HTTP协议构建的,可进行加密传、身份认证的网络协议
3、端口不同
(1)http协议:使用的端口是80。
(2)https协议:使用的端口是443.
4、证书申请方式不同
(1)https协议:需要到ca申请证书,一般免费证书很少,需要交费
(2)http协议:免费申请
二、三次握手、四次挥手
TCP的6种标志符
- SYN(synchronous),建立联机
- ACK(acknowledgement),确认
- PSH(push),传输
- FIN(finish),结束
- RST(reset),重置
- URG(urgent),紧急
1、三次握手:指在发送数据的准备阶段,服务器和客户端之间需要三次交互(即建立TCP连接,是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立)
第一次握手:建立连接时,客户端向服务器发送一个SYN包,并进入SYN_SENT状态,等待服务器确认
第二次握手:当服务器接收到客户端请求后,此时要给客户端给一个确认信息ACK,同时发送SYN包,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器发的ACK+SYN包后,向服务器发送ACK,发送完毕之后,客户端和服务器进入 ESTABLISHED(TCP连接成功)状态,完成三次握手
2、四次挥手:所谓四次挥手就是说关闭TCP连接的过程,当断开一个TCP连接时,需要客户端和服务器共发送四个包确认
第一次挥手:客户端发送一个FIN,用来关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态
第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序 号),服务器进入CLOSE_WAIT状态
第三次挥手:服务器发送一个FIN,用来关闭服务器到客户端的数据传输,服务器进入LAST_ACK状态
第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个AKC给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手
典型问题:为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。
更多推荐
所有评论(0)