实验模拟环境如下:华为SoftCo模拟软件、两个OpenEye软终端。IP地址与号码分配如下:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

配置命令如下:

config add batch sipue seid 8000 authorizationtype noauth number 5

 //批量增加SIP帐号

config add subscriber eid 8000 dn 7000 number 5

//批量增加SIP话机号码

config add prefix dn 7 callcategory basic callattribute inter cldpredeal no minlen 4 maxlen 4 //配置局内字冠
下面是8001呼叫8000的协议流程图:

首先配置好SoftCo交换机之后,然后配置SIP软终端,在配置好之后,会自发向SIP服务器注册,发送register请求报文,服务器收到后注册通过,则返回状态报文OK,表示注册成功。

 

8001呼叫8000,向SIP服务器发送INVITE报文,向源发送Trying报文,SIP服务器通过查询USN,找到对应的分机号码,然后将INVITE报文转发给80008000收到后向服务器返回Trying报文,如果8000接受INVITE的参数,则8000响铃,向SIP服务器发送ringing回铃消息, SIP服务器收到后,将ringing回铃消息转发给8001,这时8001提到回铃声 ;同时如果8000摘机了,向SIP服务器返回状态消息OK,表示对方摘机,SIP服务器转发给80018001收到OK后,发送ACK确认,经SIP服务器转发给8001,这时整个通话连接建立起来,用RTP协议来传输语音视频流,双方便能听到声音了。通话一段时间后,如果8001想要结束通话,则挂机,向SIP服务器发送BYE消息,SIP服务器转发给8000,同时返回状态消息OK8000收到BYE则知道对方已挂机,返回TryingOK消息,最后整个通话结束。

 

 

以上内容均为个人见解,欢迎各位指正!报文详细格式请参考附件文档。

 
sip消息类型和消息格式
SIP是一个基于文本的协议,使用的是UTF-8字符集.
SIP消息主要分为两大类:
一类是由客户端发往服务器的请求消息(Request);
一类是由服务器发往客户端的应答消息(Response).
一个基本的SIP消息包括起始行、一个或多个头字段、说明头字段结束的空行和一个可选的消息体。
消息=起始行(包括请求行/状态行;请求行规定了请求的类别,而状态行指出了每个请求的状态,比如是成功还是失败。如果是失败的话还要给出失败的原因或类型。)
          *头字段
          CRLF
           [消息体] (消息首部给出了关于请求或应答的更多信息一般包括消息的来源、规定的消息接收方,另外还包括一些其他方面的重要信息。       消息体通常描述将要建立会议的类型包括所交换媒体的描述,但不具体定义消息体的内容或结构,其结构或内容使用另外一个协议来描述,就是会话描述协议 SDP。)
请求消息
请求行=方法 +空格 +请求地址 +SIP版本号 +空行
通过一个请求行作为起始行,请求行包括了方法名、请求的URL、协议版本号、中间用空格分开。
六种请求方法:
INVITE        发出呼叫会话请求
ACK         INVITE请求被最终请求
BYE          释放一个呼叫会话
CANCEL        取消挂起的呼叫
REGISTER       登记注册用户代理
OPTIONS       查询服务器能力
应答消息
状态行=SIP版本+空格+状态码+空格+相关文本短语+空行

SIP
应答消息状态码与功能
类型 状态码 状态说明
临时应答(1XX) 100 Trying 正在处理中
180 Ringing
振铃
181 call being forwarder
呼叫正在前向
182 queue
排队
181* session progress
会话进行
会话成功(2XX) 200 OK 会话成功
重定向(3XX) 300 multiple 多重选择
301 moved permanently
永久移动
302 moved temporaily
临时移动
305 use proxy
用户代理
380 alternative service
替代服务
请求失败(4XX) 400 bad request 错误请求
401unauthorized
未授权
402 payment required
付费要求
403 forbidden
禁止
404 not found
未发现
405 method no allowed
方法不允许
406 not acceptable
不可接受
407 proxy authentication required
代理需要认证
408 request timeout
请求超时
410 gone
离开
413 request entity too large
请求实体太大
414 request-url too long
请求URL太长
415 unsupported media type
不支持的媒体类型
416 unsupported url scheme
不支持的URL计划
420 bad extension
不良扩展
421 extension required
需要扩展
423 interval too brief
间隔太短

480 temporarily unavailable
临时失效
481 call/transaction does not exist
呼叫/事务不存在
482 loop detected
发现环路
483 too many hops
跳数太多
484 address incomplete
地址不完整
485 ambiguous
不明朗
486 busy here
这里忙
487 request terminated
请求终止
488 not acceptable here
这里请求不可接受
491 request pending
未决请求
493 undecipherable
不可辨识
服务器失败(5XX) 500 server internal error 服务器内部错误
501 not implemented
不可执行
502 bad gateway
坏网关
503 service unavailable
服务无效
504 server time-out
服务器超时
505 version not supported
版本不支持
513 message too large
消息太大
全局性错误(6XX) 600 busy everywhere 全忙
603 decline
丢弃
604 does not exist anywhere
不存在
606 not acceptable
不可接受