SIP笔记

UPDATE(RFC3311)消息是SIP扩展的一种机制,用以在通话尚未建立的时候更新媒体流状态的一种机制。那么Update的应用前提是early media,也就是说在应答之前通过临时响应(101-199)实现了SDP的第一次Offer/Answer,并建立了媒体流。在此之后并在应答前的后续媒体流变更,通过UPDATE实现。在应答之后的后续媒体流变更,是通过Re-invite实现。
       对于Update来说,它是SIP消息中和Invite Transaction不同的一个新的和呼叫相关的Transactions,它需要和响应(通常是200 OK)完成一次新的SDP Offer/Answer,从而改变媒体流属性。

CSeq: 在Call-ID范围内是唯一确定的,Respone的CSeq和Request是一样的,后续的Request CSeq会不断增加,但ACK和CANCEL的CSeq和Invite是一样的

VIA:呼叫发起方将其自己的地址加入的via的第一条,每经过一个proxy server就把自身的地址加入进去,如果不是5060端口还要加入端口。这样做的好处有两个:1)防止回路,如果proxy server发现自己的地址已经在via中,那就发生回路了,则发送回路检测响应;2)可以让response消息沿着原路发回。
    但是当请求消息是通过防火墙发送的,那么请求的源地址和端口将会被改变,所以不能成为选路的依据。为了防止这种情况,proxy server必须检测顶端的via是不是和前站的发送地址一致(可以从消息里面得到),如果不一致,则在via的末尾加上reveive字段,其值为前站地址,然后将自己的地址加入到顶端

Contact:指示请求发出的位置,给其后的消息提供发送地址,但是CANCEL消息不能直接发送给该地址,必须原路返回

Allow:给出支持的消息类型

supported: 给出支持的一些扩展能力,如100rel,表示支持prack;require则表示必须支持

route,contact,from,via的区别:如果有Route,request就应该根据Route发送,如果没有就根据Contact头域发送,如果连Contact都没有,就根据From头域发送;而via是给response消息用的

你可能感兴趣的:(SIP笔记)