• WebSocket协议详解


    转自

    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把数据水流放到水管中,则会立刻传输到对方那边

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

  • 相关阅读:
    列表 元组
    前端 3
    前端 2
    python pymysql 表和数据的备份
    python 树 索引
    python 数据库连表查询习题
    python 数据库表查询
    python 数据库usdr 查询
    python set enum 完整性约束
    python 数据库表操作
  • 原文地址:https://www.cnblogs.com/yorkyang/p/6492659.html
Copyright © 2020-2023  润新知