博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebSocket于HTTP 、WebSocket与Socket的区别
阅读量:6113 次
发布时间:2019-06-21

本文共 1060 字,大约阅读时间需要 3 分钟。

WebSocket于HTTP 、WebSocket与Socket的区别

最近在做一个IM 的项目,最近对于这块的理解比较模糊,这里对他们的不同和相同做一个区分,但是由于这个项目需要在IOS、Android和Web中多平台,最后选择了WebSocket;

这里有一张图详细介绍了 TCP/IP 协议族中的各个协议在 OSI模型 中的分布,一图胜千言(下图来自 科来)

1.

原理

WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。

连接过程 —— 握手过程

    1. 浏览器、服务器建立TCP连接,三次握手。这是通信的基础,传输控制层,若失败后续都不执行。
    1. TCP连接成功后,浏览器通过HTTP协议向服务器传送WebSocket支持的版本号等信息。(开始前的HTTP握手)
    1. 服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。
    1. 当收到了连接成功的消息后,通过TCP通道进行传输通信

2. WebSocket于HTTP

相同点

    1. 都是应用层协议基于TCP协议来传输数据的,都是可靠性传输协议。
    1. 都是应用层协议。

不同点

    1. WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息。HTTP是单向的。
    1. WebSocket是需要握手进行建立连接的。

联系

WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。

3.WebSocket与Socket的关系

Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口,它工作在 OSI 模型会话层(第5层),是为了方便大家直接使用更底层协议(一般是 TCP 或 UDP )而存在的一个抽象层。

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。

区别

Socket是传输控制层协议,WebSocket是应用层协议。

转载于:https://juejin.im/post/5b87414951882542e56e5f39

你可能感兴趣的文章
使用多级分组报表展现分类数据
查看>>
cocos2d-x中Node与Node层级架构
查看>>
2月第3周回顾:黑帽大会华府召开 场面热闹创新不多
查看>>
VB 6.0中判断是否Access 2010中存在指定表格
查看>>
流水线上的思考——异步程序开发模型(1)
查看>>
为SharePoint网站创建自定义导航菜单
查看>>
分布式系统的Raft算法——在失联阶段这个老Leader的任何更新都不能算commit,都回滚,接受新的Leader的新的更新 意味着还是可能丢数据!!!...
查看>>
检查点(Checkpoint)过程如何处理未提交的事务
查看>>
iphone开发中的手势操作:Multiple Taps
查看>>
牛刀小试Oracle之FRA学习
查看>>
Azure SQL Database (21) 将整张表都迁移到Azure Stretch Database里
查看>>
jquery autocomplete实现读取sql数据库自动补全TextBox
查看>>
前端构建工具gulp入门教程(share)
查看>>
springmvc原理
查看>>
详细说说ActionScript中function的call()方法和apply()方法
查看>>
Oracle Database Administrator验证模式
查看>>
懒人代码-顶部栏
查看>>
elasticsearch best_fields most_fields cross_fields从内在实现看区别——本质就是前两者是以field为中心,后者是词条为中心...
查看>>
Ngxtop-Nginx日志实时分析利器
查看>>
android:设置布局参数LayoutParams
查看>>