原文地址:https://blog.csdn.net/sinat_19447667/article/details/67637167

1 什么是Ntrip?

CORS(Continuously Operating Reference Stations)就是网络基准站,通过网络收发GPS差分数据。用户访问CORS后,不用单独架设GPS基准站,即可实现GPS流动站的差分定位。

访问CORS系统,就需要网络通讯协议。NTRIP( Networked Transport of RTCM via Internet Protocol)是CORS系统的通讯协议之一。

2 系统组成

使用NTRIP通讯协议的CORS系统,其组成请参考下图

图1 Ntrip系统组成

NtripSource        用来产生GPS差分数据,并把差分数据提交给NtripServer

NtripServer        负责把GPS差分数据提交给NtripCaster

NtripCaster        差分数据中心,负责接收、发送GPS差分数据

NtripClient        登录NtripCaster后,NtripCaster把GPS差分数据发送给它

NtripSource 和 NtripServer 一般已经集成到一台GPS基准站内,GPS基准站产生差分数据(扮演着NtripSource的角色),然后再通过网络发送给NtripCaster(扮演着NtripServer的角色)

NtripSource 和 NtripServer也可以分开:GPS基准站产生差分数据,然后通过串口发送给一个程序,这个程序再把差分数据发送给NtripCaster。这里GPS基准站扮演着NtripSource的角色,程序扮演着NtripServer的角色。

NtripCaster一般就是一台固定IP地址的服务器,它负责接收、发送差分数据。给NtripClient发送差分数据时有两种方案:一是直接转发NtripSource产生的差分数据;二是通过解算多个NtripSource的差分数据,为NtripClient产生一个虚拟的基准站(即VRS)。

NtripClient一般就是GPS流动站。登录NtripCaster后,发送自身的坐标给NtripCaster。NtripCaster选择或产生差分数据,然后发送给NtripClient。这样GPS流动站即可实现高精度的差分定位。

3 NtripServer

NtripServer访问NtripCaster的步骤

1、与NtripCaster建立TCP连接;

2、给NtripCaster发送如下数据(↙表示\r\n即0DH和0AH):

SOURCE letmein /Mountpoint↙

Source-Agent: NTRIP NtripServerCMD/1.0↙

上面的Mountpoint是挂载点名称,注意它前面的/不能省略。NtripServer可能有多个,挂载点用来区分它们。

上面的letmein是此挂载点对应的密码。没有密码,随便一个程序都能连上挂载点,整个系统就很容易受到恶意攻击。

"Source-Agent: NTRIP NtripServerCMD/1.0"这一行不是必需的。它说明了NtripServer的软件名称和版本号。这里的软件名称为NtripServerCMD,版本号为1.0。

3、NtripCaster给NtripServer的回复

挂载点、密码均有效,返回:

ICY 200 OK↙

挂载点或密码无效,返回:

ERROR - Bad Password↙

4、NtripServer给NtripCaster发送差分数据

NtripCaster回复ICY 200 OK后,NtripServer就可以给NtripCaster发送差分数据了。

4 NtripClient

NtripClient访问NtripCaster,一般有两个目的:获取源列表、获取差分数据。下面分别进行介绍。

4.1 获取源列表

多个NtripServer给NtripCaster发送差分数据,这样NtripCaster获得的差分数据就有多个。NtripClient在获取差分数据之前,需要知道差分数据有几个?分别是什么格式的?……这就需要获取源列表,获取步骤如下:

1、与NtripCaster建立TCP连接;

2、给NtripCaster发送如下数据:

GET / HTTP/1.0↙

User-Agent: NTRIP GNSSInternetRadio/1.4.10↙

Accept: */*↙

Connection: close↙

"User-Agent: NTRIP GNSSInternetRadio/1.4.10"说明了NtripClient的软件名称和版本号。这里的软件名称为GNSSInternetRadio,版本号为1.4.10。

3、NtripCaster将返回如下数据,然后自动断开TCP连接

SOURCETABLE 200 OK↙

Server: NTRIP Trimble NTRIP Caster↙

Content-Type: text/plain↙

Content-Length: 441↙

Date: 02/Jun/2010:14:13:32 UTC↙

STR;RTCM23;RTCM23;RTCM 2.3;1(1),3(10),18(1),19(1);2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙

STR;CMR;CMR;CMR;CMR;2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙

STR;CMRP;CMRP;CMR+;CMR;2;GPS;SGNET;CHN;31;121;1;1;Trimble GPSNet;None;B;N;0;;↙

STR;DGPS;DGPS;RTCM 2.1;RTCM 2.1;2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙

STR;RTCM3X;RTCM3X;RTCM 3.X;1004(1),1005/1007(5),PBS(10);2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙

ENDSOURCETABLE↙

源列表数据以SOURCETABLE开头,以ENDSOURCETABLE结尾。

200 OK 表示一切正常。

"Server: NTRIP Trimble NTRIP Caster"是对NtripCaster软件的说明。

"Date: 02/Jun/2010:14:13:32 UTC"表示当前时刻。其格式并不固定,如:

Date: Sun, 01 May 2016 08:40:39 中国标准时间↙

以下内容就是源列表数据。"Content-Length: 441"表示源列表数据的字节数为441,含每行结尾的\r\n。

STR;RTCM23;RTCM23;RTCM 2.3;1(1),3(10),18(1),19(1);2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙

STR;CMR;CMR;CMR;CMR;2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙

STR;CMRP;CMRP;CMR+;CMR;2;GPS;SGNET;CHN;31;121;1;1;Trimble GPSNet;None;B;N;0;;↙

STR;DGPS;DGPS;RTCM 2.1;RTCM 2.1;2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙

STR;RTCM3X;RTCM3X;RTCM 3.X;1004(1),1005/1007(5),PBS(10);2;GPS;SGNET;CHN;31;121;1;1;SGCAN;None;B;N;0;;↙

源列表数据中,一行表示一个挂载点。每行以分号分隔,其含义请见下表

序号

示例

说 明

1

STR

类型STR/CAS/NET,这里只对STR进行说明

2

RTCM23

挂载点(Mountpoint)

3

RTCM23

identifier

4

RTCM 2.3

差分数据格式

5

1(1),3(10)

数据1(1秒输出一次);数据3(10秒输出一次)

6

2

载波相位数据 0—无 1—单频 2—双频

7

GPS

导航系统,如:GPS、GPS+GLO、EGNOS

8

SGNET

网络

9

CHN

国家

10

31

纬度

11

121

经度

12

1

是否需要发送NMEA。0—不需要 1—需要

13

1

基站类型:0—单基站 1—网络

14

SGCAN

产生此数据流的软件名称

15

None

压缩算法

16

B

访问保护 N—None B—Basic D—Digest

17

N

Y/N

18

0

比特率

19

   

上文提到,NtripCaster给NtripClient发送差分数据时分两种情况:

1、直接转发NtripSource产生的差分数据。在这种情况下,NtripClient只要指定挂载点即可;

2、通过解算多个NtripSource的差分数据,为NtripClient产生一个虚拟的基准站。在这种情况下,NtripClient不仅要指定挂载点,还要发送自身的坐标给NtripCaster,NtripCaster根据这个坐标才能产生虚拟基准站。

NtripClient给NtripCaster发送自身坐标,用到的就是NMEA里的GGA数据。上表的第12个数据说明了是否需要给NtripCaster发送GGA数据,0表示不需要,1表示需要。

4.2 获取差分数据

NtripClient获取差分数据的过程如下:

1、与NtripCaster建立TCP连接;

2、给NtripCaster发送如下命令

GET /RTCM23 HTTP/1.0↙

User-Agent: NTRIP GNSSInternetRadio/1.4.10↙

Accept: */*↙

Connection: close↙

Authorization: Basic VXNlcjpQd2Q=↙

上面的RTCM23是挂载点名称。

VXNlcjpQd2Q=是用户名、密码的Base64编码,解码后就是User:Pwd。也就是说用户名为User、密码为Pwd,它们之间以冒号分隔。

3、NtripCaster的回复

如果用户名、密码、挂载点均有效,将返回如下数据:

ICY 200 OK↙

Server: Trimble-iGate/1.0↙

Date: Wed, 18 May 2016 07:20:55 中国标准时间↙

200 OK 表示一切正常。注意:有的服务器只返回200 OK,其余数据行不返回;有的服务器返回的200 OK后面没有回车、换行。

如果用户名、密码、挂载点无效,将返回如下数据:

HTTP/1.0 401 Unauthorized↙

4、给NtripCaster发送GGA数据

GGA数据的示例如下

$GPGGA,230331,3115.27393,N,12133.89226,E,1,09,1.0,19.31,M,1,M,,*7F↙

注意:

1)如上文所述,有的挂载点需要发送GGA数据,有的挂载点不需要发送GGA数据;

2)UTC时刻格式必须为hhmmss,如:80331是不行的,必须改为080331;

3)校验码必须正确。

5、NtripCaster收到GGA数据后,将给NtripClient发送差分数据。

Ntrip协议简介(转)的更多相关文章

  1. Fiddler--一、HTTP协议简介

    在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...

  2. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介   什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...

  3. JavaWeb:Web与HTTP协议简介

    JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ...

  4. CC2540开发板学习笔记(九)—— BLE协议简介

    一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...

  5. HTTP 协议简介

    HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议  一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...

  6. OAUTH协议简介

    OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...

  7. GRE 协议简介

    1. 协议简介    gre(generic routing encapsulation,通用路由封装)协议是对某些网络层协议(如ip 和ipx)的数据报进行封装,使这些被封装的数据报能够在另一个网络 ...

  8. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

  9. Tsung MQTT协议简介及MQTT xml文档配置介绍

    MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...

随机推荐

  1. CPU温度的实现

    CPU温度需要安装的模块:apt-get install lm-sensors   然后再安装:pip install sensors.py 代码如下: #coding=utf-8import sen ...

  2. placeholder是H5的一个新属性,但是在IE9以下是不支持的

    $(function() { // 如果不支持placeholder,用jQuery来完成 if(!isSupportPlaceholder()) { // 遍历所有input对象, 除了密码框 $( ...

  3. webSocket的 原理 及 实现

    websocket协议是基于Tcp的一种新的网络协议,它实现了客户端与服务器的双向通行,并允许服务端主动发送信息给客户端.WebSocket是html5中的协议. Http协议与WebSocket协议 ...

  4. Android大作业

    1.项目成员 邓乾尧 学号:1600802005 班级:161  博客:http://www.cnblogs.com/2575590018dqy/ 韦家城 学号:1600802026 班级:161  ...

  5. 增长java中数组的长度

    package month_201711; import java.util.Arrays;/** * 数组长度+1 * @author watchfree * */public class Main ...

  6. 搭建QT环境

    开始使用QT时,环境配置好了,以后才不会有这方面的麻烦,所以第一步,把自己的工作环境搭建好! 下面是我的环境搭建过程,留个记录,也为了后来者能少走一些弯路. 注:本人的系统是WIN7x64位的,其他系 ...

  7. jQuery-4.动画篇---动画基础隐藏和显示

    jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的st ...

  8. 【leetcode】461. Hamming Distance

    problem 461. Hamming Distance solution1: 根据题意,所求汉明距离指的是两个数字的二进制对应位不同的个数.对应位异或操作为1的累积和. class Solutio ...

  9. 通用Mapper的各个方法描述,参考官方

    下面是通用Mapper的各个方法描述,主要还是看官方的描述https://mapperhelper.github.io/all/. 基础接口 Select 接口:SelectMapper<T&g ...

  10. 实现react路由动态加载的组件

    import React, { Component } from 'react'; import Loading from '../../base/nc_Loading'; /* * date: 20 ...