zoukankan      html  css  js  c++  java
  • 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把数据水流放到水管中,则会立刻传输到对方那边

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

  • 相关阅读:
    springcloud 学习笔记
    一文领悟HTTPS密钥为什么这样传输
    静态代码扫描工具PMD参数过程简介与JCommander 以及如何扩展
    静态代码扫描工具PMD分析XML的核心源码解读(从core主入口到子语言解析)
    Jenkins出现SVNException:E175002
    一个第三方登录的流程
    爬虫入门(三)爬取b站搜索页视频分析(动态页面,DBUtils存储)
    09 元素等待机制
    测试观点
    什么是请求
  • 原文地址:https://www.cnblogs.com/yorkyang/p/6492659.html
Copyright © 2011-2022 走看看