📅  最后修改于: 2023-12-03 14:47:27.845000             🧑  作者: Mango
SIP(Session Initiation Protocol)是一种基于文本的通信协议,用于控制多媒体会话,如音频、视频和即时消息。本文将介绍SIP基本呼叫流程。
SIP呼叫流程是基于客户端/服务器模型的。SIP客户端发出请求消息,SIP服务器接收和分析请求消息,并发送响应消息。SIP客户端和服务器可以是不同的物理实体,它们可以是运行在不同设备上的程序。
SIP呼叫流程可以分为以下步骤:
客户端通过发送 REGISTER 消息将其用户代理(User Agent)注册到SIP服务器。
POST sip:user@example.com SIP/2.0
Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds
From: Alice <sip:alice@example.com>;tag=1928301774
To: Alice <sip:alice@example.com>
Call-ID: a84b4c76e66710
CSeq: 1 REGISTER
Contact: <sip:alice@pc33.example.com>
Max-Forwards: 70
Content-Length: 0
当用户想要发起一个呼叫时,呼叫发起人(Caller)发送一个 INVITE 消息到被叫方(Callee)的SIP地址。
INVITE sip:bob@example.com SIP/2.0
Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds
From: Alice <sip:alice@example.com>;tag=1928301774
To: Bob <sip:bob@example.com>
Call-ID: a84b4c76e66710
CSeq: 2 INVITE
Contact: <sip:alice@pc33.example.com>
Max-Forwards: 70
Content-Length: 0
被叫方收到 INVITE 请求后,发送一个 RINGING 消息表示已经收到请求并开始振铃。
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP pc18.example.com;branch=z9hG4bK123abcdef
From: Alice <sip:alice@example.com>;tag=1928301774
To: Bob <sip:bob@example.com>;tag=a6c85cf
Call-ID: a84b4c76e66710
CSeq: 2 INVITE
Contact: <sip:bob@pc18.example.com>
Content-Length: 0
接下来,被叫方确认是否接受呼叫。如果接受呼叫,被叫方会发送一个 OK 消息。
SIP/2.0 200 OK
Via: SIP/2.0/UDP pc18.example.com;branch=z9hG4bK123abcdef
From: Alice <sip:alice@example.com>;tag=1928301774
To: Bob <sip:bob@example.com>;tag=a6c85cf
Call-ID: a84b4c76e66710
CSeq: 2 INVITE
Contact: <sip:bob@pc18.example.com>
Content-Type: application/sdp
Content-Length: 147
v=0
o=bob 2808844564 2808844564 IN IP4 192.0.2.1
s=-
c=IN IP4 192.0.2.1
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
一旦被叫方确认呼叫,一个会话就会被建立并进行双方通信。
当呼叫结束时,任何一方都可以发送 BYE 消息并将其发送给对方。
BYE sip:bob@example.com SIP/2.0
Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds
From: Alice <sip:alice@example.com>;tag=1928301774
To: Bob <sip:bob@example.com>;tag=a6c85cf
Call-ID: a84b4c76e66710
CSeq: 3 BYE
Contact: <sip:alice@pc33.example.com>
Max-Forwards: 70
Content-Length: 0
被叫方接收到BYE请求后,发送200 OK消息作为确认。
SIP/2.0 200 OK
Via: SIP/2.0/UDP pc18.example.com;branch=z9hG4bK123abcdef
From: Alice <sip:alice@example.com>;tag=1928301774
To: Bob <sip:bob@example.com>;tag=a6c85cf
Call-ID: a84b4c76e66710
CSeq: 3 BYE
Contact: <sip:bob@pc18.example.com>
Content-Length: 0
这就是SIP基本呼叫流程的步骤。SIP还有很多其他功能,例如:持久连接、质量保证和安全特性等等。