P2P学习(三)网络传输基本知识

P2P学习(三)网络传输基本知识一:NAT(NetworkAddressTranslator)P2P技术详解(一):NAT详解——详细原理、P2P简介NAT的四种类型二:STUN(SimpleTraversalof

大家好,又见面了,我是你们的朋友全栈君。

一:NAT (Network Address Translator)

P2P技术详解(一):NAT详解——详细原理、P2P简介

NAT的四种类型

二:STUN(Simple Traversal of UDP Through NAT)

(一)简单了解

有了NAT之后,可以将内网地址转成公网地址,那两个公网之间是不是就可以通讯了呢?

那中间还是缺了一步的,他们虽然 都存在这个世界上,但是彼此并不认识,怎么办呢?那必须要有一个第三方的服务做一个介绍,这个就是STUN服务。 STUN服务说白了就是做一个中介,把各自的公网信息进行一下交换,让他们彼此进行认识,这个STUN服务也非常简单

(二)详解

P2P技术详解(四):P2P技术之STUN、TURN、ICE详解

STUN,首先在RFC3489中定义,作为一个完整的NAT穿透解决方案,英文全称是Simple Traversal of UDP Through NATs,即简单的用UDP穿透NAT

STUN是个轻量级的协议,是基于UDP的完整的穿透NAT的解决方案。它允许应用程序发现它们与公共互联网之间存在的NAT和防火墙及其他类型。它也可以让应用程序确定NAT分配给它们的公网IP地址和端口号。STUN是一种Client/Server的协议,也是一种Request/Response的协议,默认端口号是3478。 

三:TURN(Traversal Using Relays around NAT)

(一)简单了解

经过介绍认识之后,A和B这两台主机就可以建立连接了,连接一旦建立完毕就可以传输数据,那光有STUN服务他们之间是不是就一定能够创建成功这个连接呢

其实不一定,在美国有一项数据表示在进行P2P穿越的时候,有70%是可以穿越成功的,但是实际上在国内来说就很难达到这个70%的成功率,50%可能都到不了。那在现实过程中,我又要实现浏览器之间的传输,那当P2P连接不成功的情况下,如何保证音视频还能互通呢?

这就引入了TURN服务,TURN 就是在云端架设一个服务器,这个服务器就负责之间双方流媒体数据的转发,让他们进入到同一个房间里之后呢,这个TURN就会给房间里的所有人进行转发,那么对端就能收到了,A 发送信息通过TURN到了B,同样的B发送信息通过TURN发送给A。这样就在P2P连接不成功的情况下 ,它有了一条路线可以进行音视频的传输。这就是TURN服务。

(二)详解

P2P技术详解(四):P2P技术之STUN、TURN、ICE详解

TURN,在RFC5766中定义,英文全称Traversal Using Relays around NAT(TURN):Relay Extensions to Session Traversal Utilities for NAT(STUN),即使用中继穿透NAT:STUN的中继扩展

TURN与STUN

共同点:都是通过修改应用层中的私网地址达到NAT穿透的效果,

不同点:是TURN是通过两方通讯的“中间人”方式实现穿透。突破了原先STUN协议无法在两台主机不能够点对点直接连接下提供作用的限制。

如果一个主机位于NAT的后面,在某些情况下它不能够与其他主机点对点直接连接。在这些情况下,它需要使用中间网点提供的中继连接服务。TURN协议就是用来允许主机控制中继的操作并且使用中继与对端交换数据。

TURN与其他中继控制协议不同的是它能够允许一个客户端使用一个中继地址与多个对端连接TURN协议被设计为ICE的一部分,用于NAT穿越,虽然如此,它也可以在没有ICE的地方单独使用。

四:ICE (Interactive Connectivity Establishment)

ICE的全称Interactive Connectivity Establishment(互动式连接建立),由IETF的MMUSIC工作组开发出来的,它所提供的是一种框架,使各种NAT穿透技术可以实现统一。ICE跟STUN和TURN不一样,ICE不是一种协议,而是一个框架(Framework),它整合了STUN和TURN

(一)简单了解

ICE就是将上面介绍的NAT、TURN等服务打包一起做一个最优的选择。

1.那它首先尝试进行P2P,P2P在你的主机上有可能有双网卡或者是多个端口,当其中有一个端口或者某一个网卡不通的时候,它可以换其他的,如果两条都是通的时候,它选择一条更高效的,也就是说哪个网卡性能更好它会使用哪个。

2.那当P2P不通的时候它又会选择TURN服务中转,TURN也不一定能通,尤其是中国,很有可能被拦掉,那怎么办呢?那有可能选择了多个节点,有可能是在上海一个节点,在日本东京一个节点,当上海的节点不通的时候还可以 选择东京的节点,ICE就是将这些所有的可能性都罗列好,会在这其中找到一条最优的路径,将数据传送过去。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154710.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • React高阶组件实践

    React高阶组件实践前言React高阶组件,即Higher-OrderComponent,其官方解释是:Ahigher-ordercomponentisafunctionthattakesacomponentandreturnsanewcomponent.一个传入一个组件,返回另一个组件的函数,其概念与高阶函数的将函数作为参数传入类似。用代码来解释就是:const…

    2022年10月29日
  • python pandas读取csv文件_pandas将数据写入csv

    python pandas读取csv文件_pandas将数据写入csv1、首先设置pycharm三个地方改为UTF-82data=pd.read_csv(PATH+FILE_NAME,encoding=”gbk”,header=0,index_col=0)直接读入就可以了

  • 带你从零开始,快速学会 Matlab GUI

    带你从零开始,快速学会 Matlab GUI本文来自作者 木木小迷哥 在 GitChat 上分享「MatlabGUI零基础学员快速入门」,「阅读原文」查看交流实录「文末高能」编辑|洛肯Matlab广泛地应用于数学分析、计算、自动控制、系统仿真、数字信号处理、图像处理、数理统计、人工智能、通信工程和金融系统等领域。本活动针对零基础学员,结合个人经验,使Matlab新手少走弯路、快速入门(相应的代码用斜体

  • 安卓系统框架介绍(安卓常用框架)

    一、什么是Android?Android是由谷歌公司开发的一种基于Linux的开源的操作系统。——源码地址1:https://android.googlesource.com/——源码地址2:http://androidxref.com/起初专为移动设备开发的一个操作系统,如手机,平板电脑,车载系统,智能电视等。Android第一个版本2008年11月发布,至今有超过…

  • pycharm及python安装详细教程_python基础教程

    pycharm及python安装详细教程_python基础教程python下载安装图文教程-Pycharm下载安装图文教程Python及Pycharm安装图文教程,供大家参考,具体内容如下为了学习Python我今天对它进行了安装,并将Python及Pycharm安装方法进行了分享,希望可以帮助到大家注:建议大家在安装过程中不要将软件安装到系统盘中。1、Python安装1)首先需要进入Python官网下载安装包,进入后点击Downloads找到如下界面:可以根据自己的系统下载适合的安装包下载完成后直接…

  • 链接: https://pan.baidu.com/s/1-DgIQmPNwGydAYYwA_fT5w 提取码: pq9q 复制这段内容后打开百度网盘手机App,操作更方便哦「建议收藏」

    链接: https://pan.baidu.com/s/1-DgIQmPNwGydAYYwA_fT5w 提取码: pq9q 复制这段内容后打开百度网盘手机App,操作更方便哦「建议收藏」链接:https://pan.baidu.com/s/1-DgIQmPNwGydAYYwA_fT5w提取码:pq9q复制这段内容后打开百度网盘手机App,操作更方便哦@TOC欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号