
SIP请求方法
文章平均质量分 68
解析SIP协议的各种请求消息
云梦谭
这个作者很懒,什么都没留下…
展开
-
SIP 请求方法(11)- UPDATE
RFC3311定义了UPDATE方法,可以在不改变dialog状态的前提下修改会话的参数。SIP中使用INVITE请求建立会话,过程使用offer/answer模型。通常,INVITE中带offer,而在它对应的应答中带answer。在建立的会话中,可以用re-INVITE修改会话参数。但是,会话悬而未决之前(INVITE已经发出,但最终应答还没收到),任意一方都不能发re-INVITE,这时如果需要变更会话参数,只能通过UPDATE方法了。 UPDATE的可能用途包括静音...原创 2021-02-08 09:56:25 · 4697 阅读 · 0 评论 -
SIP 请求方法(10)- PRACK
RFC3262定义了PRACK方法,它用于保证临时应答(1xx)的传输可靠性。INVITE请求的2xx, 3xx, 4xx, 5xx, 与 6xx应答的可靠性是通过ACK方法确定的。但是,如果临时应答(比如180 Ringing)对呼叫状态至关重要,则可能需要对收到的临时应答进行确认。PRACK方法适用于除了100 Trying之外的所有临时应答消息,它们在3261中没有可靠性保证。 UAC收到临时应答时,如果消息中包含RSeq可靠序列号和Supported: 100rel...原创 2021-02-03 17:29:07 · 2026 阅读 · 1 评论 -
SIP 请求方法(9)- INFO
INFO方法定义于RFC2976(已被新的规范替换),建立媒体会话后,UA使用INFO 方法向令一个UA发呼叫信令信息。这个方法是端到端的,代理永远不能自己生成INFO。代理始终转发INFO请求,由UAS检查它的合法性。如果未有匹配dialog,返回481 Transaction/Dialog Does Not Exist应答。原始的INFO规范RFC2976没有定义INFO消息体的协商机制。更新后的规范RFC6086,为INFO定义了包的用法,以及发现和声明包的支持机制。请求和应答中引入R...原创 2021-01-27 16:54:04 · 2794 阅读 · 0 评论 -
SIP 请求方法(8)- MESSAGE
RFC3428定义了MESSAGE方法,SIP中使用它传输即时消息(IM)。即时消息通常由近似实时交换的短消息组成,是会话参与者间发送的文本消息。可以在dialog内或dialog外发MESSAGE消息,但它们自身不会建立dialog。实际的消息内容以MIME附件形式携带(消息体)。所有支持MESSAGE方法的UA都必须支持text/plain格式,其它诸如message/cpim或text/html之类的格式可选,更多格式说明,请参考下表。IM中常用的 Content-Type ...原创 2021-01-19 17:52:51 · 2777 阅读 · 0 评论 -
SIP 请求方法(7)- REFER
RFC3515中定义了REFER方法,UA使用REFER方法请求另一个UA访问一个URI或URL资源。资源内容由Refer-To头域指定,通常是URI或URL,Refer-To头域对REFER请求来说是必须的。这里的URI或URL可以是任何类型的URI:sip, sips, http, pres等等。URI是sip或sips时,REFER可以实现呼叫转移服务。还可以用REFER实现P2P(peer-to-peefr)呼叫控制。 既可以在dialog内,也可以在dialog外...原创 2021-01-13 09:40:59 · 6806 阅读 · 12 评论 -
SIP 请求方法(6)- PUBLISH
PUBLISH方法定义在 RFC3903,UA使用PUBLISH方法发布事件状态信息,信息发给一种叫事件状态合成器(event state compositor (ESC))的网元服务器。当事件状态有多个信息来源时,比如说多台设备共享AOR,PUBLISH方法非常有用。如果没有ESC,UA为了收集完整的状态信息,需要订阅所有设备。实际不不需要这么麻烦,UA可以只向ESC订阅,各个设备独立向ESC发PUBLISH消息,然后ESC把状态信息组合在一起,统一向观察者发NOTIFY消息。整个流程如...原创 2021-01-05 08:57:27 · 2256 阅读 · 0 评论 -
SIP 请求方法(5)-SUBSCRIBE& NOTIFY
前面介绍了RFC3261里定义的六种SIP方法。接下来,我们看看SIP扩展的方法有哪些。SUBSCRIBE UA 使用SUBSCRIBE方法来建立订阅关系,以获取特定事件的通知(通过NOTIFY方法),SUBSCRIBE和NOTIFY都定义于RFC6665。订阅成功后在UAC和UAS间建立一个dialog。订阅请求包含一个Expires头域,它说明订阅存在的持续时间。期满之后,订阅关系自动终止。期满之前,可以再发一条SUBSCRIBE请求来刷新。服务端接受订阅时返回一...原创 2020-12-28 15:21:21 · 10773 阅读 · 2 评论 -
SIP 请求方法(4)-CANCEL & OPTIONS
OPTIONS方法用于查询UA或服务器的能力及发现它当前的可用性。OPTIONS请求的应答消息中描述UA或服务端的能力集。代理服务器永远不会生成OPTIONS请求。UA或服务器对OPTIONS响应与INVITE一样(比如说,他不想理会,可以回应4xx或6xx)。成功类应答(2xx)可以包含Allow, Accept, Accept-Encoding, Accept-Language, 和 Supported头域,用于说明它的能力集。功能tag(比如audio, video , 和 isfoc...原创 2020-12-22 10:07:48 · 5335 阅读 · 0 评论 -
SIP 请求方法(3)-BYE & ACK
BYE 用BYE方法终止一个媒体会话。在电信领域中,它类似于release消息。会话正式建立的时间点是发到成功应答(2xx)或发出ACK时。只有会话中的UA能发BYE请求,代理或其它第三方网元永远不能发起BYE请求。它是一种端到端的方法,因此应答只能由对端UA生成。如果UA收到未知的BYE请求,那么它应答回应481 Dialog/Transaction Does Not Exist。 如果INVITE还未确立,那么不能用BYE来取消,因为它不能像INVITE那样分支处理,最终...原创 2020-12-14 08:58:10 · 4829 阅读 · 0 评论 -
SIP 请求方法(2)-REGISTER
UA用REGISTER方法通知SIP网络它当前的联系 URI (IP address)和路由到这个联系地址对应的URI。SIP注册与手机初始化时的注册过程有点类似。UA通过代理服务器外呼时并不要求注册。但是,除非使用其它非SIP的定位手段告知终端当前的联系URI,否则,UA想通过代理服务器接收来电,就必须先注册。 虽然在标准规范中没有具体定义,但是REGISTER请求可以包含消息体的。根据注册请求中的Contact和Expires头域使用情况,注册服务器将采取不同的操作。如...原创 2020-12-08 08:52:49 · 4950 阅读 · 7 评论 -
SIP 请求方法(1)-INVITE
SIP请求的类型,也称作SIP方法。RFC3261 中定义了六种方法。另外八种方法有独立的RFC扩展描述。 SIP请求或方法在协议中被视为“动词”,因为它们请求另一个UA或服务器执行一项特定的动作。INVITE、REGISTER、BYE、ACK、 CANCEL和 OPTIONS是SIP最初定义的六种方法。REFER、SUBSCRIBE、NOTIFY、PUBLISH、MESSAGE、UPDATE、INFO和 PRACK这些方法是在扩展的RFC中定义的。 ...原创 2020-11-26 17:19:05 · 7903 阅读 · 5 评论