http协议和websocket协议之间的区别

一、HTTP协议(Hyper Text Transfer Protocol)

HTTP是单向的,客户端发送请求,服务器发送响应。举例来说,当客户端向服务器发送请求时,该请求以HTTPHTTPS的形式发送,在接收到请求后,服务器会将响应发送给客户端。每个请求都与一个对应的响应相关联,在发送响应后客户端与服务器的连接会被关闭。每个HTTPHTTPS请求每次都会新建与服务器的连接,并且在获得响应后,连接将自行终止。 HTTP是在TCP之上运行的无状态协议,TCP是一种面向连接的协议,它使用三向握手方法保证数据包传输的传递并重新传输丢失的数据包。

HTTP之响应消息Response

HTTP之状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求

200 OK  客户端请求成功

301永久重定向

该状态码表示请求的资源已被分配了新的URL, 以后应使用资源现在所指的URL。 也就是说, 如果已经把资源对应的URL保存为书签了, 这时应该按 Location 首部字段提示的URL重新保存。

302 Found临时性重定向。

该状态码表示请求的资源已被分配了新的URL, 希望用户(本次) 能使用新的URL访问。和301Moved Permanently 状态码相似, 但302状态码代表的资源不是被永久移动, 只是临时性质的。 换句话说, 已移动的资源对应的URL将来还有可能发生改变。 比如, 用户把URL保存成书签, 但不会像301状态码出现时那样去更新书签, 而是仍旧保留返回302状态码的页面对应的URL。

400 Bad Request

客户端请求有语法错误,不能被服务器所理解

401 Unauthorized

请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden

服务器收到请求,但是拒绝提供服务

404 Not Found

请求资源不存在,eg:输入了错误的URL

500 Internal Server Error

服务器发生不可预期的错误

503 Server Unavailable

服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

HTTP请求方法

HTTP 协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息。

WebSocket 协议 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

二、websocket协议

WebSocket是双向的,在客户端-服务器通信的场景中使用的全双工协议,与HTTP不同,它以ws://wss://开头。它是一个有状态协议,这意味着客户端和服务器之间的连接将保持活动状态,直到被任何一方(客户端或服务器)终止。在通过客户端和服务器中的任何一方关闭连接之后,连接将从两端终止。

需要特别注意的是:虽然WebSocket协议在建立连接时会使用HTTP协议,但这并意味着WebSocket协议是基于HTTP协议实现的。

三、二者区别

1.通信方式不同

WebSocket是双向通信模式,客户端与服务器之间只有在握手阶段是使用HTTP协议的“请求-响应”模式交互,而一旦连接建立之后的通信则使用双向模式交互,不论是客户端还是服务端都可以随时将数据发送给对方;而HTTP协议则至始至终都采用“请求-响应”模式进行通信。也正因为如此,HTTP协议的通信效率没有WebSocket高。

2.协议格式不同

WebSocket与HTTP的协议格式是完全不同的,具体来讲:
(1)HTTP协议比较臃肿,而WebSocket协议比较轻量。
(2)对于HTTP协议来讲,一个数据包就是一条完整的消息;而WebSocket客户端与服务端通信的最小单位是帧(frame),由1个或多个帧组成一条完整的消息(message)。即:发送端将消息切割成多个帧,并发送给服务端;服务端接收消息帧,并将关联的帧重新组装成完整的消息。

3.性能不同

HTTP: 每次通信都需要建立连接,有一定的开销。在需要实时性较高的场景下,可能会受到较大的延迟。

WebSocket: 通过保持连接的方式,减少了建立连接的开销,可以更快地实现实时通信,降低了延迟。

4.安全性不同

HTTP: 通过 HTTPS 可以提供一定的安全性,但是每次通信都需要重新建立安全连接。

WebSocket: 也可以通过加密的方式(WSS)实现安全通信,并且在连接建立后仍然保持加密状态,提供更好的安全性。

总的来说,HTTP 和 WebSocket 有各自适用的场景。HTTP 更适合传统的请求-响应模式,而WebSocket 更适合需要实时性、双向通信的场景。在实际应用中,它们也可以结合使用,比如在 Web 应用中,可以使用 WebSocket 实现实时通信,而使用 HTTP 处理其他非实时的请求。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值