sip协议的学习之路
一、SIP的请求和响应:
1)请求消息(request):
- 请求消息的起始行为请求行
- 请求行由方法名、请求URL和协议版本组成,各部分之间均用一个空格字符进行分隔
- 请求行必须用回车换行(CRLF)字符表示行终结
- INVITE sip:guest@192.168.2.10 SIP/2.0
- 方法名:RFC3261定义了6个方法,INVITE、ACK、CANCEL、OPTION、BYE、REGISTER
、INVITE、ACK、CANCEL用于建立会话连接 - BYE用于终结会话连接
- OPTION用于查询服务器能力
- REGISTER用于向注册服务器注册
- 请求URL:指示被邀请用户的当前地址,URL中不允许出现空格
- 协议版本:用于定义协议的当前版本号,目前sip的版本号为SIP/2.0
2)响应消息(response)
-
响应消息的起始行为状态行
-
状态行由协议版本、状态码和与状态码相关的文本描述组成,各个部分之间用一个空格字符进行分隔
-
状态行必须用回车换行(CRLF)字符表示行终结
SIP/2.0 200 OK
SIP/2.0 180 Ringing -
状态码:为一个3位的十进制整数,用于指示请求消息的执行响应结果
-
目前定义了6类状态码,其中状态码的第1位数字用于指示响应类型,后2位数字表示具体响应
-
1XX:临时响应,表示请求消息正在被处理
-
2XX:成功响应,表示请求已被成功接收,完全理解并被接受
-
3XX:重定向响应,表示需采取进一步已完成该请求
-
4XX:客户机错误,表示请求消息中包含语法错误信息或服务器无法完成客户机请求
-
5XX:服务器错误,表示服务器无法完成该合法请求 6XX:全局故障,表示任何服务器无法完成请求
-
常见的响应状态码:
-
100 Trying (尝试)
-
180 Ringing (振铃)
-
200 OK (请求成功)
-
408 Request Timeout(请求超时)
-
486 Busy Here (正忙)
-
487 Request Terminated(请求终止)
-
603 Decline(拒绝)