P2P通讯方式
概述
实现p2p通讯我们提供两种方式,这两种方式分别是通过客户端直接互通和p2p映射;
无论哪一种,首先设备两端都得部署好fastnat客户端,NAT类型不能是对称类型NAT(Symmetric),否则还是走服务器中继.
方法一、客户端直接互通
您部署的两客户端设备,我们抽象访问层接口,使用P2P尽量达到直接互访。通过管理界面中展示的设备IP直接访问
提示:这是最简单的,就不用往下看第二种了.

方法二、P2P映射方式
1.首先在需要被访问的设备机上,添加一个P2P映射如下图

(被访问方:添加P2P映射)
2.在访问方的设备上添加一个P2P


(访问方:添加P2P连接)
3.进行访问
现在您可以通过访问本地127.0.0.1的9999访问对方的设备了,高速且不经过fastnat的官方服务器。
关于NAT的补充阅读
当联机的双方NAT类型有一方为Cone NAT时(以下前三种)才有机会建立P2P连接,如果双方都是Symmetric NAT,必然无法成功建立P2P连接
几种常见的NAT类型:
- Full Cone
- Restricted Cone
- Port Restricted Cone
- Symmetric NAT
结合上面的P2P条件,当两台设备所处网络的NAT类型均为 Symmetric NAT,所以无法建立P2P连接,只能通过服务器中转通信
基本总结如下:
- 双方中只要有一方是Full Cone,可以P2P直连;
- 双方都是Restricted Cone或Port Restricted Cone,这种情况可以打洞,通过服务器握手以后,双方的数据不再经过中继服务器;
- 一方为Restricted Cone,另一方为Symmetric NAT,可以打洞,通过N2N服务器握手以后,双方的数据不再经过服务端;
- 一方为端口Port Restricted Cone,另一方为Symmetric NAT,这种情况无法打洞,数据要走服务器中转;
- 双方都为Symmetric NAT,这种情况也是无法打洞的,数据要走服务器中转;
P2P通讯方式的更多相关文章
- 【工业串口和网络软件通讯平台(SuperIO)教程】九.重写通讯接口函数,实现特殊通讯方式
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 统一的IO接口 开发一套设备驱动同时具备串口和网络通讯能力,通讯接口在逻辑上是统一的,在此基础 ...
- Angular1.x组件通讯方式总结
Angular1开发模式 这里需要将Angular1分为Angular1.5之前和Angular1.5两个不同的阶段来讲,两者虽然同属Angular1,但是在开发模式上还是有较大区别的.在Angula ...
- android ipc通信机制之之三,进程通讯方式。
IPC通讯方式的优缺点: IPC通讯方式的对比 名称 优点 缺点 适用场景 Bundle 简单易用 只能传输Bundle支持的数据类型 四大组件的进程通信 文件共享 简单易用 不适合高并发场景,并无法 ...
- Retrofit的通讯方式示例
Retrofit有两种通讯方式,同步和异步 异步方式: APIService req; req = RetrofitManager.getInstance().createReq(APIService ...
- [Linux]PHP-FPM与NGINX的两种通讯方式
一.通过监听TCP端口通讯 php-fpm.d/www.conf ; The address on which to accept FastCGI requests. ; Valid syntaxes ...
- 前后端常用通讯方式-- ajax 、websocket
一.前后端常用通讯方式 1. ajax 浏览器发起请求,服务器返回数据,服务器不能主动返回数据,要实现实时数据交互只能是ajax轮询(让浏览器隔个几秒就发送一次请求,然后更新客户端显示.这种方式实际 ...
- Angular1组件通讯方式总结
这里需要将Angular1分为Angular1.5之前和Angular1.5两个不同的阶段来讲,两者虽然同属Angular1,但是在开发模式上还是有较大区别的.在Angular1.4及以前,主要是基于 ...
- Tuxedo 通讯方式解析
本节根据tuxedo自带samples的例子,让其运行起来.并通过这个例子,深入的理解tuxedo的通讯方式. 进入tuxedo的安装目录,samples目录下自带了一些例子 [root@localh ...
- Linux 进程间通讯方式 pipe()函数 (转载)
转自:http://blog.csdn.net/ta893115871/article/details/7478779 Linux 进程间通讯方式有以下几种: 1->管道(pipe)和有名管道( ...
- Android 进程间通讯方式
Android 进程间通讯方式 1.通过单向数据管道传递数据 管道(使用PipedWriter/ 创建PipedReader)是java.io包的一部分.也就是说,它们是一般的Java功能,而不是An ...
随机推荐
- css : object-fit 兼容 ie 的解决方案
通过 github 搜索 object-fit ie , 借鉴大佬兼容 ie 的经验. 下载解压到文件夹 , 打开测试目录 , 查看 demo 使用 ie 打开demo , 查看显示效果 : 代码 ...
- 【Kafka系列】(二)Kafka的基本使用
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 文章更新计划 系列文章地址 Kafka 线上集群部署方案怎么做 ...
- [转帖]jmeter正则表达式提取器获取数组数据-02篇
接上篇,当我们正则表达式匹配到多个值以后,入下图所示,匹配到21个结果,如果我们想一次拿到这一组数据怎么办呢 打开正则表达式提取器页面,匹配数字填入-1即可 通过调试取样器就可以看到匹配到已经匹配到多 ...
- Windows 和 linux 下面 Redis 性能比较
Windows 和 linux 下面 Redis 性能比较 问题来源 公司里面有一些环境还是使用Windows来跑 对应的. Redis和nginx 也是跑在Windows上面 但是微软官网自从 3. ...
- [转帖]Linux设备与内存单位-扇区、块、段、页(sector、block、segment、page)
每个概念是对不同的对象而言的,但它们有一定的联系 这些概念的分析背景是Linux下的内存页和磁盘结构 扇区 是硬盘等存储设备传送单位,大小一般为512B 块 是VFS和文件系统的传送单位(所以相关设备 ...
- [转帖]JAVA之G1垃圾回收器
https://www.cnblogs.com/boanxin/p/12292331.html 概述 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+Us ...
- qperf 简要总结 - 延迟与带宽信息
总结 同一个虚拟机: 延迟: 12us 带宽: 6GB/S 同一个物理机上面的虚拟机: 延迟: 50us-100us 带宽: 1.2GB/S 同一个交换机上面的虚拟机: 延迟: 60us 带宽: 12 ...
- echarts的初始化和销毁dispose
容器节点被销毁以及被重建时 假设页面中存在多个标签页, 每个标签页都包含一些图表. 当选中一个标签页的时候,其他标签页的内容在 DOM 中被移除了. 这样,当用户再选中这些标签页的时候,就会发现图表& ...
- Vue3中ref和toRef的区别
1. ref是复制,视图会更新 如果利用ref将某一个对象中的某一个属性值变成响应式数据 我们修改响应式数据是不会影响原始数据的; 同时视图会跟新. ref就是复制 复制是不会影响原始数据的 < ...
- Go 泛型发展史与基本介绍
Go 泛型发展史与基本介绍 Go 1.18版本增加了对泛型的支持,泛型也是自 Go 语言开源以来所做的最大改变. 目录 Go 泛型发展史与基本介绍 一.为什么要加入泛型? 二.什么是泛型 三.泛型的来 ...