什么是信令什么是媒体呢?有人问。
这还不简单,咔咔咔,我能讲一小时。但对于非技术人员来讲,我应该怎么解释呢?讲个故事吧。
由于我这几年比较专注做FreeSWITCH,因此,有人邀请我去北京讲课。我的家在烟台,所以要坐飞机从烟台去北京。我平常比较忙,以下是对话内容发生在客户那边的负责人和我的秘书之间:
上面的对话大家应该都很容易能理解吧。其实在上面,除了媒体和信令外,还有两个其它的概念。我们先不说,先卖个关子。
下面我们来看一个SIP通话。
Bob Alice
| |
| INVITE Alice@example.com
|-------------------->|
| 100 Trying |
|<--------------------|
| 180 Ringing |
|<--------------------|
| 200 OK |
|<--------------------|
| ACK |
|-------------------->|
| |
|<======RTP==========>|
| |
| BYE |
|<--------------------|
| 200 OK |
|-------------------->|
| |
在上面的SIP通话中。Bob给Alice打电话。
首先,Bob拿起话机拨号,Bob的话机发送INVITE消息给Alice,说Alice,咱俩说说话...
Alice的话机收到后,跟Bob的话机说,稍等 … 100 Trying
Alice的话机这时振铃,叮铃铃 … 同时,它给Bob的话机回一个消息 180 Ringing
Bob的话机收到180后,开始给Bob播放回铃音嘟嘟嘟 … 告诉Bob,再等等,Alice的话机已经振铃了
Alice听到后,接起电话,这里Alice的话机给Bob的话机发一个消息,200 OK。表示,Alice已经接听了
Bob的话机收到200 OK消息后,停止播放回铃音,这时候,Alice和Bob就可以通话了。
Alice和Bob通话的内容是通过电话线传输的,通话的内容叫媒体(Media),而电话线其实是一个传输媒介或载体,叫Transport或Carrier。
好吧,现在我们知道什么是媒体了。那么,上面罗嗦了一大堆就叫做信令。因此,如果没有信令,Alice和Bob就无法通话,可见,信令是为了通话建立服务的。它主要是通过一系列的消息,完成一个通话的建立。而这一系列的消息,就叫做信令。
当然,挂机后也要有信令(BYE)。
信令的传输是在两个话机之间发生的。这两个话机,分别代表Alice和Bob,叫做UA(User Agent),也就是叫用户代理。
那么,这些跟我们上面讲的杜老师讲课的故事有什么关系呢?
关系大着呢。我们对比一下。
我们把杜老师当作媒体。因为对方是想把杜老师请过去。而SIP通话是把话音传过去,所以话音是媒体,杜老师是媒体。
那么,之前邀请杜老师的那些聊天消息就是信令。这些信令都是为了把杜老师请过去这个目标服务的。
传输媒体的媒介或载体是什么呢?当然,是飞机。
UA是谁?就是是客户那边的负责人和我的秘书。
一切都是来源于生活。
生活如此美好,我们再深入研究下SIP信令。下面是一个典型的INVITE消息:
INVITE sip:9196@192.168.7.6 SIP/2.0
Via: SIP/2.0/UDP 192.168.7.6:48808;branch=z9hG4bK-d8754z-eb76c76409fc5100-1---d8754z-;rport
Max-Forwards: 70
Contact: <sip:1000@192.168.7.6:48808>
To: <sip:9196@192.168.7.6>
From: "1000"<sip:1000@192.168.7.6>;tag=bfdeeb5b
Call-ID: ZDQ5ZTYyMDYyNmUxOTlhYzNjNTg3NTEyOGQ4MzJiZjc
CSeq: 1 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
Content-Type: application/sdp
Supported: replaces
User-Agent: Bria 3 release 3.5.5 stamp 71243
Content-Length: 208
v=0
o=- 1465047960147349 1 IN IP4 192.168.7.6
s=Bria 3 release 3.5.5 stamp 71243
c=IN IP4 192.168.7.6
t=0 0
m=audio 59108 RTP/AVP 0 8 101
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
其中,第一行 INVITE 表示请杜老来讲课。9196
相当于杜老师的电话号码,@后面是IP地址,相当于我家或办公室的地址吧。
Via: SIP/2.0/UDP
表示信令消息是用什么承载的,除此之外还有TCP,WS(Websocket)等。可以理解为北京负责人跟我的秘书是用微信聊天还是QQ或电话沟通的。
From
一行,是说明这条消息的来源,可以理解成北京那边的号码是1000。主叫号码。
To
还是9196,杜老师的号码,被叫号码。User-Agent是说明北京那边用户代理的型号,比方男秘书还是女秘书,女性的名字等。
Content-Type
更进一步说明消息的内容,可以理解成行程安排。
从v=0
开始,是真正的行程安排。
c=IN IP4 192.168.7.6
这一行,是说明媒体要送达的IP地址,可以理解成北京首都机场。IP4可以理解成做飞机,如果是IP6就代表坐火车。
m=audio 59108 RTP/AVP 0 8 101
中的59108代表媒体要送达的端口号,可以理解成第三航站楼的某个出口,接机的人就在那里等着。
RTP/AVP
代表什么呢?头等舱或经济舱吧。
后面的0 8 101
其实约定媒体编码的类型,也是一个暗号,比方告诉说接机的人和杜老师都要拿一把雨伞(在这个特殊的日子我忽然想到了这个词,请不要多想)方便互相认识。
好吧,一个SIP信令,就能把杜老师骗到北京去了。
SIP的全称是Session Initiation Protocol,即会话初始协议。以后,邀请我讲课请用SIP :)。
本文分享自 FreeSWITCH中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!