在學習pjsip的過程中,發現只是單單的閱讀英文官方文檔,對於里邊概念的理解還是不夠透徹,並且苦於pjsip沒有發現全一點的中文版本,所以想盡自己所能為建設和諧社會而貢獻一份力量,文中定會有所疏漏,希望各位看客能夠不吝賜教。
2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment簡介
3:pjsip教程(三)之ICE stream transport的使用
原文地址:http://www.pjsip.org/docs/latest/pjnath/docs/html/index.htm
PJNATH - Open Source ICE, STUN, and TURN Library
PJNATH (PJSIP NAT Helper)是一個開源的並且是使用標准協議(STUN,TURN,ICE)提供NAT設備穿越功能的庫.
Background
在現今的網絡中網絡地址轉換技術/設備(NAT)很常見,這種技術允許多台主機共享同一個公網地址從而接入網絡,其主要目的就是為了緩解IPv4地址的枯竭。 這種技術在普通的服務器/客戶端模式下並不存在問題,因為請求總是由客戶端發起,並且客戶端也不需要維持長時間的維持與服務器的連接。但是NAT技術最大的問題就是使得點對點通信不能進行,比如VoIP.
Introduction to PJNATH
PJNATH庫包含了NAT穿越的標准實現,它可以獨自應用或者與PJSUA-LIB共同使用,PJSUA-LIB庫將PJSIP, PJMEDIA, PJNATH很好的集成在一起,使用方便。.
PJNATH 具有以下特征:
- STUNbis實現
該實現遵照RFC 5389.它既提供了現成的STUN網絡接口,又提供了基於TURN和ICE的實現更高層次STUN的框架。
- NAT 類型探測
探測通信兩端的NAT設備類型,該實現依據 RFC 3489. 然而為了支持ICE,協助NAT穿越的NAT類型的探測已經不被推薦了,但是在故障排除的時候還是有用的,因此提供了NAT類型探測的功能.
- TURN實現
TURN 是使用中轉服務器進行中繼通信的協議,它聯合ICE提供了盡可能的高效的通信路徑。它的實現符合 draft-ietf-behave-turn-14 草案.
- ICE實現
ICE 是發現待通信兩端一條或多條可直接通信的路徑的協議。它的實現符合draft-ietf-mmusic-ice-19.txt 草案
在將來,我們會實現更多的協議(比如UPnP IGD、SOCKS5).
Library Organization
提供的主要組件如下:
- STUN: Session Traversal Utilities for NAT
- TURN: Traversal Using Relays around NAT
- ICE: Interactive Connectivity Establishment
- NAT Classification/Detection Tool
除了 NAT Classification/Detection Tool, 每個組件都進一步划分為兩個部分:
- 傳輸對象
傳輸對象是session對象加上指定的 傳輸/套接字(transport/sockets) 的實現,它給應用程序提供一個直接可以使用的對象。比如,STUN transport, TURN transport以及ICE stream transport
傳輸無關/session 層
session對象(比如 STUN session, TURN session, ICE session)是維護通信協議中session的核心對象,它是與傳輸無關的(意思是說它自己沒有專門用於傳輸數據的socket,它只有發送和接受數據的接口,至於發送和接收數據時用到的具體的協議它是不關心的)。這樣,不管傳輸層使用的什么協議,開發者都可以重用這個對象,比如使用UDP, TCP或者TLS或者是開發者自己實現的其他某種協議。
轉載請注明:
名稱:中文翻譯:pjsip教程(一)之PJNATH簡介
作者:大雪先生