分享

【转】sip消息格式1

 icecity1306 2015-01-12

SIP消息分为请求和响应,格式由一个请求行/状态行、几个标题头、一个空行和一个消息体(可选)组成,之间使用回车换行符表示终结,即使消息中未包含消息体,空行也不能省略:

1、请求行/状态行

<1>请求行包含三部分:方法名,请求URL和协议版本,各部分之间均使用一个空格字符进行分隔,除此之外请求行必须使用回车换行符表示终结;

  a、方法:sip协议规定了6个方法:

    REGISTER消息,用于发送注册请求信息

    INVITE、ACK、CANCEL用于建立会话连接

    BYE用于终结会话连接

    OPTIONS用于查询服务器能力

    注:方法名必须是大写,除此之外,SIP协议在其他文档中还定义了若干方法实现扩展

  b、请求URL:

    URL中不允许出现空格或其他控制字符,不能包含于“<>”之内

  c、协议版本:

    用于定义协议版本号

例如:

  INVITE sip:liahr@mycompany.com SIP/2.0

<2>响应行包含:协议版本、状态码和状态码相关的文本描述组成,各部分之间由一个空格字符隔开,使用回车换行符表示终结

  a、协议版本

    用于定义协议版本号

  b、状态码

    是一个三位的十进制整数,第一位指示响应类型、后两位数字表示具体响应、用于指示请求消息的执行响应结果,状态码有6中:

    1)、1XX  临时响应、表示请求消息正在被处理

    2)、2XX  成功响应、表示请求已被成功接收完全理解并接收

    3)、3XX  重定向响应、表示需采取进一步完成请求

    4)、4XX  客户机错误、表示请求消息中包含语法错误信息或服务器无法完成客户机的请求

    5)、5xx  服务器错误、表示服务器无法合法完成请求

    6)、6XX 全局故障 、表示任何服务器都无法完成该请求

  c、状态码相关描述(原因)

    是对状态码简单的文本描述,客户机不必检查或显示

2、标题头

标题头提供关于请求/应答的信息和关于这些消息所包含的消息体的信息。一些标题头可以在请求或应答两种消息中使用,而其他的只能单独特定用于请求或应答。标题头由标题头名,后面跟一个冒号,在后面跟着值组成: 头子段:字段值,遵循RFC2822。

  注:消息头字段中允许出现多个空格字符,但在实现过程中建议冒号之前,头字段之后应避免出现空格字符;冒号之后,字段值之前加一个空格;不同的标题头顺序任意;

    只能存在于请求消息中的字段,为请求字段;只能存在于响应消息中的字段,为响应字段;当消息头字段中出现不匹配的字段的时候,消息接收实体则忽略;

    消息头域值可以折叠成多行,但紧接着的折叠行由空格(SP)或水平制表(HT)折叠标记开始。所有的线性空白(LWS)包括折叠行的折叠标记(空格SP或水平制表键HT),具有同SP一样的语义。接收者在解析域值或将消息转送到下游(downstream)之前可能会将任何线性空白(LWS)替换成单个SP(空格)。

例如From标题头:

          From: tfg2002

3、空行

空行隔开了sip消息头和消息正文(消息体)

3、消息实体

被SIP消息携带的消息体通常是描述符,但它也可以由任何不透明物体组成(XML,SDP)。对于SIP代理而言,消息体的内容是完全透明的;SIP消息实体可以包含二进制消息实体,如果未明确指出,则为缺省的消息文本类型UTF-8;

  Content-type: 消息实体类型;

  Content-Encoding:消息的编码方式;

  Content-Length:消息实体长度,单位为字节;

--转载:

1、MESSAGE消息
      1)头字段填写说明
      Call-id:                 必选
      CSeq:                   必选
      From:                   必选
      To:                       必选
      Max-Forwards: 必选
      Via:                      必选
      常用的可选参数:
      指定的消息体
      2)消息实例
      发送MESSAGE请求消息给192.168.2.48的6010端口,参考消息如下(带了“Hello的消息体):

【转】sip消息格式1MESSAGE sip:1897778888@192.168.2.48:6010 SIP/2.0
【转】sip消息格式1 Call
-ID: 8e12c17121ac4121bf927f6fd8013358@192.168.2.89
【转】sip消息格式1 
From<</span>sip:01052237300@192.168.2.89>;tag=-0037-708c9a5cba8dd878
【转】sip消息格式1 
To<</span>sip:1897778888@192.168.2.89>
【转】sip消息格式1 CSeq: 
1 MESSAGE
【转】sip消息格式1 Via: SIP
/2.0/UDP 192.168.2.89:14010;branch=z9hG4bK--22bd7222
【转】sip消息格式1 
Max-Forwards: 30
【转】sip消息格式1 Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,
UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE
【转】sip消息格式1 Contact: 
<</span>sip:192.168.2.89:14010>
【转】sip消息格式1 Content
-Type: text/plain
【转】sip消息格式1 Content
-Length: 5
【转】sip消息格式1 
【转】sip消息格式1 Hello

      收到来自192.168.2.48的6010端口的返回消息,参考消息如下(修改了消息体的内容,变成了“Hello amigo”):

【转】sip消息格式1SIP/2.0 200 OK
【转】sip消息格式1 Via: SIP
/2.0/UDP 192.168.2.89:14010;branch=z9hG4bK--22bd7222
【转】sip消息格式1 
From<</span>sip:01052237300@192.168.2.89>;tag=-0037-708c9a5cba8dd878
【转】sip消息格式1 
To<</span>sip:1897778888@192.168.2.89>;tag=-002-3c18e810ab17c76f
【转】sip消息格式1 Call
-ID: 8e12c17121ac4121bf927f6fd8013358@192.168.2.89
【转】sip消息格式1 CSeq: 
1 MESSAGE
【转】sip消息格式1 Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,
UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE
【转】sip消息格式1 Contact: 
<</span>sip:192.168.2.48:54010>
【转】sip消息格式1 Content
-Type: text/plain
【转】sip消息格式1 Content
-Length: 11
【转】sip消息格式1 
【转】sip消息格式1 Hello amigo


2、REGISTER消息
       1)头字段填写说明
       Call-id:                 必选
       Cseq:                   必选
       From:                   必选
       To:                       必选
       Max-Forwards: 必选
       Via:                      必选
       Contact:              必选
       Authorization:   必选
       Expires:               常用可选头
       2)非鉴权注册消息实例
       在该实例中192.168.2.161机器发送注册消息给192.168.2.89服务器,发送消息实例如下:

【转】sip消息格式1REGISTER sip:192.168.2.89 SIP/2.0
【转】sip消息格式1 Via: SIP
/2.0/UDP 192.168.2.161:10586
【转】sip消息格式1 
Max-Forwards: 70
【转】sip消息格式1 
From<</span>sip:01062237496@192.168.2.89>;tag=ca04c1391af3429491f2c4dfbe5e1b2e;epid=4f2e395931
【转】sip消息格式1 
To<</span>sip:01062237496@192.168.2.89>
【转】sip消息格式1 Call
-ID: da56b0fab5c54398b16c0d9f9c0ffcf2@192.168.2.161
【转】sip消息格式1 CSeq: 
1 REGISTER
【转】sip消息格式1 Contact: 
<</span>sip:192.168.2.161:10586>;methods="INVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE, CANCEL, NOTIFY, ACK, REFER"
【转】sip消息格式1 
User-Agent: RTC/1.2.4949 (BOL SIP Phone 1005)
【转】sip消息格式1 Event: registration
【转】sip消息格式1 Allow
-Events: presence
【转】sip消息格式1 Content
-Length: 0

      当注册成功(回送200 OK)时,服务器发送的res消息参考如下:

【转】sip消息格式1SIP/2.0 200 OK
【转】sip消息格式1 Via: SIP
/2.0/UDP 192.168.2.161:10586
【转】sip消息格式1 
From<</span>sip:01062237496@192.168.2.89>;tag=ca04c1391af3429491f2c4dfbe5e1b2e;epid=4f2e395931
【转】sip消息格式1 
To<</span>sip:01062237496@192.168.2.89>;tag=-00834-14d0805b62bc026d
【转】sip消息格式1 Call
-ID: da56b0fab5c54398b16c0d9f9c0ffcf2@192.168.2.161
【转】sip消息格式1 CSeq: 
1 REGISTER
【转】sip消息格式1 Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,
UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE
【转】sip消息格式1 Contact: sip:
192.168.2.161:10586
【转】sip消息格式1 Content
-Length: 0
【转】sip消息格式1 Expires: 
3600

       3)鉴权注册消息实例
       当需要鉴权注册时,当请求端192.168.2.161使用BOL或xlite等发送注册消息给192.168.2.89服务器时,服务器对192.168.2.161发送“401 Unauthorized”信息给请求端,提示请求段需要带上鉴权信息重新注册,请求端带上鉴权信息后(带有“Authorization”头字段)重新向服务器注册,服务器验证鉴权头的正确性,如果鉴权成功,给请求端发送200 OK消息。若失败,继续发送401消息。
       第一步:请求端(192.168.2.161)发送REGISTER消息,参考消息如下:

【转】sip消息格式1REGISTER sip:192.168.2.89 SIP/2.0
【转】sip消息格式1 Via: SIP
/2.0/UDP 192.168.2.161:8021
【转】sip消息格式1 
Max-Forwards: 70
【转】sip消息格式1 
From<</span>sip:01062237493@192.168.2.89>;tag=efca469543ce4788a6a6a2c7b66cd01f;epid=de4504430d
【转】sip消息格式1 
To<</span>sip:01062237493@192.168.2.89>
【转】sip消息格式1 Call
-ID: c88a247a74b54a8c9e676bdde3bba6c9@192.168.2.161
【转】sip消息格式1 CSeq: 
1 REGISTER
【转】sip消息格式1 Contact: 
<</span>sip:192.168.2.161:8021>;methods="INVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE, CANCEL, NOTIFY, ACK, REFER"
【转】sip消息格式1 
User-Agent: RTC/1.2.4949 (BOL SIP Phone 1005)
【转】sip消息格式1 Event: registration
【转】sip消息格式1 Allow
-Events: presence
【转】sip消息格式1 Content
-Length: 0

     第二步:服务器端(192.168.2.89)检查到需要鉴权,给请求端发送401结果码,并带上“WWW-Authenticate”头信息,参考消息如下:

【转】sip消息格式1SIP/2.0 401 Unauthorized
【转】sip消息格式1 Via: SIP
/2.0/UDP 192.168.2.161:8021
【转】sip消息格式1 
From<</span>sip:01062237493@192.168.2.89>;tag=efca469543ce4788a6a6a2c7b66cd01f;epid=de4504430d
【转】sip消息格式1 
To<</span>sip:01062237493@192.168.2.89>;tag=-001893-38ba013ba3dde36e
【转】sip消息格式1 Call
-ID: c88a247a74b54a8c9e676bdde3bba6c9@192.168.2.161
【转】sip消息格式1 CSeq: 
1 REGISTER
【转】sip消息格式1 Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,
UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE
【转】sip消息格式1 Contact: 
<</span>sip:192.168.2.89:14010>
【转】sip消息格式1 Content
-Length: 0
【转】sip消息格式1 WWW
-Authenticate: Digest realm="192.168.2.89", qop="auth", nonce="e17d377c3d2d9c343e26576a7fd04738481dfc10", opaque="", stale=FALSE, algorithm=MD5

      第三步:请求端(192.168.2.161)通过“Authorization”头字段带上鉴权头信息,发送一个新的REGISTER消息,参考消息如下:

【转】sip消息格式1REGISTER sip:192.168.2.89 SIP/2.0
【转】sip消息格式1 Via: SIP
/2.0/UDP 192.168.2.161:8021
【转】sip消息格式1 
Max-Forwards: 70
【转】sip消息格式1 
From<</span>sip:01062237493@192.168.2.89>;tag=efca469543ce4788a6a6a2c7b66cd01f;epid=de4504430d
【转】sip消息格式1 
To<</span>sip:01062237493@192.168.2.89>
【转】sip消息格式1 Call
-ID: c88a247a74b54a8c9e676bdde3bba6c9@192.168.2.161
【转】sip消息格式1 CSeq: 
2 REGISTER
【转】sip消息格式1 Contact: 
<</span>sip:192.168.2.161:8021>;methods="INVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE, CANCEL, NOTIFY, ACK, REFER"
【转】sip消息格式1 
User-Agent: RTC/1.2.4949 (BOL SIP Phone 1005)
【转】sip消息格式1 
AuthorizationDigest username="01062237493", realm="192.168.2.89", qop=auth, algorithm=MD5, uri="sip:192.168.2.89", nonce="e17d377c3d2d9c343e26576a7fd04738481dfc10", nc=00000001cnonce="12660455546344082314666316435946", response="f57e47ce03162293b9ced07362ce2b79"
【转】sip消息格式1 Event: registration
【转】sip消息格式1 Allow
-Events: presence
【转】sip消息格式1 Content
-Length: 0

      第四步:服务器端(192.168.2.89)验证鉴权信息的合法性,若验证成功,发送200 OK消息,参考消息如下:

【转】sip消息格式1SIP/2.0 200 OK
【转】sip消息格式1 Via: SIP
/2.0/UDP 192.168.2.161:8021
【转】sip消息格式1 
From<</span>sip:01062237493@192.168.2.89>;tag=efca469543ce4788a6a6a2c7b66cd01f;epid=de4504430d
【转】sip消息格式1 
To<</span>sip:01062237493@192.168.2.89>;tag=-001894-a5eb977c8969aa51
【转】sip消息格式1 Call
-ID: c88a247a74b54a8c9e676bdde3bba6c9@192.168.2.161
【转】sip消息格式1 CSeq: 
2 REGISTER
【转】sip消息格式1 Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,
UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE
【转】sip消息格式1 Contact: sip:
192.168.2.161:8021
【转】sip消息格式1 Content
-Length: 0
【转】sip消息格式1 Expires: 
3600

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多