6. websocket和http区别
websocket知识点总结_防火墙 websocket-CSDN博客
相同点
- 都是基于TCP协议,都是可靠性传输协议
- 都是应用层协议
不同点
HTTP
- 类型: 请求-响应式的无状态协议,半双工通信,同一时刻只能一个方向上有动作
- 通信方式: 单向传输,从浏览器到服务器
- 连接持久性: 虽能支持通过 Keep-Alive 持久化连接,但有超时时间,其实仍需多次握手
- 服务器推送:是一种客户端主动发起请求的协议,服务器只能在收到请求后才能返回响应
-
通信效率:由于HTTP协议每次通信都需要经过完整的请求-响应过程,包括建立连接、发送请求、服务器处理请求、发送响应等步骤,因此在频繁通信的场景下,HTTP的开销较大
WebSocket:为了解决HTTP双向通信和服务端主动推送的不足
- 类型:全双工通信协议。
- 通信方式:浏览器和服务端可以双向发送和接受信息
- 连接持久性: 在一个 TCP 连接上持续通信,减少了连接和断开的次数。
- 服务器推送:支持服务器主动推送数据给客户端,服务器可以随时向客户端发送数据,实现实时通信
- 通信效率:在建立连接后只需要发送少量的头部信息,然后就可以直接进行数据传输,通信效率较高
websocket只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道就可以进行数据的传送了。整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,减少了解析请求信息的效率问题。全双工双向通信,服务端可以主动推送数据给客户端。WS连接建立之后,数据的传输使用帧来传递,不再需要Request消息,数据帧有序。
扩展:什么是HTTP无状态?
HTTP无状态协议,是指协议对于交互性场景没有记忆能力。
在点击一个纯的html网页,请求获取服务器的html文件资源时,每次http请求都会返回同样的信息,因为这个是没有交互的,每一次的请求都是相互独立的。第一个请求和第二个请求也没有先后顺序,返回处理哪个,结果都是同样的资源页面,因为这种场景是无交互的,无论是什么人请求这个地址,服务器都是返回那个相同的响应。
在无交互场景中上面那样,当然也不会有太大的问题。但是对于涉及到动态交互的场景,就显得很尴尬了,何为交互?有来又有往,对于一模一样的两个接口,不同的人在请求第二个接口时可能会基于请求第一个接口的结果而有所不同。
现在我们来想一个复杂的场景,如在购物网站上买一个书包,流程如下:
- 输入账号密码登陆 /login 用户信息
- 选择一款你喜欢的书包加入到购物车中 /cart 用户信息,产品信息
- 购买支付 /pay 用户信息,商品信息,金额信息
所谓的登录只是验证你是否是一个合法用户,若是合法则跳转到信息的页面,不合法则告知用户名密码错误。但是我们在第一步给服务器发完/login接口后,服务器就忘记了。。。忘记了你这个人,到底有没有经过认证。所以在添加商品时/cart 你还是需要将你的账号密码和商品信息一起提交给 addCart接口,再让服务器做验证。第三步同理。
7. webSocket与socket的区别
socket为套接字,是计算机之间进行通信的一种约定或一种方式,封装了TCP/IP协议,是一个接口。socket起源Unix,可以用“打开open -> 读写write/read -> 关闭close” 模式来操作。Socket代表了在操作系统中传输数据的两方,它并不是什么协议,只是它不再基于网络协议,而是操作系统本身的文件系统
区别:
- socket是传输控制层的接口,用户可以通过socket来操作系统底层TCP/IP协议通信。
- webSocket是一个完整的应用层协议
- WebSocket 更易用,因为它是一个完整的应用层协议,包含一套标准的API,使用起来相对简单。Socket 更灵活,因为它是一个门面模式,把复杂的TCP/IP协议族隐藏在Socket接口后面,使得用户可以根据自己的需求灵活地使用TCP或UDP来传输数据。
- 两者都能做即时通讯
8. http和rpc的区别
RPC(即Remote Procedure Call,远程过程调用)和HTTP(HyperText Transfer Protocol,超文本传输协议)他们最本质的区别,就是RPC主要工作在TCP协议之上,而HTTP服务主要是工作在HTTP协议之上,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹。
- RPC是一种进程内通信机制,HTTP是一种网络应用协议。
- RPC使用TCP或UDP,HTTP只使用TCP。
- RPC使用自定义的数据格式(比如XML、JSON等),HTTP使用标准MIME类型(如HTML、XML、JSON、图片等多种格式)。
- RPC是持续连接,HTTP是短连接。
- RPC用于内部集成,HTTP用于Web应用。
RPC架构:
客户端(Client),服务的调用方。
服务端(Server),真正的服务提供者。
客户端存根 ( Client Stub),存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
服务端存根 (Server Stub),接收客户端发送过来的消息,将消息解包,并调用本地的方法。