zoukankan      html  css  js  c++  java
  • SIP头域说明

    INVITE sip:victor@add.ultrapower.com.cn;transport=tcp SIP/2.0
    Via: SIP/2.0/TCP 192.168.5.162;branch=z9hG4bK381ACAFC.537D4376;branched=FALSE;
    Max-Forwards: 69
    Contact: <sip:long@add.ultrapower.com.cn:2992;maddr=192.168.5.162;transport=tcp;ms-received-cid=B100>
    Via: SIP/2.0/TCP 192.168.5.162:11499;ms-received-port=2992;ms-received-cid=b100        
    Record-Route: <sip:helen.add.ultrapower.com.cn;transport=tcp>;tag=9B8AE5F9C759FB02F679AFD6CB71394C From: <sip:long@add.ultrapower.com.cn>;tag=704b1683edd4438f85a34adb6201e078;epid=d9176cec0c To: <sip:victor@add.ultrapower.com.cn>;epid=203e516cd9 Call-ID: d455d3faf197403482154b9a319f54e0 CSeq: 1 INVITE Require: com.microsoft.rtc-multiparty Content-Type: application/sdp Content-Length: 134

    SIP消息的第一部分:

    起始行(StartLine) 本消息属于Request Line,它所包含的信息: RequestType: 方法名就是INVITE,表示邀请其他用户加入会话 Request-URI: sip:long@add.ultrapower.com.cn;transport=tcp, 这属于SIP URI中的“Address-of-Record(AOR)”种类。 SIP Version:2.0版本号。

    SIP消息的第二部分:

    Via:记录了请求在SIP网络中的路由路径。 最下面的Via是初始化这个请求的UA(User Agent)插入的; 上面的Via都是在这个路由路径上的Proxy们插入的。Via头域就是用来指示如何将响应沿原路返回到UA的。

    Max-Forwards:最大转发数,用来限制一个SIP请求消息所能经过的实体的最大数目。 如果消息拷贝中包含一个Max-Forwards字段,代理服务器必须将其减一。 如果消息拷贝中不含Max-Forwards字段,代理服务器必须加入该字段,其值应该为70。 如果请求消息中包含Max-Forwards字段,且其值为零,则SIP实体不得转发,并且返回483(Too Many Hops)响应。

    From Tag,To Tag,和Call-ID构成了dialog信息,可以唯一标识一个dialog。  在本次呼叫(Call)中的所有请求和响应将使用同样dialog信息。Call-ID的构成: 伪随机数字+”@”+主机名或者IP地址。

    CSeq: Command Sequence Number 用于标识事务并对事务排序。由一个序列号和请求方法组成。 呼叫开始时初始化CSeq。非REGISTER请求的CSeq,序列号值可以是一个任意的32位无符号整数。CSeq按照各自方向严格单向按1递增。 CSeq能够区分某个请求是新请求还是重发的请求。

    Contact: 包含的SIP/SIPS URI是UA希望用来接收请求的地址,后续请求可以用它来联系到当前UA。 如果代理服务器没有插入Record-Route字段来希望自己留在后续请求消息的传输路径上,那么可以忽略这些代理服务器,后续请求直接用Contact字段的URI来通讯。 当Contact中包含一个显示名称时,带有所有的URI参数的URI应该放入尖括号<>中。

    Record-Route: 如果代理服务器希望自己留在后续请求消息的传输路径上,而这些后续请求消息属于由当前请求创建的一个对话,那么即使请求中已经出现了Route字段,代理服务器也必须在请求消息的拷贝中已有的Record-Route字段值之前插入一个Record-Route字段。

    Content-Type: 定义消息实体的类型,如text/plain,或application/sdp。如果消息体不为空,Content-Type字段必须存在。 Content-Length: 定义消息实体的长度,单位为字节。 SIP消息实体不能采用HTTP 1.1中所定义的“Chunked”传送编码机制。

    Require: UAC通过Require字段列出的选项标签,告知UAS处理请求时需要支持的选项,本字段为可选,但不可以被忽略。

    v=0
    o=-0 0 IN IP4 192.168.5.162
    s=session
    c=IN IP4 192.168.5.162
    t=0 0
    m=message 5060 sip sip:victor@add.ultrapower.com.cn

    Version Number,协议版本
    Origin,所有者/创建者和会话标识符
    Subject,会话名称
    Connection Data,连接信息
    Time,会话活动时间
    Media(type, port, RTP/AVP Profile),媒体名称和传输地址

    附:

    1、

    Request-URI

    呼叫请求发送地址。UA生成初始请求消息时,该域中的信息一般与TO中的地址相同,经过网络服务器后,由于实际路由问题,该值可能发生变化以,另外一个比较特殊的是REGISTER消息,在REGISTER消息中,在REQUEST-URI中将会填充注册服务器的地址(表示消息发往注册服务器),而此时TO域中的地址将会填充客户端实际的地址。

    From

    发起请求方的地址。一般采用USERINFO@HOSTPORT形式。该域同时带有一个TAG参数,是随机产生的整数。

    To

    接受方地址。同FROM域相同,也采用USERINFO@HOSTPORT的地址形式,当该域存在于最终响应消息中时,将会事有TAG参数。

    Call-ID

    用于识别呼叫参数,在同一个DIALOG中,该参数不发生变化。该参数与FROM中的TAG参数、TO域中的TAG参数相结合用以保证呼叫的惟一性。

    Cseq

    表征TRANSACEION的参数,由于同一个呼叫中会存在多个TRANSACTION,因此通过该能数来保证同一个USERAGENT发送的不同请求消息间的顺序。

    Via

    该参数表征呼叫经过的路径,UA生成SIP消息时,会在该域中填写自己的地址:PROXY在转发请求消息时,将会增加一个填有自己地址的VIA域,表示才叫经过本PROXY。VIA域的存在可以保证响应消息按照原路径返回到主叫方。代理服务器用它检查其内容,如果新端点已出现在via列表中,则表示有环路了。

    Contact

    告知对端自己的地址。当对端发送下一个请求消息时,可直接向该地址发送,不需要关心前一个路由信息(除非有特定原则,例如PROXY可以通过RECORD-ROUTE域来保证下一个请求消息必须经过本PROXY,即使CONTACT域中填写对端客户的地址。

    Expires

    limits search time,

    给出消息内容超期的时间

    Record-Route

    由于CONTACT域的存在使得两个用户后续的请求消息可能不经过PROXY,为了运营需要,PROXY在初始INVITE消息中增加了RECORD-ROUTE域,这样可以保证后续请求(例如BYE消息)经过PROXY.通过RECORD-ROUTE与CONTACT的结合,既可避免后续请求旁路网络服务器的行为,又可减少后续请求路径上的环节。

    CONTENT-TYPE

    表征消息格式的参数,例如,呼叫采用了SDP进行会话描述,还是采用其他类型的会话描述协议。

    2、

  • 相关阅读:
    iOS MJRefresh的使用 (列表上拉加载更多)
    iOS 后台任务
    ios Alamofire网络插件的使用
    springboot shiro ehcache redis 简单使用
    android BottomNavigationView 简单使用
    iOS ksyhttpcache音视频缓存
    springboot 简单使用shiro登录
    springboot 使用 mybatis + mapper
    [LeetCode] Permutations
    【经典算法】回溯算法
  • 原文地址:https://www.cnblogs.com/lynchyo/p/3520500.html
Copyright © 2011-2022 走看看