SIP URI - 小蘿蔔工作室Little Robot Studio
文章推薦指數: 80 %
SIP URI. SIP 最基本的URI scheme 是sip:,可加密升級為sips: 使用TLS,類似email 格式,用在SIP 請求行及信頭值等: sip:user:password@host:port ...
2021年12月12日星期日
SIPURI
SIP最基本的URIscheme是sip:,可加密升級為sips:使用TLS,類似email格式,用在SIP請求行及信頭值等:
sip:user:password@host:port;uri-parameter?header
其中只有host是必要的。
整個可拆成四個部份:
user[:password]@:也就是userinfo,有「@」表示有user,是在host的特定資源。
password是user的密碼,但有安全疑慮不建議使用。
user可以是電話號碼,可用uri參數user=phone特別標示。
host[:port]:host可以是網域名稱或數字IP網址,可包含port。
;uri-parameter:可有多個,每個以「;」開始,格式是名稱=值,名稱不能重複。
?header:「?」表示有
header,每個用「&」格開。
ABNF格式:
SIP-URI="sip:"[userinfo]hostporturi-parameters[headers]
SIPS-URI="sips:"[userinfo]hostporturi-parameters[headers]
用戶資訊分大小寫,可用user或telephone-subscriber。
userinfo=(user/telephone-subscriber)[":"password]"@"
user=1*(unreserved/escaped/user-unreserved)
user-unreserved="&"/"="/"+"/"$"/","/";"/"?"/"/"
user大多字元都可以使用,即使「,」「;」「?」也可以,只要@前都是用戶資訊,所以不能使用@,「:」表示有密碼也不行,可用「%跳脫」。
password=*(unreserved/escaped/
"&"/"="/"+"/"$"/",")
密碼也大多字元都可以使用,只比user少了「;」「?」和「/」。
telephone-subscriber來自是telURI的整個telephone-subscriber,用來表示電話號碼,可視為user的特例,可用uri參數user=phone明確表示是telephone-subscriber。
telephone-subscriber可能包括「;」開頭的參數,「;」在user是合法的,和hostport之後的uri參數是不同的。
,但在telURI,telephone-subscriber是不分大小寫的,且參數不同順序是相同的,轉換成SIP/SIPSURI需換成小寫、參數除了isub先排以外要排序,這樣辨別相同URI才會一致。
例如:
tel:+358-555-1234567;tsp=a.b;phone-context=5
變成
sip:+358-555-1234567;phone-context=5;[email protected];user=phone
hostport可以是網域名稱或IP網址,可包含port。
hostport=host[":"port]
host=hostname/IPv4address/IPv6reference
hostname=*(domainlabel".")toplabel["."]
domainlabel=alphanum/alphanum*(alphanum/"-")alphanum
toplabel=ALPHA/ALPHA*(alphanum/"-")alphanum
IPv4address=1*3DIGIT"."1*3DIGIT"."1*3DIGIT"."1*3DIGIT
IPv6reference="["IPv6address"]"
IPv6address=hexpart[":"IPv4address]
hexpart=hexseq/hexseq"::"[hexseq]/"::"[hexseq]
hexseq=hex4*(":"hex4)
hex4=1*4HEXDIG
port=1*DIGIT
URI參數
uri-parameters=*(";"uri-parameter)
headers="?"header*("&"header)
URI參數和信頭參數是不同的東西。
整個URI可作為addr-spec,可用到「,」、「?」、和「;」,但為了跟信頭參數的「;」區別,整個URI需要用<>包起來成為name-addr。
URI參數,有transport、maddr、ttl、user、method、lr等:
uri-parameter=transport-param/user-param/method-param
/ttl-param/maddr-param/lr-param/other-param
transport-param="transport="
("udp"/"tcp"/"sctp"/"tls"
/other-transport)
other-transport=token
user-param="user="("phone"/"ip"/other-user)
other-user=token
method-param="method="Method
ttl-param="ttl="ttl
maddr-param="maddr="host
lr-param="lr"
other-param=pname["="pvalue]
pname=1*paramchar
pvalue=1*paramchar
paramchar=param-unreserved/unreserved/escaped
param-unreserved="["/"]"/"/"/":"/"&"/"+"/"$"
header格式:
header= hname"="hvalue
hname= 1*(hnv-unreserved/unreserved/escaped)
hvalue= *(hnv-unreserved/unreserved/escaped)
hnv-unreserved= "["/"]"/"/"/"?"/":"/"+"/"$"
其它schemeURI,可以是網路路徑、絕對路徑等。
absoluteURI=scheme":"(hier-part/opaque-part)
scheme=ALPHA*(ALPHA/DIGIT/"+"/"-"/".")
hier-part=(net-path/abs-path)["?"query]
net-path="//"authority[abs-path]
authority=srvr/reg-name
srvr=[[userinfo"@"]hostport]
reg-name=1*(unreserved/escaped/"$"/","
/";"/":"/"@"/"&"/"="/"+")
query=*uric
abs-path="/"path-segments
opaque-part=uric-no-slash*uric
uric=reserved/unreserved/escaped
uric-no-slash=unreserved/escaped/";"/"?"/":"/"@"
/"&"/"="/"+"/"$"/","
path-segments=segment*("/"segment)
segment=*pchar*(";"*pchar)
pchar=unreserved/escaped/
":"/"@"/"&"/"="/"+"/"$"/","
參考
RFC3261§19.1
SIP/SIPSURLfollowRFC3986guideline
張貼者:
ijon
於
上午8:02
以電子郵件傳送這篇文章BlogThis!分享至Twitter分享至Facebook分享到Pinterest
標籤:
SIP
沒有留言:
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言(Atom)
標籤
心法
手機
音
電
電腦
電話
圖
影
翻譯
Arduino
asm
Asterisk
BBB
blackfin
C
coLinux
Desktop
Device
DSP
Embedded
Firefox
git
ISDN
kamailio
Kernel
Lego
Linux
Linux-Kernel
Linux-Kernel-Network
Linux-Network
Linux-System
lua
LXDE
MIPS
Network
NXT
NXT-G
OpenWrt
Programming
Protocol
ramips
Raspberry-Pi
Shell
SIP
SQLite
ssh
svn
System
TOC
Tools
Ubuntu
USB
vim
VirtualBox
Web
Windows
Wireless
x86
網頁
首頁
主題
熱門文章
PrecisionTimeProtocol
精確時間協定(PrecisionTimeProtocol,PTP)透過網路封包同步絕對時間、頻率、和相位,達到毫秒級精確度。
版本IEEE1588-2002(PTPv1):未廣泛採用。
IEEE1588-2008(PTPv2):沒向前相容。
有p...
IPMulticast
有些應用需要進行一對多或多對多的封包傳送,例如網路廣播電台、網路電視廣播。
如果封包使用unicast單點傳送的方式,傳送端需要先知道所有傳送的對象,一個一個傳送,對傳送端負擔較大,也需要很多倍的網路頻寬。
封包的broadcast廣播通常會侷限在本地區域網路內,如果開放到網...
ARPandGratuitousARP
Ethernet是靠MAC位址傳送封包,傳送IP封包給對方IP位址,還需要知道對方MAC位址才能傳送。
ARP(AddressResolutionProtocol)就是用來詢問對方MAC位址的協定,包括ARPrequest跟ARPrep...
RFC5424SyslogMessageFormat
廣為使用的syslog來自BSD,訊息格式並沒有標準化,共通點只有都是以「」開始。
RFC3164只是說明觀察到的格式,認定送到syslogUDPport(514)的封包都是syslog訊息。
RFC5424用ANBF...
Ethernet封包格式與長度
←84-1538octets→←72-1526octets→Preamble10101010Start-of-Frame-Delimiter10101011EthernetFrameInterframegap7octets1...
FSKCIDFormat
CallerID(calleridentification,CID)有多種翻譯或別名:來電顯示、來電號碼顯示、CLID(CallerLineIdentityDisplay),CLI(callinglineidentification)、callingn...
OpenWrtprocd
OpenWrt使用procd取代傳統Linux使用的init及udev。
procd原始碼除了套件procd外,還包括套件procd-ujail、procd-seccomp、procd-nand、procd-nand-firstboot。
procd...
JTAG
JTAG(JointTestActionGroup)是一個在1985年成立的電子工業協會,致力於發展產品製造後如何驗證設計及測試印刷電路板接線的方法。
在1990年結果寫成IEEEStandard1149.1-1990,標題是「StandardTestA...
gitdescribe
用最近的tag及其間隔的送交數目來描述一個送交,格式是
前面的g代表git,用來區別SCM。
指令格式...
Linuxdevicenumber
devicenumber由majornumber和minornumber組成[註1]。
major號碼識別使用的驅動程式,例如/dev/null和/dev/zero使用driver1、virtualconsoles和serialter...
網誌存檔
►
2022
(22)
►
五月
(13)
►
三月
(5)
►
二月
(3)
►
一月
(1)
▼
2021
(67)
▼
十二月
(3)
telURI
SIPURI
WindowsSubsystemforLinux
►
十一月
(3)
►
十月
(5)
►
九月
(4)
►
八月
(4)
►
七月
(7)
►
六月
(4)
►
五月
(3)
►
四月
(1)
►
三月
(10)
►
二月
(1)
►
一月
(22)
►
2020
(66)
►
十二月
(8)
►
十一月
(15)
►
十月
(8)
►
九月
(2)
►
八月
(4)
►
七月
(4)
►
六月
(8)
►
五月
(3)
►
四月
(4)
►
三月
(9)
►
一月
(1)
►
2019
(53)
►
十二月
(3)
►
十一月
(10)
►
十月
(10)
►
九月
(7)
►
八月
(2)
►
七月
(2)
►
六月
(5)
►
五月
(1)
►
四月
(1)
►
三月
(3)
►
二月
(5)
►
一月
(4)
►
2018
(35)
►
十二月
(4)
►
十一月
(4)
►
十月
(2)
►
九月
(2)
►
八月
(8)
►
七月
(10)
►
六月
(1)
►
四月
(1)
►
三月
(2)
►
二月
(1)
►
2017
(14)
►
十一月
(3)
►
十月
(6)
►
九月
(2)
►
八月
(3)
►
2016
(14)
►
九月
(2)
►
八月
(2)
►
七月
(2)
►
二月
(5)
►
一月
(3)
►
2015
(38)
►
十二月
(4)
►
十一月
(3)
►
九月
(4)
►
八月
(8)
►
四月
(3)
►
二月
(12)
►
一月
(4)
►
2014
(71)
►
十二月
(5)
►
十一月
(6)
►
十月
(1)
►
九月
(16)
►
八月
(3)
►
七月
(7)
►
六月
(7)
►
五月
(11)
►
四月
(6)
►
三月
(1)
►
二月
(2)
►
一月
(6)
►
2013
(60)
►
十二月
(5)
►
十一月
(19)
►
十月
(3)
►
八月
(13)
►
七月
(6)
►
三月
(1)
►
二月
(12)
►
一月
(1)
►
2012
(31)
►
十二月
(1)
►
十一月
(14)
►
十月
(4)
►
九月
(3)
►
八月
(3)
►
四月
(2)
►
三月
(2)
►
一月
(2)
►
2011
(17)
►
十二月
(5)
►
十月
(1)
►
二月
(2)
►
一月
(9)
►
2010
(75)
►
十二月
(4)
►
十一月
(5)
►
十月
(13)
►
九月
(1)
►
八月
(4)
►
七月
(2)
►
六月
(11)
►
五月
(5)
►
四月
(12)
►
三月
(7)
►
二月
(10)
►
一月
(1)
►
2009
(23)
►
十二月
(5)
►
十一月
(3)
►
十月
(4)
►
九月
(1)
►
八月
(5)
►
七月
(5)
►
2008
(2)
►
七月
(1)
►
二月
(1)
►
2007
(19)
►
十月
(1)
►
九月
(1)
►
八月
(2)
►
七月
(1)
►
六月
(2)
►
五月
(1)
►
三月
(3)
►
二月
(7)
►
一月
(1)
►
2006
(1)
►
十二月
(1)
延伸文章資訊
- 1什么是网络电话的SIP-URI?
SIP URI是通过SIP呼叫他人的SIP地址方案。换句话说,一个SIP URI就是一个用户的SIP电话号码。SIP URI如同电子邮件地址一样,按以下格式书写:. SIP URI = sip:...
- 2What is a SIP URI? - GetVoIP
A SIP URI is the SIP addressing schema, or identifying string of characters, to call another pers...
- 3SIP URI scheme - Wikipedia
The SIP URI scheme is a Uniform Resource Identifier (URI) scheme for the Session Initiation Proto...
- 4什麽是SIP-URI? - IP PBX 電話總機
SIP URI是通過SIP呼叫他人的SIP地址方案。換句話說,一個SIP URI就是一個用戶的SIP電話號碼。SIP URI如同電子郵件位址一樣,按以下格式書寫:. SIP URI = sip:...
- 5SIP URI - 小蘿蔔工作室Little Robot Studio
SIP URI. SIP 最基本的URI scheme 是sip:,可加密升級為sips: 使用TLS,類似email 格式,用在SIP 請求行及信頭值等: sip:user:password@...