精华内容
下载资源
问答
  • 本篇文章主要介绍了python3实现的web端json通信协议,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
  •  web ui接口是服务器与客户端交互的方式,即浏览器或者其他客户端工具与web服务UI层交互的协议.常见的有两大类,一是浏览器与服务器交互的 HTTP,HTTPS协议接口,另一类web service接口如soap,rmi,rpc等协议。...
  • 对于WebServers的通信协议,根据客户提供的WSDL文件生成接口文件,免去到客户现场连内网下载的时间。亲测可用。C# VB.NET可用
  • webui接口是服务器与客户端交互的方式,即浏览器或者其他客户端工具与web服务UI层交互的协议.常见的有两大类,一是浏览器与服务器交互的HTTP,HTTPS协议接口,另一类webservice接  1背景介绍  1.1接口  webui...
  • Web实时通信技术

    千次阅读 2016-08-19 21:11:41
    本周在应用宝前端分享会上分享了Web实时通信技术,分享内容整理如下。一、传统Web数据更新传统的Web数据更新,必须要刷新网页才能显示更新的内容。这是浏览器采用的是B/S架构,而B/S架构是基于HTTP协议的。HTTP协议...

    本周在应用宝前端分享会上分享了Web实时通信技术,分享内容整理如下。

    一、传统Web数据更新

    传统的Web数据更新,必须要刷新网页才能显示更新的内容。这是浏览器采用的是B/S架构,而B/S架构是基于HTTP协议的。HTTP协议的工作模式就是客户端向服务器发送一个请求,服务器收到请求后返回响应。所以这种工作模式是基于请求显示数据的。

    这样的工作方式有其自身的好处,但是也会导致很多问题。在Web应用越来越火的今天,经常会遇到需要服务器主动发送数据到客户端的需求,比如事件推送、Web聊天等。这些需求使用传统的Web数据更新工作模式是无法实现的,因此就需要一项新的技术:Web实时通信技术。

    二、短轮询

    第一种解决方法思路很简单,既然需要客户端发送请求服务器才能发送数据,那么就可以让客户端不断的向服务器发送数据,这样就能实时的获取服务器端的数据更新了。具体的实现方法很简单,客户端每隔一定时间就发送一个请求到服务器端。下面的图可以清晰的反映出短轮询过程中客户端和服务器的工作流程:

    下面看一下实现方法。

    在服务器端我们模拟数据的发送,生成1-1000的随机数,当数值小于800的时候模拟没有数据的情况,大于800的时候模拟有数据的情况,并返回数据:

    <?php
    $arr = array('title'=>'推送!','text'=>'推送消息内容');
    $rand = rand(1,999);
    if(rand < 800){
    echo “”
    }else{
      echo json_encode($arr);
    }
    ?>

    客户端部分,定义了一个函数用来发送ajax请求到客户端,然后每隔2s就发送以此请求:

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>短轮询ajax实现</title>
    <script type="text/javascript" src="../jquery.min.js"></script>
    </head>
    <body>
    <form id="form1" runat="server">
         <div id="news"></div>
        </form>
    </body>
    <script type="text/javascript">
      function showUnreadNews()
        {
            $(document).ready(function() {
                $.ajax({
                    type: "GET",
                    url: "setInterval.php",
                    dataType: "json",
                    success: function(msg) {
                        $.each(msg, function(id, title) {
                            $("#news").append("<a>" + title + "</a><br>");
                        });
                    }
                });
            });
        }
        setInterval('showUnreadNews()',2000);
    </script>
    </html>

    运行程序我们可以在Chrome的network工具看到,每隔两秒都会有一个请求从客户端发往服务器,不管当时的服务器有没有数据,都会立即返回请求。、

    短轮询虽然简单,但是它的缺点也是显而易见的。首先短轮询建立了很多HTTP请求,而且其中绝大部分的请求是没有用处的。而HTTP连接数过多过多会严重影响Web性能。其次,客户端设置的请求发送时间间隔也不好掌控,时间间隔太短会造成大量HTTP的浪费,而时间间隔过长会使得客户端不能即时收到服务器端的数据更新,失去了即时通信的意义。

    三、长轮询

    针对上面短轮询的种种问题,我们自然而然想到要减少HTTP请求的数量,才能让实时通信性能更高。而长轮询就能有效的减少HTTP请求的数量。

    长轮询的逻辑是,首先客户端向服务器端发送一个请求,服务器端在收到请求后不马上返回该请求,而是将请求挂起。一段时间后服务器端有数据更新时,再将这个请求返回客户端,客户端收到服务器端的响应数据后渲染界面,同时马上再发送一个请求到服务器,如此循环,下面的图描述了这个过程:

    长轮询有效的减少了HTTP连接。服务器端在有数据更新时才返回数据,客户端收到数据再请求这一机制,较少了之间许多的无用HTTP请求。下面通过一个Demo来演示长轮询的工作模式。

    服务器端模拟数据更新,在客户端发来请求后先挂起6s,模拟6s后才有数据的情况:

    <?php
    $arr = array('title'=>'推送','text'=>'推送消息内容');
    $flag = 0;
    for($i=1;$i<=6;$i++){
      if($i>5){   //i = 6时表示有数据了
        echo json_encode($arr);
      }else{
        sleep(1);
      }
    }
    ?>

    这里为了演示的更清楚,添加了一个for循环,其实就是先将请求挂起6s。

    客户端发送一个ajax请求,并当收到服务器端数据后自动再发送一个请求到服务器:

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>长轮询ajax实现</title>
    <script type="text/javascript" src="../jquery.min.js"></script>
    </head>
    <body>
    <input type="button" id="btn" value="click">
    <div id="msg"></div>
    </body>
    <script type="text/javascript">
    $(function(){
            $("#btn").bind('click',{btn:$('#btn')},function(e){
                $.ajax({
                    type: 'POST',
                    dataType: 'json',               
                    url: 'do.php',
                    timeout: '20000',
                    success: function(data,status){
                        $("#msg").append(data.title + ':' + data.text + "</br>");
                        e.data.btn.click(); 
                    }
                });
            });
        });
    </script>
    </html>

    长轮询虽然有效的减少了HTTP请求,但是HTTP请求相比之下还是很多的,因为每次数据的更新都需要建立一个HTTP请求。下面的技术就可以实现建立以此HTTP连接,服务器可以源源不断的向客户端发送数据。

    四、SSE

    MessageEvent是HTML5中新定义的一种事件基类,和原先的MouseEvent、UIEvent一样。MessageEvent是专门为数据传输定义的事件,HTML5中的SSE和WebSocket都利用了这个事件。MessageEvent在HTML5协议中的接口如下:

    除了继承了Event事件具有的属性外,MessageEvent还定义了其他属性。其中data属性所包含的内容就是传输的数据内容。而lastEventId可以存放一个事件标识符,当客户端和服务器传输数据过程中断开连接需要重连时,客户端会将上一次传输数据的lastEventId作为请求头中的一个特殊字段发送到服务器,从而让服务器可以继续上次断开连接的部分发送消息。

    SSE是HTML5规范中定义的,它可以实现维持一个HTTP连接,服务器端单向向客户端不断发送数据。这个技术真正意义上实现了服务器主动推送数据到客户端。除此之外,SSE的客户端和服务器端代码都特别简洁,使用起来十分方便。

    SSE的逻辑就是首先客户端发送请求,建立一个HTTP连接,之后服务器端和客户端一直保持这个连接,服务器端可以单向向客户端发送数据,见下图:

    SSE的实现方法很简单,SSE是以事件流的形式发送数据的。在服务器端要先进行如下配置:

    Content-Type:text/event-stream
    Cache-Control:no-cache
    Connections:keep-alive

    如果还需要进行跨域,配置里再添加:

    Access-Control-Allow-Origin: *

    其中text/event-stream是HTML5规范中为SSE的事件流传输定义的一种流格式。

    做好配置后,服务器第二个要做的事就是维护一个清单,清单内容就是要向客户端发送的数据,下面是一段例子:

    data: first event  
     
    event: push
    data: second event

    每一组事件流传输对应的数据,每个事件流之间使用换行符进行分割。这种格式发送过去之后会被进行解析,最后将各个部分进行组装,客户端按需进行读取。每一个事件流可以为其指定四个字段。

    (1)retry字段

      SSE有一个自动重连机制,即客户端和服务器之间的连接断开后,隔一段时间客户端就会自动重连。retry指定的就是这个重连时间,单位为ms。

    (2)event字段

    SSE中有三个默认的事件,它们都继承自MessageEvent事件类。其中open事件在连接建立时触发,message事件在从客户端接收到数据时触发,close事件在连接关闭时触发。如果传输事件时一个事件流没有设定event字段的值,那么客户端就会监听message默认事件;如果指定了event事件,那么就会生成自定义的event事件,客户端可以监听自定义的event进行数据读取。

    (3)data字段

    data字段包含的内容就是服务器要传送给客户端的数据,SSE只能传送文本数据,且必须是UTF-8编码的。由于这些事件都继承自MessageEvent基类,因此可以通过event.data获取服务器传输的数据。

    (4)id字段

    id字段是事件的唯一标识符,解析后会被传入MessageEvent对应的lastEventId属性字段中,从而记录上次数据传输的位置。如果不指定id字段lastEventId字段就是一个空字符串。

    至此服务器端任务完成,下面介绍客户端的实现方法。

    客户端首先需要实例化一个EventSource对象。EventSource对象在HTML5中的接口定义如下:

    首先需要为EventSource对象传入一个url,表明要请求的服务器地址。该对象有三个readyState状态值,其中CONNECTING表示正在建立连接,OPEN表示连接处于打开状态可以传输数据,CLOSED状态表示连接中断,并且客户端并没有尝试重连。EventSource定义的默认事件句柄为onopen、onmessage、onerror。其中的方法只有close(),用来关闭连接。

    实例化好EventSource对象后,我们需要对事件进行监听,从而获取数据,最后可以通过close()方法关闭连接,整体逻辑的代码如下:

    var es = new EventSource(url);  
    es.addEventListener("message", function(e){
        console.log(e.data);
    })
    es.close();

    下面是一个实现SSE的例子。

    服务器使用node,代码及注释如下:

    var http = require("http");
    var fs = require("fs");
    //创建服务器
    http.createServer(function (req, res) {
      var index = "./index.html";
      var fileName;
      var interval;
      var i = 1;
      //设置路由
      if (req.url === "/"){
        fileName = index;
      }else{
        fileName = "." + req.url;
      }
      if (fileName === "./stream") {
        //配置头部信息:注意类型为专门为sse定义的event-stream,并且不使用缓存
        res.writeHead(200, {"Content-Type":"text/event-stream", "Cache-Control":"no-cache", "Connection":"keep-alive"});
        /*
          下面的代码的输出结果等价于:
          retry: 10000
          event: title
          data: News Begin
     
          data: ...
     
          ...
        */
        //上面可以看出,只有第一段是触发事件connecttime,其他都是触发默认事件message
        res.write("retry: 10000\n");    //定义连接断开后客户端重新发起连接的时间,ms制
        res.write("event: title\n");   //自定义的事件title
        res.write("data: News Begin! \n\n");
        //每隔1s就在协议中新写入一段数据来模拟服务器向客户端发送数据
        interval = setInterval(function() {
          res.write("data: News" + i +"\n\n");
          i++;
        }, 1000);
        //监听close事件,当服务器关闭时停止向客户端传送数据
        req.connection.addListener("close", function () {
          clearInterval(interval);
        }, false);
      } else if (fileName === index) {
        fs.exists(fileName, function(exists) {
          if (exists) {
            fs.readFile(fileName, function(error, content) {
              if (error) {
                res.writeHead(500);
                res.end();
              } else {
                res.writeHead(200, {"Content-Type":"text/html"});
                res.end(content, "utf-8");
              }
            });
          } else {
            res.writeHead(404);
            res.end();
          }
        });
      } else {
        res.writeHead(404);
        res.end();
      }
    }).listen(8888);
    console.log("Server running at http://127.0.0.1:8888/");

    服务器端自定义了title事件,用来发送标题数据,其他的数据使用默认事件发送。

    客户端部分代码及注释如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>Server-Sent Events Demo</title>
      <meta charset="UTF-8" />
      <script>
        window.onload = function() {
          var button = document.getElementById("connect");
          var status = document.getElementById("status");
          var output = document.getElementById("output");
          var connectTime = document.getElementById("connecttime");
          var source;
          function connect() {
            source = new EventSource("stream");
            //messsage事件:当收到服务器传来的数据时触发
            source.addEventListener("message", function(event) {
              output.textContent = event.data;  //每次收到数据后都更新时间
            }, false);
            //自定义的事件title
            source.addEventListener("title", function(event) {
              connectTime.textContent = event.data;
            }, false);
            //open事件:当客户端和服务器完成连接时触发
            source.addEventListener("open", function(event) {
              //每次连接成功后更新按钮功能和文本提示,再次点击按钮应为关闭连接
              button.value = "Disconnect";
              button.onclick = function(event) {
                //调用eventsource对象的close()方法关闭连接,并且为其绑定新的事件connect建立连接
                source.close();
                button.value = "Connect";
                button.onclick = connect;
              };
            }, false);
            //异常处理
          }
          //调用,如果支持EVentSource则执行connect()方法仅从sse连接
          connect();
        }
      </script>
    </head>
    <body>
      <input type="button" id="connect" value="Connect" /><br />
      <span id="status"></span><br />
      <span id="connecttime"></span><br />
      <span id="output"></span>
    </body>
    </html>

    客户端监听事件,不同的事件收到的数据进行不同的渲染。同时,都过为按钮绑定事件,调用close()等方法,实现SSE连接的打开与断开。

    SSE技术简单方便,且是HTML5中定义内容,实现了服务器推送数据的技术,下图是SSE的浏览器兼容性列表:

    但是SSE只能实现服务器到客户端单向的数据传输。有时我们的需求需要使用双向数据传输,这时就需要使用WebSocket。

    五、WebSocket

    WebSocket也是HTML5中定义的。它是一个新的协议,实现了全双工的通信模式,即客户端和服务器端可以互相发送消息。WebSocket的实现首先需要客户端和服务器端进行一次握手,此后就会建立起一个数据传输通道,通道存在期间客户端和服务器端可以平等的互相发送数据。具体的逻辑图如下:

    WebSocket的服务器端实现比较复杂,但是各个后台语言都已经有实现好的WebSocket库。比如Node.js中的nodejs-websocket模块和socket.io模块。使用WebSocket技术可以实现很多功能,附件中就是借助nodejs-websocket模块编写的弹幕效果。

    WebSocket的客户端实现比较便捷,首先需要实例化一个WebSocket对象,传入要请求的服务器的url。这里需要注意,协议名要指定为ws或wss,如:

    ws = new WebSocket("ws://localhost:8080");

    客户端可以通过调用send()方法进行数据的发送,通过调用close()方法关闭WebSocket连接。WebSocket也使用了MessageEvent接口,因此可以对消息事件进行监听,默认的可以通过监听message事件获取数据。下面是WebSocket在HTML5规范中定义的接口:

    WebSocket的服务器端实现可以分为两个部分,第一个部分是握手部分,主要负责HTTP协议的升级,第二个部分是数据传输部分。

    WebSocket协议可以说是一个HTTP协议的升级版,这个升级过程需要通过客户端和服务器的一次握手来实现。下面是建立握手时客户端向服务器发送的请求报文头实例:

    字段Upgrade:websocket和Connection:Upgrade部分完成了协议的升级,服务器可以触发响应事件,获取这两个字段的内容,匹配符合要求后服务器端进行握手处理。客户端需要向服务器端发送一个Sec-WebSocket-Key字段,这个字段的内容是客户端产生的,相当于一个私钥。服务器端收到客户端的请求头后,如果确定是要使用WebSocket协议,就开始进行握手。服务器端使用客户端传来的Sec-WebSocket-Key的值,与服务器端存储的一个全局唯一标识符进行拼接,之后做SHA1处理和BASE64加密,并作为响应头返回给客户端。服务器端的GUID相当于公钥。

    下面是服务器端返回的响应报文头,处理后的字符串在Sec-WebSocket-Accept字段中给出。客户端必须受到101状态码,这个状态码表示切换协议,从而完成对协议的升级。

    总的来看,WebSocket只有在建立握手连接的时候借用了HTTP协议的头,连接成功后的通信部分都是基于TCP的连接,可以说WebSocket协议是HTTP协议的升级版。

    WebSocket的数据帧格式如下:

    opcode存储的是传输数据的类型,诸如文本、二进制数据等。数据传输时首先会对该部分的值进行判断,然后进行对应的数据操作。数据存储在Payload Data字段中。最后将帧结构解析为一个键值对的对象。

    下面是浏览器对WebSocket的支持情况:

    展开全文
  • 第三课:API接口协议

    千次阅读 2020-09-16 14:27:08
    API接口协议API接口常见的接口协议HTTP 超文本传输协议HTTPS 安全超文本传输协议接口类型HTTP API接口WebService接口数据库访问接口 API接口 API:Application Programming Interface,即应用程序编程接口 一个API...

    API接口

    API:Application Programming Interface,即应用程序编程接口

    一个API中通常包含:
    method:请求方法
    URL:唯一资源定位符
    params:参数
    Authorization:认证方式
    Headers:消息头
    Body:消息体

    常见的接口协议

    1、HTTP 超文本传输协议
    2、HTTPS 安全超文本传输协议
    3、FTP 文件传输协议( Xshell的文件拖拽)
    4、TCP 网络控制协议
    5、IP 互联网协议
    6、UDP 用户数据协议

    HTTP 超文本传输协议

    简介:
    HTTP协议(HyperText Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。

    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

    工作原理:
    HTTP协议工作于客户端-服务器(C/S)架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即web服务器发送所有请求。

    一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。

    web服务器有:Apache服务器,IIS服务器(Internet Information Service)等。

    web服务器根据接收到的请求,向客户端发送响应信息。

    HTTP默认端口为80,也可以改为其它端口。

    HTTPS 安全超文本传输协议

    简介:
    HTTPS是安全的http协议。

    HTTPS = HTTP + 加密 + 认证 + 完整性保

    HTTPS = HTTP + SSL/TLS

    工作原理:
    如下图所示,其实就是在传输层和应用之间增加了一个安全层。也就是:HTTP是直接和TCP进行通信的,HTTPS是利用SSL/TLS建立安全信道,加密数据包,然后才和TCP进行通信。

    http协议与https协议区别

    接口类型

    HTTP API接口

    走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。

    API接口一般又分为两种:程序内部的接口和系统对外的接口

    json是一种通用的数据类型,所有的语言都认识它。(json的本质是字符串,他与其他语言无关,只是可以经过稍稍加工可以转换成其他语言的数据类型,比如可以转换成Python中的字典,key-value的形式,可以转换成JavaScript中的原生对象,可以转换成java中的类对象等。

    WebService接口

    走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。

    数据库访问接口

    数据库访问接口是走jdbc方式连接数据,对数据库进行增删改查操作,需要使用工具进行测试。

    展开全文
  • 1背景介绍1.1接口webui接口是服务器与客户端交互的方式,即浏览器或者其他客户端工具与web服务UI层交互的协议.常见的有两大类,一是浏览器与服务器交互的HTTP,HTTPS协议接口,另一类webservice接口如soap,rmi,...
  • JavaWeb开发一 通信协议

    千次阅读 2019-01-16 18:32:57
    一. HTTP协议 ...  HTTP协议是Hyper Text Transfer Protocol (超文本传输协议)   作用: 根据这个协议把超... HTTP是在TCP/IP协议通信协议的基础上来传数据的, 这里的数据指HTMl文件, 图片文件, 查询结果等, 不...

    一. HTTP协议

    1. HTTP介绍

        HTTP协议是Hyper Text Transfer Protocol (超文本传输协议)  

        作用: 根据这个协议把超文本(除了文字还有图片, 连接, 甚至音乐视频的文本 也就是网页)从万维网服务器传输到本地,

        HTTP是在TCP/IP协议通信协议的基础上来传数据的, 这里的数据指HTMl文件, 图片文件, 查询结果等, 不涉及数据包(packet)传输.

        HTTP协议主要规定了客户端和服务器之间的通信格式, 默认使用80端口

    2. HTTP解析

        内容:

    ①. HTTP特点

        简单快速, 灵活, 无连接, 无状态

      简单快速: 用户要什么资源,就向服务器请求什么资源, 用户只要传请求方法路径就可以了, 因为简单所以快速

      灵活:    HTTP允许传任何类型的数据对象

      无连接: 每次连接只处理一个请求, 处理完客户的请求, 收到客户的应答后, 就断开连接. 这样可以节省传输时间

      无状态:  HTTP协议是无状态的, HTTP协议自身不会保存请求和响应之间的通信状态, 任何两次请求之间都没有依赖关系,每个请求都是独立的.

    得益于上面优点, HTTP可以更快地处理大量事务, 而且确保了协议的可伸缩性

    ②. HTTP报文

        HTTP报文:    请求报文, 响应报文

       请求报文组成部分: 请求行(request line), 请求头(header), 空行, 请求体

       响应报文组成部分: 状态行, 响应头部, 空行, 响应体

     请求报文:

     

         请求报文:

               1. 请求行

                      说明请求类型, 要访问的资源以及所使用的HTTP版本     (请求类型+url+HTTP版本)

                      POST  /chapter1/user.html HTTP/1.1

                     以上代码中POST代表请求方法, /chapter1/user.html 表示url   HTTP/1.1 是协议和协议版本

             2. 请求头

                    由关键字/值组成, 每行一对, 关键字和值用英文冒号:分隔

                    内容: 客户端请求的信息, 包含许多有关客户端环境和请求正文的有用信息

                                 Host: 表示主机, 虚拟主机

                                 Connection:  HTTP/1.1 增加的, 使用keepalive, 即持久连接, 一个连接可以发多个请求

                                 User-Agent:  请求发送者, 兼容性以及定制化需求

           3. 空行

                 最后一个请求头之后是一个空行,表示请求头已经结束, 接下来的是请求正文

           4. 请求体

                 可以承载多个请求参数的数据

    ③HTTP请求方式

    1. GET  请求指定的页面信息, 并返回实体主体
    2. HEAD  类似于get请求, 只不过返回的响应中没有具体的内容,用于获取报头
    3. POST  向指定资源提交数据进行处理请求(例如提交表单或者上传文件).数据被包含在请求体中
    4. PUT  从客户端向服务端传送的数据取代指定的文档的内容
    5. DELETE  请求服务器删除指定的页面

      GET与POST的区别

    • GET在浏览器回退时是无害的, 而POST会再次提交请求
    • GET请求会被浏览器主动缓存, 而POST不会, 除非手动设置
    • GET请求参数会被完整保留在浏览器历史记录里, 而POST中的参数不会被保留
    • GET请求在URL中传送的参数是有长度限制的, 而POST没有限制
    • GET参数通过URL传递, POST放在Requestbody中

    ④HTTP状态码

      状态码由3位数字组成, 第一个数字定义了响应的类别

          1xx:  指示信息--表示请求已接收, 继续处理

          2xx:  成功--表示请求已被成功接收, 理解, 接受

          3xx:  重定向--要完成请求必须进行跟进一步的操作

          4xx:  客户端错误--请求有语法错误或请求无法实现

          5xx:  服务端错误--服务器未能实现合法的请求

    ⑤持久连接

        HTTP协议的初始版本中, 每进行一次HTTP通信就要断开一次TCP连接.以前都是传输容量很小的文本, 而现在随着HTTP的普及,文档包含了大量图片.如果使用浏览器访问一个包含多张图片的HTML页面时, 在发送请求访问HTML页面资源的同时, 也会请求该HTML页面里包含的其他资源. 每次的请求都会造成无谓的TCP连接建立和断开, 增加通信量的开销.

    解决上诉TCP连接问题,的方法便是HTTP/1.1持久连接(HTTP Persistent Connections)

    持久连接的特点是: 只要任意一端没有明确提出断开连接, 则保持TCP连接状态

    持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销, 减轻了服务器的负载. 另外, 减少开销的那部分时间,使HTTP请求和响应能更早结束. 这样Web页面显示速度也就相应的提高了.

    在HTTP/1.1中所有连接都是默认持久连接

    ⑥管线化

      持久连接使得多数请求以管线化方式发送成为可能. 以前发送请求后需等待并受到响应, 才能发送下一个请求. 管线化技术出现后, 不用等待也可以发送下一个请求.

      这样就能够做到同时并行发送多个请求, 而不需要一个接一个等待响应了. 通俗地讲, 请求打包一次传输过去, 响应打包一次传递回来. 管线化的前提是持久连接.

    比较:

      未使用持久连接:   

            建立TCP连接->HTTP请求1->HTTP响应1->断开TCP连接->建立TCP连接->HTTP请求2->HTTP响应2->断开TCP连接

      使用持久连接未使用管线化:

            建立TCP连接->HTTP请求1-HTTP响应1->HTTP请求2->HTTP响应2->断开TCP连接

      使用持久连接和管线化:

           建立TCP连接->HTTP请求1->HTTP请求2->HTTP响应1->HTTP响应2->断开TCP连接

    二. HTTPS协议

    1. HTTP的不足

    • 通信使用明文(不加密), 可能会被窃听
    • 不验证通信方的身份, 因此有可能遭遇伪装
    • 无法证明报文的完整性, 所以报文有可能会遭到篡改

    2. 什么是HTTPS协议

      添加了加密和认证机制的HTTP就是HTTPS.使用HTTPS通信的网站在浏览器上网址左边有一个锁?符号.

    3. HTTPS和HTTP的比较

    可见, HTTPS并非是应用层的一种新协议. 只是HTTP通信接口部分使用了SSL(Secure Socket Layer, 安全套接层) 或TLS(Transport Layer Security)协议替代而已.

    采用SSL后, HTTP就拥有了HTTPS的加密, 证书和完整性保护这些功能. 需要注意的是: SSL是独立于HTTP协议的.

    4. HTTPS通信过程中的加密技术

      加密技术是HTTPS组成的重要技术. 常见加密技术有: 共享密钥加密和公开密钥加密

    ①共享密钥加密(对称密钥加密)

      共享密钥加密又叫对称密钥加密, 加密和解密使用同一个密钥.加密算法是公开的, 密钥保密, 加密和解密都要用到密钥.

    5个常用对称加密算法: DES, DESede, AES, IDEA, PBE

    ②公开密钥加密(非对称密钥加密)

      公开密钥加密使用一对非对称密钥: 私有密钥(private key) 和 公有密钥(public key).

      私有密钥在自己手里, 共有密钥可以随意发布.

     例: A有公钥密钥    B有公钥密钥

     B要发信息给A, A把A公钥给B, B用A公钥加密, 密文需要A密钥解密, A收到后用A密钥解密

    HTTPS采用混合加密机制

       混合加密机制能够将两种加密方式各自的优势结合起来,即保证了通信过程中的安全性,又保证了通信过程的效率。通常,在交换密钥环节使用非对称密钥加密方式,之后的建立通信交换报文阶段则使用对称密钥加密方式。

       但是这样仍然有个问题就是:这个public key是否就是真正的public key,有不有可能在传输过程中被攻击者替换了.于是为了解决这个问题,出现了第三方机构--数字证书认证机构(CA, Certificate Authority).它站在客户端与服务器都可信赖的立场上,为服务器端颁发证明“这个公开密钥确实时那个服务器的”公开密钥证书,同时对该公开密钥进行数字签名。客户端在在收到服务器公钥时会对公钥上的数字签名进行验证,如果验证通过,客户端便可明确两件事:一,认证服务器的公开密钥的是真实有效的数字证书认证机构。二,服务器的公开密钥是值得信赖的。


    5. 客户端证书

    HTTPS 中还可以使用客户端证书。以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端,其作用跟服务器证书如出一辙。
    在PC端首次登陆支付宝、网上银行等网页时,其是不是让你安装一些东西?没错,这些“东西”就是支付宝、银联等提供的客户端证书。通过客户端证书,服务器就能知道它正在响应的“确实是那个客户端”,这样就保证了双方通信的安全性。

     

     

     

    展开全文
  • 1 “通信”与“通讯”傻傻分得清 传统意义上的“通讯”主要指电话、电报、电传。通讯的“讯”指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端。媒体讯息的内容主要是话音、文字、图片和视频图像。其...

    1  “通信”与“通讯”傻傻分得清

    传统意义上的“通讯”主要指电话、电报、电传。通讯的“讯”指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端。媒体讯息的内容主要是话音、文字、图片和视频图像。其网络的构成主要由电子设备系统和无线电系统构成,传输和处理的信号是模拟的。所以,“通讯”一词应特指采用电报、电话、网络等媒体传输系统实现上述媒体信息传输的过程。“通讯”重在内容形式,因此通讯协议主要集中在ISO七层协议中的应用层。

    “通信”仅指数据通信,即通过计算机网络系统和数据通信系统实现数据的端到端传输。通信的“信”指的是信息(Information),信息的载体是二进制的数据,数据则是可以用来表达传统媒体形式的信息,如声音、图像、动画等。“通信”重在传输手段或使用方式,从这个角度,“通信”的概念包括了信息“传输”。因此通信协议主要集中在ISO七层协议中的物理层、数据链路层、网络层和传输层。

    在物联网应用中,通信技术包括Wi-Fi、RFID、NFC、ZigBee、Bluetooth、LoRa、NB-IoT、GSM、GPRS、3/4/5G网络、Ethernet、RS232、RS485、USB等。

    相关的通信协议(协议栈、技术标准)包括Wi-Fi(IEEE 802.11b)、RFID、NFC、ZigBee、Bluetooth、LoRa、NB-IoT、CDMA/TDMA、TCP/IP、WCDMA、TD-SCDMA、TD-LTE、FDD-LTE、TCP/IP、HTTP等。注:3GPP将5G技术标准制定分为两个阶段,原计划中第一阶段的标准将在2018年底作为R15的一部分公布,将仅针对NR。第二阶段的标准将在2019年底作为R16的一部分,包括整个5G架构(包括核心网络)。

    物联网技术框架体系中所使用到的通讯协议主要有:AMQP、JMS、REST、HTTP/HTTPS、COAP、DDS 、MQTT等。

    2 通讯协议

    2.1  HTTP/HTTPS

    一、HTTP

    HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。

    HTTP协议的主要特点可概括如下:

    (1)支持客户/服务器模式。

    (2)简单快速。客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    (3)灵活。HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    (4)无连接。无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    (5)无状态。HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    二、HTTPS

    HTTPS(Hypertext TransferProtocol over Secure Socket Layer,基于SSL的HTTP协议)使用了HTTP协议,但HTTPS使用不同于HTTP协议的默认端口及一个加密、身份验证层(HTTP与TCP之间)。这个协议的最初研发由网景公司进行,提供了身份验证与加密通信方法,现在它被广泛用于互联网上安全敏感的通信。

    客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。

    (1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

    (2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

    (3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

    (4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

    (5)Web服务器利用自己的私钥解密出会话密钥。

    (6)Web服务器利用会话密钥加密与客户端之间的通信。

    2.2  WebService/REST

    首先说明下,WebService和REST都不是一种协议,他们是基于HTTP/HTTPS的一种技术方式或风格,之所以放在这里,是因为在物联网应用服务对外接口方式常采用WebService和RESTful API。

     

    一、WebService

    WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

    XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。

    (1)XML+XSD

    WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)。XML是WebService平台中表示数据的格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。

    XML解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16位,32位,64位?这些细节对实现互操作性很重要。XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。

    (2)SOAP

    WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。

    SOAP协议 = HTTP协议 + XML数据格式

    SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。

    (3)WSDL

    好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。 WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。

    WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。

    WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。

    二、REST

    REST (Representational State Transfer),表征状态转换,是基于HTTP 协议开发的一种通信风格,目前还不是标准。

    适用范围:REST/HTTP 主要为了简化互联网中的系统架构,快速实现客户端和服务器之间交互的松耦合,降低了客户端和服务器之间的交互延迟。因此适合在物联网的应用层面,通过REST 开放物联网中资源,实现服务被其他应用所调用。它有以下特点:

    (1)REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful;

    (2)客户端和服务器之间的交互在请求之间是无状态的;

    (3)在服务器端,应用程序状态和功能可以分为各种资源,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用URI (Universal Resource Identifier) 得到一个惟一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态;

    (4)使用的是标准的HTTP方法,比如GET、PUT、POST 和DELETE。

    REST是互联网中服务调用API 封装风格,物联网中数据采集到物联网应用系统中,在物联网应用系统中,可以通过开放RESTAPI的方式,把数据服务开放出去,被互联网中其他应用所调用。

    2.3  CoAP 协议

    CoAP (Constrained Application Protocol),受限应用协议,应用于无线传感网中协议。

    适用范围:CoAP 是简化了HTTP 协议的RESTfulAPI,CoAP 是6LowPAN 协议栈中的应用层协议,它适用于在资源受限的通信的IP 网络。它有以下特点:

    (1)报头压缩。CoAP 包含一个紧凑的二进制报头和扩展报头。它只有短短的4B 的基本报头,基本报头后面跟扩展选项。一个典型的请求报头为10~20B。

    (2)方法和URIs。为了实现客户端访问服务器上的资源,CoAP 支持GET、PUT、POST 和DELETE 等方法。CoAP 还支持URIs,这是Web 架构的主要特点。

    (3)传输层使用UDP 协议。CoAP 协议是建立在UDP 协议之上,以减少开销和支持组播功能。它也支持一个简单的停止和等待的可靠性传输机制。

    (4)支持异步通信。HTTP 对M2M(Machine-to-Machine)通信不适用,这是由于事务总是由客户端发起。而CoAP 协议支持异步通信,这对M2M 通信应用来说是常见的休眠/唤醒机制。

    (5)支持资源发现。为了自主的发现和使用资源,它支持内置的资源发现格式,用于发现设备上的资源列表,或者用于设备向服务目录公告自己的资源。它支持RFC5785 中的格式,在CoRE 中用/.well—known/core 的路径表示资源描述。

    (6)支持缓存。CoAP 协议支持资源描述的缓存以优化其性能。

     

    CoAP协议主要实现:

    (1)libcoap(C 语言实现)

    (2)Californium(java 语言实现)

    另外,CoAP 和6LowPan,这分别是应用层协议和网络适配层协议,其目标是解决设备直接连接到IP 网络,也就是IP 技术应用到设备之间、互联网与设备之间的通信需求。因为IPV6 技术带来巨大寻址空间,不光解决了未来巨量设备和资源的标识问题,互联网上应用可以直接访问支持IPV6 的设备,而不需要额外的网关。

    2.4  MQTT 协议(低带宽)

    MQTT (Message Queuing Telemetry Transport ),消息队列遥测传输,由IBM 开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议。MQTT 协议采用发布/订阅模式,所有的物联网终端都通过TCP 连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与设备之间消息的转发。

    MQTT 在协议设计时就考虑到不同设备的计算性能的差异,所以所有的协议都是采用二进制格式编解码,并且编解码格式都非常易于开发和实现。最小的数据包只有2个字节,对于低功耗低速网络也有很好的适应性。有非常完善的QOS 机制,根据业务场景可以选择最多一次、至少一次、刚好一次三种消息送达模式。运行在TCP 协议之上,同时支持TLS(TCP+SSL)协议,并且由于所有数据通信都经过云端,安全性得到了较好地保障。

    适用范围:在低带宽、不可靠的网络下提供基于云平台的远程设备的数据传输和监控。

    它具有以下特点:

    (1)使用基于代理的发布/订阅消息模式,提供一对多的消息发布;

    (2)使用TCP/IP 提供网络连接;

    (3)小型传输,开销很小(固定长度的头部是2 字节),协议交换最小化,以降低网络流量;

    (4)支持QoS,有三种消息发布服务质量:“至多一次”, “至少一次”, “只有一次”。

    协议主要实现和应用:

    (1)已经有PHP,JAVA,Python,C,C#等多个语言版本的协议框架;

    (2)IBM Bluemix 的一个重要部分是其IoTFoundation 服务,这是一项基于云的MQTT实例;

    (3)移动应用程序也早就开始使用MQTT,如Facebook Messenger 和com 等。

    另外,MQTT 协议一般适用于设备数据采集到端(Device→Server,Device→Gateway),集中星型网络架构(hub-and-spoke),不适用设备与设备之间通信,设备控制能力弱,另外实时性较差,一般都在秒级。

    2.5  DDS 协议(高可靠性、实时)

    DDS(Data Distribution Service for Real-Time Systems),面向实时系统的数据分布服务,这是大名鼎鼎的OMG 组织提出的协议,其权威性应该能证明该协议的未来应用前景。

    适用范围:分布式高可靠性、实时传输设备数据通信。目前DDS 已经广泛应用于国防、民航、工业控制等领域。

    它具有以下特点:

    (1)以数据为中心;

    (2)使用无代理的发布/订阅消息模式,点对点、点对多、多对多;

    (3)提供多大21 种QoS服务质量策略。

    协议主要实现:

    (1)OpenDDS 是一个开源的C++ 实现;

    (2)OpenSplice DDS;

    另外,DDS很好地支持设备之间的数据分发和设备控制,设备和云端的数据传输,同时DDS的数据分发的实时效率非常高,能做到秒级内同时分发百万条消息到众多设备。DDS在服务质量(QoS)上提供非常多的保障途径,这也是它适用于国防军事、工业控制这些高可靠性、可安全性应用领域的原因。但这些应用都工作在有线网络下,在无线网络,特别是资源受限的情况下,没有见到过实施案例。

    2.6  AMQP 协议(互操作性)

    AMQP(Advanced Message Queuing Protocol),先进消息队列协议,这是OASIS 组织提出的,该组织曾提出OSLC(Open Source Lifecyle)标准,用于业务系统例如PLM,ERP,MES等进行数据交换。

    适用范围:最早应用于金融系统之间的交易消息传递,在物联网应用中,主要适用于移动手持设备与后台数据中心的通信和分析。

    它有以下特点:

    (1)Wire 级的协议,它描述了在网络上传输的数据的格式,以字节为流;

    (2)面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全;

    协议实现:

    (1)Erlang 中的实现有RabbitMQ

    (2)AMQP 的开源实现,用C 语言编写OpenAMQ

    (3)Apache Qpid

    (4)stormMQ

    2.7  XMPP 协议(即时通信)

    XMPP(Extensible Messaging and Presence Protocol)可扩展通讯和表示协议,XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF 国际标准组织完成了标准化工作。

    适用范围:即时通信的应用程序,还能用在网络管理、内容供稿、协同工具、档案共享、游戏、远端系统监控等。

    它有以下特点:

    (1)客户机/服务器通信模式;

    (2)分布式网络;

    (3)简单的客户端,将大多数工作放在服务器端进行;

    (4)标准通用标记语言的子集XML的数据格式。

    另外,XMPP 是基于XML 的协议,由于其开放性和易用性,在互联网及时通讯应用中运用广泛。相对HTTP,XMPP 在通讯的业务流程上是更适合物联网系统的,开发者不用花太多心思去解决设备通讯时的业务通讯流程,相对开发成本会更低。但是HTTP 协议中的安全性以及计算资源消耗的硬伤并没有得到本质的解决。

    2.8  JMS (JavaMessage Service)

    JMS (Java Message Service),JAVA 消息服务,这是JAVA 平台中著名的消息队列协议。

    Java 消息服务(Java Message Service)应用程序接口,是一个Java 平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java 消息服务是一个与具体平台无关的API,绝大多数MOM 提供商都对JMS 提供支持。

    JMS 是一种与厂商无关的API,用来访问消息收发系统消息,它类似于JDBC(Java DatabaseConnectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的API,而JMS则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商都支持JMS,包括IBM的MQSeries、BEA 的Weblogic JMS service 和Progress 的SonicMQ。JMS能够通过消息收发服务(有时称为消息中介程序或路由器)从一个JMS 客户机向另一个JMS 客户机发送消息。消息是JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本(TextMessage)、可序列化的对象(ObjectMessage)、属性集合(MapMessage)、字节流(BytesMessage)、原始值流(StreamMessage),还有无有效负载的消息(Message)。

    2.9 通讯协议比较

     

    展开全文
  • 摘要:介绍了嵌入式WEB传感器的体系结构,提出了网络化接口中TCP/IP协议栈的几种实现方式,着重探讨了基于TCP/IP协议栈芯片W3100A的网络化接口的实现,最后分析了嵌入式WEB传感器的WEB功能的实现。  关键词...
  • 国网数据接入接口规范:采用 Web Service 技术标准包装,形成 Web Service 接口适配器,用于平台与接入平台系统间进行数据交换。
  • 软件常用通信协议模板

    千次阅读 2019-04-11 10:17:31
    通信协议是软件的重要组成部分,是系统中软件交互信息的桥梁和标准。 我接触过的通信协议主要用于三种场合,对应三种形式的数据形式: 1)上位机和下位机各模块之间 这种场合下通常是通过串口或网口传输状态、控制、...
  • 1背景介绍1.1接口webui接口是服务器与客户端交互的方式,即浏览器或者其他客户端工具与web服务UI层交互的协议.常见的有两大类,一是浏览器与服务器交互的HTTP,HTTPS协议接口,另一类webservice接口如soap,rmi,...
  • SDN:简述对SDN北向接口协议的认识

    千次阅读 2019-03-07 16:46:01
    SDN:简述对SDN北向接口协议的认识 北向接口 是SDN应用层与SDN控制器层之间通信的依据。使用北向接口协议可以直接调用控制器实现网络功能。作为网络服务提供者,可在异构网络中提供自己的服务,无须根据细节来更改...
  • 微服务:通信协议:Restful,RPC(Dubbo、Motan、gRPC)

    万次阅读 多人点赞 2019-08-22 15:32:37
    简介 在单体式应用中,各个模块之间的调用是通过编程语言级别的方法或者函数来实现的。 但是一个基于微服务的分布式... 因此,微服务必须使用进程内通信协议(如 HTTP、AMQP)或二进制协议(如 TCP)进行交互,...
  • 微信公众号“智物客”和您免费分享物联网、智慧城市相关技术和项目解决方案。本文从物联网体系各层协议入手,重点分析了物联网体系常用的通讯协议,在下半部分,笔者将分享物联网体系的通信协议
  • WEB通信交互的几种方式

    千次阅读 2019-02-17 00:40:32
    WEB通信交互的几种方式 - 实时通信发展过程简介  简单介绍一下现在的WEB通信有以下几种方式:最基本的http请求方式,Ajax轮询,Ajax长轮询,HTML5推送事件,HTML5的WebSocket。 最基本的http请求方式: 客户端...
  • 基础——IOT(物联网)的七大通信协议

    万次阅读 多人点赞 2019-09-30 10:31:04
    在物联网协议中,我们一般分为两大类,一类是传输...通信协议则主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信。 ​ 上图为物联网联接的问题空间,其中物联网...
  • 通过对基于HTTP的传统Web实时通信方案进行分析,针对其中的不足与缺点,深入介绍了基于HTML5 WebSocket协议的实时通信机制以及相对于传统方案的优势,并通过使用Node.js的Express框架和HTML5 WebSocket协议的第三方...
  • 前言 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。...是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文
  • 如何自定义一个通信协议

    万次阅读 多人点赞 2018-01-21 14:07:27
    借鉴简单的OSI和TCP/IP通信模型来讨论如何自定义一个适应自己的通信协议 前言 经典的OSI七层模型 1TCPIP模型解析 11整体介绍 22数据链路层 23网络层 24传输层 25应用层 不同类型的通信方式的总结 1从上述模型...
  • WEB开发中常用的协议和标准

    千次阅读 2018-04-20 17:06:58
    DNS协议 1、DNS协议的作用是将域名解析为IP,网络上的每个站点的位置是用IP来确定的,访问一个网站首先就要知道它的IP,不过数据组成的IP记起来不方便,所以就使用域名来代替IP,由于IP和域名的对应关系经常变化,...
  • 网络通信协议

    千次阅读 2017-11-30 15:33:40
    网络通信协议 今天学习了网络通信协议,总结出来的知识点,不足之处请大家多多指教! 网络通信协议:负责在网络上建立通信通道和控制通过通道的信息流的规则 为了进行网络通信通信双方必须遵守通信...
  • 关于计算机网络通信协议

    千次阅读 多人点赞 2018-11-30 22:25:07
    open system interconnection :开放式系统互联,ISO发起,其任务是指定国际计算机通信标准,特别是促进兼容系统间的互联。 www:world wide web 万维网 HTML:hyper text transfer protocol 超文本传输协议 CGI:...
  • 另一类是其未能支持IP协议而需要网关(协议转换)来接入物联网,如Zigbee、蓝牙等设备。对于蓝牙设备而言,手机其实是一个网关。 互联网有B/S和C/S两种通信模式。在移动互联网领域,APP是以C/S的方式以client...
  • IoT—物联网通信协议解析

    千次阅读 2020-07-01 07:41:49
    摘要 随着物联网设备数量的持续增加,这些设备之间的通信或连接已成为一个重要的思考课题。 通信对物联网来说十分常用且关键...其中一些通信协议只适合小型家用电器,而其他一些通信协议则可以用于大型智慧城 市项目。
  • 联网常见通信协议与通讯协议梳理【上】- 通讯协议1 “通信”与“通讯”傻傻分得清传统意义上的“通讯”主要指电话、电报、电传。通讯的“讯”指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端。媒体...
  • WebSocket 协议接口测试

    千次阅读 2020-08-14 15:06:40
    websocket协议是基于TCP的一种新的网络协议 它实现了客户端与服务器全双工通信,即,允许服务器主动向客户端发送信息 2.websocket VS HTTP http双工通信效率非常低,以前app心跳机制,客户端要主动向服务器发送请求 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 160,723
精华内容 64,289
热门标签
关键字:

web通信接口协议