HTTP和HTTPS有什么区别?
端口号:HTTP默认是80端口,HTTPS默认是443。
URL前缀:HTTPHTTP 的 URL 前缀是 http://
,HTTPS 的 URL 前缀是 https://
。
安全性和资源消耗:HTTP协议运行在TCP上,都是明文传输,客户端和服务端都无法验证对方的身份。HTTPS协议是运行在SSL/TLS上的HTTP协议,SSL/TLS运行在TCP上,所有传输内容都经过加密,加密采用对称加密,但是对称加密的密钥用服务器方的证书采用非对称加密。所以HTTP协议没有HTTPS协议安全,但是HTTPS协议比HTTP协议耗费更多资源。
SEO(搜索引擎优化): 搜索引擎会更加青睐使用HTTPS协议的网站,因为HTTPS能够提供更高的安全保护。使用HTTPS协议的网站在搜索结果在可能会被优先显示,从而对SEO产生影响。
WebSocket
什么是WebSocket?
WebSocket是一种基于TCP连接的全双工通信协议,即客户端和服务端可以同时发送和接收信息。
WebSocket 协议本质上是应用层的协议,用于弥补 HTTP 协议在持久通信能力上的不足。客户端和服务器仅需一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
WebSocket和HTTP有什么区别?
WebSocket和HTTP都是基于TCP的应用层协议,都可以在网络中传输数据。
两者区别:
- WebSocket 是一种双向实时通信协议,而 HTTP 是一种单向通信协议。并且,HTTP 协议下的通信只能由客户端发起,服务器无法主动通知客户端。
- WebSocket 使用 ws:// 或 wss://(使用 SSL/TLS 加密后的协议,类似于 HTTP 和 HTTPS 的关系) 作为协议前缀,HTTP 使用 http:// 或 https:// 作为协议前缀。
- WebSocket 可以支持扩展,用户可以扩展协议,实现部分自定义的子协议,如支持压缩、加密等。
- WebSocket 通信数据格式比较轻量,用于协议控制的数据包头部相对较小,网络开销小,而 HTTP 通信每次都要携带完整的头部,网络开销较大(HTTP/2.0 使用二进制帧进行数据传输,还支持头部压缩,减少了网络开销)。
WebSocket工作过程
- 客户端向服务器发送一个 HTTP 请求,请求头中包含
Upgrade: websocket
和Sec-WebSocket-Key
等字段,表示要求升级协议为 WebSocket; - 服务器收到这个请求后,会进行升级协议的操作,如果支持 WebSocket,它将回复一个 HTTP 101 状态码,响应头中包含 ,
Connection: Upgrade
和Sec-WebSocket-Accept: xxx
等字段、表示成功升级到 WebSocket 协议。 - 客户端和服务器之间建立了一个 WebSocket 连接,可以进行双向的数据传输。数据以帧(frames)的形式进行传送,WebSocket 的每条消息可能会被切分成多个数据帧(最小单位)。发送端会将消息切割成多个帧发送给接收端,接收端接收消息帧,并将关联的帧重新组装成完整的消息。
- 客户端或服务器可以主动发送一个关闭帧,表示要断开连接。另一方收到后,也会回复一个关闭帧,然后双方关闭 TCP 连接。
另外,建立 WebSocket 连接之后,通过心跳机制来保持 WebSocket 连接的稳定性和活跃性。
TCP与UDP
TCP与UDP的区别
1.是否面向连接:UDP传输数据不需要建立连接。TCP传输数据前要先建立连接,并且传输数据结束后要断开连接。
2.是否是可靠传输:主机在收到UDP报文后,不需要任何确定,并且不保证数据不丢失,不保证数据是否顺序到达。TCP提供可靠的传输服务,TCP在传输数据前,会通过三次握手来确认连接,并且通过TCP传输的数据无差错、不丢失、不重复、按时到达。
3.是否有状态:TCP传输是有状态的,当TCP传输数据之后,TCP会去记录自己的状态,比如消息是否被发送了,是否被成功接收到了,为此TCP需要维护复杂的状态记录表。而UDP在消息发出之后就不管了。
4.传输效率:由于TCP传输数据之前要先建立连接,同时又要保证数据的可靠传输,因此TCP传输效率低于UDP。
怎么选择TCP和UDP?
UDP一般用于即时通信:比如视频、直播,即使消息丢失一些,也不会有什么影响。这些场景对于信息传输准确性要求不高。
TCP对于传输准确要求高的场景:比如发送邮件、文件传输等等。