http和https区别以及socket简单介绍
1、http:在HTTP/1.1之前由于无状态的特点,每次请求都需要通过TCP的三次握手和四次挥手,和服务器进行重新响应,耗费了很多不必要的时间和流量,通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性。
2、https:使用加密,无法查看明文的内容,主要是区别在于https使用SSL提供加密处理数据、验证对方身份(通过证书认证客户端访问的是自己的服务器)以及数据完整性的保护。
Http三次握手过程:
请求发送数据,可以发送,收到可以发送,开始发送数据。
为什么需要三次握手:为了防止已失效的连接请求报文突然又传送到了服务端而产生的错误。
四次挥手:当客户端发出报文时,只是表示客户端已经没有数据要发送了,客户端告诉服务端数据请求已经发送完毕,但是这个时候客户端还是可以接受来自服务端的消息;当服务端已经知道客户端没有数据要发送了,但是服务端还是可以发送数据到客户端,当服务端表示也没有数据要发送时,就会告诉客户端没有数据要发送了,如果收到客户端确认报文后,彼此就会中断TCP连接。
SSL建立过程
1、客户端想服务端发送请求并发送信息,主要为随机值1和客户端支持的加密算法。
2、服务端收到后会给与客户端随机值2和协商好的加密算法,该算法一定是客户端发送给服务端加密算法的子集,然后服务端会给客户端发送第二个响应就是数字证书,这套证书其实就是一对公钥和秘钥传送证书是公钥,包含一些证书信息和服务端的域名。
3、客户端收到证书,首先会验证公钥是否有效,如果没问题就会生成一个预主秘钥,接下来就会通过随机值1,2和预主秘钥组装会话秘钥,然后通过证书的公钥加密会话秘钥,并传送会话秘钥。
4、服务端解密得到随机1、2和预主秘钥,并组装成会话秘钥一客户端相同。
5、客户端通过会话秘钥发送消息给服务端,验证服务端能否正常接收消息。
6、同样服务端通过会话秘钥加密发送消息回传给客户端,客户端接收表示SSL层建立成功。
socket通信
建立socket链接:
建立socket链接至少需要一对套接字,其中一个运行与客户端,请一个运行于服务端,连接过程主要分为3步:服务器监听、客户端请求和连接确认。
1、服务器监听:处于等待链接的状态,实时监控网络状态等待客户端的连接请求。
2、客服端请求:客户端提出连接请求必须要首先面熟要连接服务器的socket,指出地址和端口号然后想服务器提出连接请求。
3、连接确认:当服务器接收到客户端的请求时,就会响应请求,建立一个新的线程,把服务端的socket描述发给客户端,一旦客户端确认,双方建立连接。而服务器端继续保持监听状态,接收其他客户端套接字的连接请求。
当使用TCP协议进行连接,该socket就是一个TCP连接。
由于socket一旦建立,通信双方就开始互相发送数据,直到双方断开连接,在实际中需要轮询告诉网络处于活跃状态。而HTTP请求时“请求-响应”的方式,不仅需要在请求时先连接还要客户端向服务端发出请求后,服务端才能回复。