WebSocket 与 Socket、TCP、HTTP 的关系和异同点

2018-07-18 09:21:25 +08:00
 jonychen1

今天来讲一下与其他协议的区别和相同点,让各位同学能够更加深入的去了解和运用各种协议。 1 什么是 WebSocket ? WebSocket 从满足基于 Web 的日益增长的实时通信需求应运而生,解决了客户端发起多个 Http 请求到服务器资源浏览器必须要在经过长时间的轮询问题,实现里多路复用,是全双工、双向、单套接字连接,在 WebSocket 协议下服务器和客户端可以同时发送信息。

2 WebSocket 和 Http 的异同点 同:1 建立在 TCP 之上,通过 TCP 协议来传输数据。 2 都是可靠性传输协议。 3 都是应用层协议。 异:1 WebSocket 是 HTML5 中的协议,支持持久连接,HTTP 不支持持久连接 2 HTTP 是单向协议,只能由客户端发起,做不到服务器主动向客户端推送信息。

3 WebSocket 和 Socket Socket 本身并不是一个协议,它工作在 OSI 模型会话层,是一个套接字,TCP/IP 网络的 API,是为了方便大家直接使用更底层协议而存在的一个抽象层。Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Socket 接口后面,对用户来说,一组简单的接口就是全部,让 Socket 去组织数据,以符合指定的协议。 而 WebSocket 则是一个典型的应用层协议。

4 WebSocket HTTP 和 TCP/IP WebSocket 和 HTTP 一样,都是建立在 TCP 之上,通过 TCP 来传输数据。后面的文章我会用代码举例子来展示。

5 Socket 和 TCP/IP 
 Socket 是对 TCP/IP 协议的封装,像创建 Socket 连接时,可以指定使用的传输层协议,Socket 可以支持不同的传输层协议(TCP 或 UDP),当使用 TCP 协议进行连接时,该 Socket 连接就是一个 TCP 连接。 说了这么多,希望对大家来理解 WebSocket 与 Socket、TCP、HTTP 的关系有所帮助,如果大家在工作当中需要用到 WebSocket 而不能解决问题的时候,建议大家可以使用一下一些三方的 WebSocket,融云、极光、GoEasy 等,我这里就给大家推一个简单免费的三方 WebSocket,GoEasy。很成熟的一款产品,推荐原因是代码简单,运行稳定。网站是 www.goeasy.io ,大家可以自己去看一下。下篇文章我会用代码来举例说明这篇文章没有具体说的地方。

1616 次点击
所在节点   2018
2 条回复
mingyun
2018-07-21 10:16:06 +08:00
注册个账号有邮箱还要手机?
jonychen1
2018-07-25 11:45:54 +08:00
@mingyun 我自己注册时候也要了。现在不大清楚

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/471836

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX