PJNATH介绍 -- 开源的用于NAT穿透的ICE, STUN和TURN
原文地址:http://blog.pjsip.org/2007/04/06/introducing-pjnath-open-source-ice-stun-and-turn/
ICE是什么?
对于那些不熟悉ICE的人而言,ICE可能是一种最全面的用于穿透NAT和多媒体通信的方法。它提供了一种找到两个终端之间最好路径的方法,它还解决了NAT所带来的各种各样的问题,比如两个终端处在同一个NAT后面(and no hairpin is available),两个终端都处在对称NAT后面(在这种情况下,将使用一个中继器)。详情请参看draft-ietf-mmusic-ice-15.txt。
这是个了不起的协议!首先,它不靠自身来运行,ICE使用STUN(Session Traversal Utlities for NAT, 其最新的草案是draft-ietf-behave-rfc3489bis-06)协议来做连通性检测。对于转播,它使用TURN(Obtaining Relay Addresses from Simple Traversal Underneath NAT,其最新的草案是draft-ietf-behave-turn-03)来做同样的检测。这三者加起来,总共有103+61+44=208页协议文档。我想这就为什么是"Simple"这个词被从STUN这个首字母缩略语中移除的原因。
总之,我相信现在是支持这个协议的好时机。ICE一周前通过了WGLC-ed (Work Group Last Call),而且STUN草案也日趋完善(TURN稍微落后一点点)。实际上,我觉得时机是完美的,因为在它们通过RFC-ed (this is not to say that we’re expert in any kind!)之前,我们可以帮助发现这些文档中的漏洞。我们早点把这些协议实现出来并发现其中的问题,协议也可以及时做相应的改动。
PJNATH – NAT Traversal Helper Library
PJNATH – Open Source NAT Traversal Helper supporting STUN, TURN, and ICE(点击该链接可以转到相应的文档)
PJNATH是PJ项目中一个新的库,它与PJLIB,PJSIP,PJMEDIA这些库处于同一层次。它由如下部分组成:
- 一个通用的STUN库,该库支持draft-ietf-behave-rfc3489bis-06,draft-ietf-behave-turn-03, anddraft-ietf-mmusic-ice-15.txt。
- 一个ICE实现,包括两部分:传输独立的ICE会话和ICE流传输(同一些套接字联系在一起的ICE)。
将来,我们可能把诸如UPnP或SOCKS这样的NAT穿透协议也加进来。
为了支持ICE,PJMEDIA和PJSUA这两个库需要升级:
- 在PJMEDIA中,我们添加了一个新的媒体传输,叫做pjmedia_ice_trans。
- 在PJSUA库中,STUN设置已经被从传输设置移动全局设置,并且在媒体设置中添加了使能ICE的设置选项。
它可以工作了吗?
我想,是的。
我试着在同一个NAT之后运行两个pjsua,本地地址对被使用。我试着在不同的NAT之后运行两个pjsua,公共地址对被使用。所以看起来它是可以工作了。
此外,从上周开始,我一直在做测试,发现并解决了一些bugs。而且在测试过程中,我发现协商很快就完成了,对于不同的ADSL线上的两个终端,这个时间大约是100ms,即便是SDP应答被代理延迟(ICE在SDP应答被调用者收到之前就可以开始检查)。
但是这些天测试ICE最主要的困难之一是没有其它可以免费获取的ICE实现,所以虽然PJNATH中的实现看起来可以工作,并且它严格遵守ICE-15,但在它与其它的实现进行对话之前我们还是不能确定它的兼容性到底怎样。
PJNATH介绍 -- 开源的用于NAT穿透的ICE, STUN和TURN的更多相关文章
- NAT穿透解决方案介绍
最近公司要实现在各种网络环境下面的多屏互动(机顶盒.android phone.iphone及PC端)的需求:由于IP地址资源有限的原因,目前我们使用的各种终端设备都位于局域网后面也就是多台设备共享同 ...
- NAT穿透解决方案介绍(转)--Java ICE实现
转:http://www.cnblogs.com/javaminer/p/3575282.html 最近公司要实现在各种网络环境下面的多屏互动(机顶盒.android phone.iphone及PC端 ...
- CWMP开源代码研究——stun的NAT穿透
原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 参考: http://www.cnblogs.com/myblesh/p/6259765.htm ...
- 解决外网与内网或内网之间的通信,NAT穿透
在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行.问题就在于NAT.首先介绍下NAT. NAT的作用NAT(Network Address Translato ...
- NAT穿透的详解及分析
一.什么是NAT?为什么要使用NAT?NAT是将私有地址转换为合法IP地址的技术,通俗的讲就是将内网与内网通信时怎么将内网私有IP地址转换为可在网络中传播的合法IP地址.NAT的出现完美地解决了lP地 ...
- NAT穿透的详细讲解及分析.RP
原创出处:https://bbs.pediy.com/thread-131961.htm 转载来源: https://blog.csdn.net/g_brightboy/article/details ...
- 《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
c#实现P2P文件分享与传输系统 二.设计 - 续(NAT穿透) 首先要抱歉,因为这些日子较忙,没有写文章,这个系列拖了很久,现在开始继续. 上一篇文章介绍了p2p系统Tracker Server和 ...
- NAT穿透的详细讲解及分析
原文地址:http://bbs.pediy.com/thread-131961.htm 一.什么是NAT?为什么要使用NAT?NAT是将私有地址转换为合法IP地址的技术,通俗的讲就是将内网与内网通信时 ...
- 关于NAT穿透的一些理解
前些天在知乎回答了一个智能家居远程控制方面的问题,感觉自己对无公网IP地址环境下的穿透问题有些了解.昨天同事拿来一个网络摄像头,安装在ADSL路由器上网的环境下,可以远程查看视频,效果还挺不错,问我厂 ...
随机推荐
- CountDownTimer,0,0
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s ...
- BZOJ:2958 序列染色 DP
bzoj2958 序列染色 题目传送门 Description 给出一个长度为N由B.W.X三种字符组成的字符串S,你需要把每一个X染成B或W中的一个. 对于给出的K,问有多少种染色方式使得存在整数a ...
- 使用CNN做电影评论的负面检测——本质上感觉和ngram或者LSTM同,因为CNN里图像检测卷积一般是3x3,而文本分类的话是直接是一维的3、4、5
代码如下: from __future__ import division, print_function, absolute_import import tensorflow as tf impor ...
- poj--3678--Katu Puzzle(2-sat 建模)
Katu Puzzle Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Submit S ...
- java类List及List遍历器的代码
从某个程序中截取的一个示例代码: List<User> users = userDao.selectAll(); //mybatis java orm Iterator<User&g ...
- xbox 相关
https://live.xbox.com/zh-CN/avatareditor xboxgames://
- javascript中封装获取样式属性值的兼容方法
function getStyle(obj, attr) { if (window.getComputedStyle) { return window.getComputedStyle(obj, nu ...
- DDD中 与Dto搭配的AutoMapper插件,摘自《NET企业级应用架构设计》
AutoMapper插件 实现了 DTO与Model的互相映射.
- HTML中使用 js 添加 data-toggle
情况:<li class="active"><a href="#server1" data-toggle="tab"> ...
- CSS布局总结(二)
前言:今天实训课依旧很水,继续总结,今天主要补了一下布局的知识.响应式的作业还没做完... 一.两列布局 html部分 <div class="parent"> < ...