SIP(Session Initiation Protocol,会话初始协议)
SIP(Session Initiation Protocol,会话初始协议)
SIP通信两种会话模式
- Session Model
主叫方A呼叫被叫方B:
-
步骤1:
主叫方A
发送INVITE
请求到代理服务器
; -
步骤2:
代理服务器
发送100 Trying 响应主叫方A
; -
步骤3~6:
代理服务器
搜索被叫方B
的地址,获取地址后转发INVITE请求; -
步骤7~9:
被叫方B
生成的180 振铃响应,返回给主叫方A
; -
步骤10~12:
被叫方B
生成的200 OK响应,返回给主叫方A
; -
步骤13~17:
主叫方A
收到被叫方B
200 OK响应后,向被叫方B
发送一个ACK,会话建立; -
步骤18~20:会话结束后,任何参与者(A或B)都可以发送一个BYE请求来终止会话;
-
步骤21~23:
主叫方A
发送200 OK响应来确认BYE,会话终止。
注:以上的整个流程称之为一个Dialog
- Pager Model
-
步骤1:
User1
发送MESSAGE
请求到代理服务器
; -
步骤2:
代理服务器
转发User1
的MESSAGE请求给USER2
; -
步骤3:
User2
收到User1
的消息后,回复200 OK给代理服务器
; -
步骤7~9:
代理服务器
转发200 OK回复给User1
SIP消息体格式
SIP消息体结构
与Http协议结构
相似,均由三部分组成:
-
请求行(request-line) or 状态行(status-line)
-
消息头(header)
-
正文(body)
(1)请求行
请求行格式:Method Request-URI SIP-Version CRLF
请求行举例:INVITE sip:bob@zte.com SIP/2.0 /r/n
(2)状态行
状态行格式: SIP-Version Status-Code Reason-Phrase CRLF
状态行举例:SIP/2.0 200 OK /r/n
Status-Code状态码: 状态代码由3位数字组成,表示请求是否被理解或被满足。 状态代码的第一个数字定义了响应的类别,后面两位没有具体的分类
。
(3)消息头
发送MESSAGE
消息给user2
MESSAGE sip:user2@domain.com SIP/2.0
Via: SIP/2.0/TCP user1pc.domain.com;branch=z9hG4bK776sgdkse
Max-Forwards: 70
From: sip:user1@domain.com;tag=49583
To: sip:user2@domain.com
Call-ID: asd88asd77a@1.2.3.4
CSeq: 1 MESSAGE
Content-Type: text/plain
Content-Length: 18
123456789
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!