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就是将这些所有的可能性都罗列好,会在这其中找到一条最优的路径,将数据传送过去。

 

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

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

(0)
上一篇 2022年7月1日 下午12:36
下一篇 2022年7月1日 下午12:36


相关推荐

  • NVL与NVL2函数

    NVL与NVL2函数NVL(EXPER1,EXPER2)表示:如果1为空则显示expre2;否则显示expres1;Eg:NVL(‘test’,’周五’)返回结果:test注意:EXPER1,EXPER2数据类型(NVL要求第二个参数类型可以转换为第一个参数类型)selectnvl(12,’a’)fromdual;报错:ORA-01722:无效数字selectnvl(12,

    2022年7月15日
    22
  • 论文DepthTrack: Unveiling the Power of RGBD Tracking阅读及代码讲解[通俗易懂]

    论文DepthTrack: Unveiling the Power of RGBD Tracking阅读及代码讲解[通俗易懂]最近终于有了一篇的顶会像样的RGBDtracking的论文了:ICCV2021:DepthTrack:UnveilingthePowerofRGBDTrackingGithub:https://github.com/xiaozai/DeT数据集简介这边看完就随手记录一下关键的部分:主要是创建了个大规模的RGBDtrackingbenchmark:DepthTrack(有数据集之后才能促进算法的研究),当然随之也搞了个baselinetracker—DeT,这也是现在搞d

    2025年11月13日
    4
  • 原生HTML+CSS+JS制作自己的导航主页(前端大作业,源码+步骤详解)

    原生HTML+CSS+JS制作自己的导航主页(前端大作业,源码+步骤详解)文章目录前言插入背景一、头部1.导航栏2.优化导航栏3时间前言插入背景首先设置我们的背景。在body中插入背景即可。index.html<!doctypehtml><htmllang=”en”><head><metacharset=”UTF-8″><metaname=”Designer”content=”LiWei”><metaname=”Description”cont

    2022年7月22日
    20
  • 俞敏洪与新东方_新东方俞敏洪现状

    俞敏洪与新东方_新东方俞敏洪现状俞敏洪与新东方“江阴模式”助俞敏洪考上北大  俞敏洪,1962年出生于江苏省江阴。  俞敏洪出生在一个普通的农村家庭里,父亲是一名木匠,母亲则是当地生产队的妇女队长,她有与这一职位对应果敢的作风。俞敏洪还有一个姐姐,是一名赤脚医生。作为一个农家孩子,俞敏洪回忆:我从小就在农田里干活,插秧、割稻、撒猪粪,样样都干……  母亲希望他的人生能有某种意义上的改变,希望…

    2025年11月6日
    5
  • linux 大总结[通俗易懂]

    linux 大总结[通俗易懂]1.Linux介绍Linux内核最初只是由芬兰人林纳斯·托瓦兹(LinusTorvalds)在赫尔辛基大学上学时出于个人爱好而编写的。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。目前市面上较

    2022年6月7日
    47
  • KeyValuePair C#[通俗易懂]

    KeyValuePair C#[通俗易懂]前几天自学了keyvaluepair,在网上找到一篇很好的Blog,所以转载过来共享。转载地址:http://www.cnblogs.com/C#KeyValuePairKeyValuePairstorestwovaluestogether.Itisasinglegenericstruct.TheKeyValuePairtypeinSyste…

    2022年7月26日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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