SIP协议栈基础笔记

时间:2022-04-15 04:16:48

//------------------SIP基础------------------------//

SIP是基于UDP的协议

UA(user Agent)用户代理

UAC(client)发起SIP请求一方

UAS(server)接收请求并发送响应的一方

//SIP协议6中基本方法

REGISTER   注册联系信息

INVITE    初始化一个会话,可以理解为发起一个呼叫

ACK     对INVITE消息的最终响应

CANCEL    取消一个等待处理或正在处理的请求

BYE     终止一个会话

OPTIONS    查询服务器和能力,也可以用作ping测试

//扩展

SUBSCRIBE NOTIFY MESSAGE REFER INFO

//SIP必须包含的头域

Call-ID    用于区分不同会话的唯一标志

CSeq    顺序号,用于在同一会话中区分事务

From    说明请求来源

To     说明请求接收方

Max-Forwards  限制跳跃点数和最大转发次数

Via     描述请求消息经过的路径

//扩展的头域

Contact    Alice(某人)的联系地址

Expires    本次注册的有效期

Allow    Alice(某人)的UA所能支持的功能

User-Agent   UA的型号

Content-Length  消息正文的长度

//注册流程  

  Alice           Freeswitch    

    REGISTER(1)  

  ---------------------------->   

    SIP/2.0 401 unauthorized(未认证(http摘要认证))  

  <----------------------------    

    REGISTER(2)  

  ---------------------------->   

    SIP/2.0 200ok  

  <----------------------------

//呼叫流程  

  Bob            Alice   

  INVITE alice@example.com  

  ---------------------------->    

    100Trying  

  <----------------------------  //收到请求,等待响铃    

    180Ringing  

  <----------------------------  //响铃后回180,Bob收到180后提示对方正在响铃    

    200OK  

  <----------------------------  //Alice接听后,回200OK    

    ACK   

  ---------------------------->  //收到200OK回复ACK证实    

    RTP

  --------------------------------------- //语音通话走的是SIP之外的RTP    

    BYE  

  <----------------------------  //Alice挂断    

    200OK 

   ---------------------------->  //收到BYE后回200OK  

响应消息=状态码和原因短语(如Trying、Ringing)

1XX:为临时状态,表明呼叫的进展情况;

2XX:请求被成功收到;

3XX:重定向,SIP请求转到另一个UAS处理;

4XX:请求失败,一般由客户端或网络引起,如密码错误、空号

5XX:服务器内部错误,服务器出错不能响应错误的请求;

6XX:全局性错误,600 Busy Everywhere;