计算机网络
一、http和https
1.默认端口号不同
- http是80端口
- https是443端口
2. 传输过程不同
- http是明文传输,被截获不安全。
- https是密文传输,截获的是加密后的。
3. ssl证书
就是遵守一种传输通信协议,颁发证书之后,网页具有服务器身份验证和数据加密功能。
- http不需要
- https需要
4. 网络协议
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- http基于应用层(提供应用程序之间的数据交换)
- https基于传输层(提供计算机之间的通信会话,并确保数据在计算机之间可靠的传输)
二、加密方式
1. 对称加密
发送方(服务端)和接收方(客服端)使用同一个秘钥进行加密解密
- 第一次要传输一次秘钥,如果被拦截,就可以破解
- 优点:性能好,
- 缺点:安全性不高
2. 非对称加密
- 客户端用公钥进行加密,服务端用私钥进行解密
- 如果拦截到客户端的加密传输,是无法解密的,需要私钥。
- 优点 :安全
- 缺点:性能差,耗费时间
https:使用非对称加密进行秘钥传输,使用对称加密进行数据传输,为了保证首次传输秘钥的安全性,需要网站机构进行密钥的登记,登记之后颁发证书,之后的密钥是安全的。
三、Websocket
允许服务端主动向客户端传输数据,并且浏览器和客户端只需要进行 一次握手就可以建立持久性的连接,并进行双向数据传输。
webSocket连接:通过http进行一次握手
浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,通过http进行一次握手,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。
当你获取 Web Socket 连接并且创建对象后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。
安装 socket.io-client
四、三次握手
1、客户端发送了一个带有SYN(握手信号)的Tcp报文到服务器。表示客户端想要和服务端建立连接。 主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机。
2、服务端接收到客户端的请求,返回客户端报文,这个报文带有SYN和ACK标志,询问客户端是否准备好。 主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包。
3、客户端再次响应服务端一个ACK(确认字符),表示我已经准备好。主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
