📜  SIP-会话描述协议(1)

📅  最后修改于: 2023-12-03 15:20:08.931000             🧑  作者: Mango

SIP-会话描述协议

SIP是一种基于文本的通信协议,用于控制实时会话,例如语音和视频通话。它是VoIP(Voice over IP)技术中最常用的协议之一。

协议结构

SIP使用HTTP类似的请求-响应模型。客户端向服务器发送请求消息,服务器向客户端发送响应消息。

SIP消息分为两种类型:请求消息和响应消息。请求消息通过request-uri指定一个或多个接收方。响应消息则指定该请求的结果。

SIP请求消息包括以下几部分:

  • 请求行:请求方法、request-uri和SIP版本号
  • 头部字段:描述请求的各种信息,如To、From、Contact、Call-ID、Via等
  • 实体:可选,包含任何消息body数据,如消息内容或请求参数

响应消息包括以下几部分:

  • 状态行:SIP版本号,状态码和状态短语
  • 头部字段:描述响应的各种信息,如To、From、Call-ID、Via等
  • 实体:可选,包含任何响应body数据,如请求结果或参数
SIP消息方法

SIP使用请求-响应模型。请求消息包括以下几种方法:

  • INVITE:初始化一个会话
  • ACK:确认邀请的成功,接受邀请
  • BYE:结束一个会话
  • CANCEL:取消先前发送的请求
  • REGISTER:注册一个用户
  • OPTIONS:查询服务器的通信选项
  • INFO:发送DTMF和其他控制信息
  • UPDATE:修改会话的信息
  • PRACK:提议确认
SIP消息头部

SIP消息头包含多个头字段,其中要求加入到所有SIP消息中的头是:

  • Via:标识消息经过的路线
  • From:标识消息的发送方
  • To:标识消息的接收方
  • Contact:用于确定发送方的联系方式
  • Call-ID:标识会话
  • CSeq:序列号,用于标识请求

头部还可以包含其他可选头,例如User-Agent、Expires、Max-Forwards、Content-Type等等。

SIP消息示例

SIP INVITE消息示例:

INVITE sip:\[email protected];user=phone SIP/2.0
Via: SIP/2.0/UDP 192.0.2.101:5060;branch=z9hG4bK1a1ad
Max-Forwards: 69
To: Bob <sip:[email protected]>;tag=a6c85cf
From: Alice <sip:[email protected]>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:[email protected]:5060>
Content-Type: application/sdp
Content-Length: 142

v=0
o=- 123456 654321 IN IP4 192.0.2.3
s=Talk
c=IN IP4 192.0.2.3
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000

SIP 200 OK响应消息示例:

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.0.2.101:5060;branch=z9hG4bK1a1ad
To: Bob <sip:[email protected]>;tag=a6c85cf
From: Alice <sip:[email protected]>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:[email protected]:5060>
Content-Type: application/sdp
Content-Length: 142

v=0
o=- 123456 654321 IN IP4 192.0.2.3
s=Talk
c=IN IP4 192.0.2.3
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
SIP应用程序

基于SIP的应用程序可以实现各种语音和视频通信功能。一些常见的SIP应用程序包括:

  • IP电话:基于SIP协议实现的电话系统
  • 音频/视频会议:使用SIP协议实现的实时会议系统
  • 语音信箱:通过SIP协议处理语音邮件
  • 网络电话接入:将传统电话网络与IP网络连接起来
参考资料