ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SIP协议解析

2021-02-25 10:05:30  阅读:335  来源: 互联网

标签:协议 SIP INVITE request Content 字段 消息 解析


起始行(start-line)

INVITE sip:34020000001320000001@202.102.11.27:35611 SIP/2.0

  • 请求消息的起始行包括三个参数,格式:Request start-line = Method URI SIP_VERSION
  • Method是请求方法,本例是INVITE, SIP协议规定的Method有六种: INVITE, ACK, CANCEL用于创建对话,BYE用于结束对话, REGISTER用于登记,OPTIONS用于查询服务器能力。

头部消息(header)

Call-ID: 850948F238C245A0B555F78B8233A282
CSeq: 20 INVITE
From: <sip:34020000002000000001@3402000000>;tag=FD12812E69F94E6085754DE139441F27
To: <sip:34020000001320000001@34020000>
Via: SIP/2.0/TCP 202.102.11.27:35611;rport
Max-Forwards: 70
Contact: <sip:34020000002000000001@0.0.0.0:21000>
Content-Type: Application/SDP
Content-Length: 263
  • Via字段
    • Via头字段保存所经过SIP网元(客户端或Proxy)的主机名或网络地址(可能还有端口号);
    • 消息中的所有Via头字段对请求消息而言,从下至上依次表示到当前所在SIP网元为止,请求消息所经过的路径;
    • 对响应消息而言,从上至下依次表示从当前网元开始,响应所应遵循的路径。
  • Max-Forwards字段
    • Max-Forwards 字段表示request到达UAS的跳数的限制。是一个整数,经过每一跳时减去一;
    • 如果Max-Forwards已经是零,可是request还没有到达目的地,则就会产生一个483(too many hops)响应。
  • To字段
    • To字段表示消息的接收者。
  • From字段
    • From字段表示消息的发送者。
  • Call-ID字段
    • 是一个邀请(Invitation)或来自同一个UAC用户的所有登记请求。
  • CSeq 字段
    • CSeq包括顺序号和方法(method),方法必须和它所对应的request相匹配。对于out-of-dialog的非register request,取值任意。
    • 对于dialog内的每一个新的request(如BYE,re-INVITE,OPTION),Cseq的序号加1。但是对于CANCEL,ACK除外。
    • 对于ACK而言,Cseq的序号必须与其所对应的request相同。对于CANCEL而言,Cseq的序号也必须与其cancel掉的request相同。
  • Contact字段
    • 对于非Register事务,Contact header field 主要提供了UAC或UAS的 直接联系SIP URI,UAC在发出的对话建立(out-of-dialog)INVITE请求的Contact字段中提供自己的直接联系SIP URI,在UAS收到该请求后在其发出响应的Contact字段中提供自己的直接联系SIP URI,这样在建立对话后,UA间可以通过对方的直接联系SIP URI绕过Proxy直接发送请求。  对于Register事务,表示地址绑定中的contact address(vs. address-of-record)
  • Content-Type字段
    • 主要表示发给接收器的消息体的媒体类型。如果消息体不是空的,则Content-type header field一定要存在。如果Content-type header field存在,而消息体是空的,表明该类型的媒体流长度是0。
  • Content-Length字段
    • 表示消息体的长度。是十进制数。

消息体(message body)

v=0
o=34020000002000000001 0 0 IN IP4 118.178.90.211
s=Play
c=IN IP4 118.178.90.211
t=0 0
m=video 21001 TCP/RTP/AVP 96 98 97
a=sendrecv
a=rtpmap:96 PS/90000
a=rtpmap:98 H264/90000
a=rtpmap:97 MPEG4/90000
a=setup:passive
a=connection:new
y=0200000000
  • v=0            
    • 版本号为0
  • o=34020000002000000001 0 0 IN IP4 118.178.90.211
    • 建立者用户名+会话ID+版本+网络类型+地址类型+地址
  • s=Play
    • 会话名
  • c=IN IP4 118.178.90.211
    • 连接信息:网络类型+地址类型+地址
  • t=0 0
    • 会话活动时间 起始时间+终止时间
  • m=video 21001 TCP/RTP/AVP 96 98 97
    • 媒体描述:媒体+端口+传送+格式列表
    • 音频 + 端口49432 + 传输协议RTP + 格式AVP,有效负荷0(u率PCM编码)
  • a=sendrecv
  • a=rtpmap:96 PS/90000
    • 0或多个会话属性: 属性 + 有效负荷+ 编码名称 + 抽样频率
    • a 可以有多个, 见SDP协议

 

 

标签:协议,SIP,INVITE,request,Content,字段,消息,解析
来源: https://www.cnblogs.com/wlovet/p/14445279.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有