转自

http://www.cnblogs.com/lizhenghn/p/5155933.html

1. websocket 是什么

websocket 是html5提出的一个协议规范,参考rfc6455
websocket,通过一个握手的机制,客户端(浏览器)和服务器(webserver)之间建立一个tcp连接,从而方便C-S之间的通信。在websocket出现之前 ,web交互一般是基于 http 协议的短连接或长连接

websocket 是为解决 客户端与服务端实时通信而产生的技术。websocket协议本质上是一个基于tcp的协议,先通过 http/https 协议发起一条特殊的http请求进行握手,然后创建一个用于交换数据的TCP连接。

2. websocket 优点

以前 webserver 实现推送技术或即时通讯,用的都是轮询(polling),由 浏览器 主动发出请求,将服务器的消息拉回来,这种情况,浏览器需要不断向服务器发送请求,然而 http request 的header非常长,body可能是一个很小的值,这样会占用很多带宽和服务器资源

ajax 需要客户端发起请求,而 websocket服务端与客户端可以彼此相互推送信息,不受时间和方向限制

从服务器的角度来说,websocket有以下好处:
1. 节省每次请求的header,http的header一般有几十字节
2. server 可以主动向客户端传数据

3. 安全性高

HTTP通讯方式:

客户端C把数据封装好了要交给服务端S,所以把水放到水枪里面,射过去给S

S用桶把水挡下来了,然后分析水的成分(数据内容),完成后再把新的水(返回的数据)射回去给C

这个过程中,任何人都可以随时在C和S之间用海绵吸一点水然后拿去分析(嗅探数据),或者是直接用桶把水都挡下来分析完后再装到水枪中,模仿C的动作射给S(也就是代理抓包)

WEBSOCKET方式:

客户端C和服务端S,双方之间先用一条水管连起来(用的是HTTP握手),然后水流都通过这个小水管来传输

水管里面一直有水在流动,所以要通讯只需要C或者是S把数据水流放到水管中,则会立刻传输到对方那边

这个过程中,要嗅探就比较麻烦了,需要先在水管中先打个洞,然后再把分析器放进去、或者是斩断这个水管在中间接个水表之类的设备去分析水质成分

WebSocket协议详解的更多相关文章

  1. WebSocket协议详解及应用

    WebSocket协议详解及应用(七)-WebSocket协议关闭帧 本篇介绍WebSocket协议的关闭帧,包括客户端及服务器如何发送并处理关闭帧.关闭帧错误码及错误处理方法.本篇内容主要翻译自RF ...

  2. WebSocket协议详解与c++&c#实现

    摘要: 随着手机游戏.H5游戏以及微信小游戏的普及,越来越多的客户端-服务器端的通讯采用websocket协议.Websocket协议是全双工的.基于数据帧的.建立在tcp之上的长连接协议.Webso ...

  3. websocket协议详解;

    websocket是基于http协议,借用http协议来完成连接阶段的握手: 当连接建立后,浏览器和服务器之间的通信就和http协议没有关系了,b.s之间只用websocket协议来完成基本通信. = ...

  4. WebSocket 协议详解

    一.WebSocket 协议背景 早期,在网站上推送消息给用户,只能通过轮询的方式或 Comet 技术.轮询就是浏览器每隔几秒钟向服务端发送 HTTP 请求,然后服务端返回消息给客户端. 轮询技术一般 ...

  5. HTTP协议详解(转)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  6. HTTP协议详解

    Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...

  7. 动态选路、RIP协议&&OSPF协议详解

    动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...

  8. ASP.NET知识总结(3.HTTP协议详解)

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  9. 接口测试之HTTP协议详解

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

随机推荐

  1. ceil 和floor

    ceil 天花板 floor 地板 ceil向上取整 foor向下取整

  2. TOP100summit:【分享实录-封宇】58到家多端消息整合之路

    本篇文章内容来自2016年TOP100summit 58到家架构师封宇的案例分享. 编辑:Cynthia 2017年11月9-12日北京国家会议中心第六届TOP100summit,留言评论有机会获得免 ...

  3. windows下安装pytorch

    安装: https://blog.csdn.net/xiangxianghehe/article/details/80103095 Windows下通过pip安装PyTorch 0.4.0 impor ...

  4. memory addresses

    php.net References in PHP are a means to access the same variable content    by different names. The ...

  5. Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 (需要在运行时生成core dump文件,QMAKE_CC += -g)

    记录一下 Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 需要在运行时生成core dump文件 首先在pro结尾里加入 QMAKE_CC += -g QMAKE_CXX += - ...

  6. (3.3)mysql基础深入——mysql启动深入分析

    基础:(2.1)学习笔记之mysql基本操作(启动与关闭) 0.mysql启动的 3种方式 (1)mysql.server (2)mysqld_safe (3)mysqld 1.启动分析 [1.1]概 ...

  7. 2018最新php笔试题及答案(持续更新)

    php中include和require的区别 在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容.include 和 require 语句用于在执行流中插入写在其他文件中 ...

  8. backreference Oracle正則表達式中的反向引用

      这是Oracle对正則表達式的backreference的描写叙述 从定义中能够看到,当匹配表达式中已()的形式将一个子串包括起来.后面就能够以\? 的形式来引用.\1相应第一个(),\2相应第二 ...

  9. 应用笔画宽度变换(SWT)来检测自然场景中的文本

    Introduction: 应用背景:是盲人辅助系统,城市环境中的机器导航等计算机视觉系统应用的重要一步.获取文本能够为许多视觉任务提供上下文的线索,并且,图像检索算法的性能很大部分都依赖于对应的文本 ...

  10. Andrew Ng-ML-第十八章-大规模机器学习

    1.学习大数据集 图1.学习大数据集 当数据集量为m=1亿时,进行梯度下降将会花费较大时间. 可以使用小量数据集进行训练,然后得出学习曲线. 左图是高方差,右图是高偏差. 总之是要通过高效的学习算法来 ...