SIP协议解析
起始行(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协议解析的更多相关文章
- 基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现(一)
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3945294.html. 上章节讲解了利用自主开发的组件SIP组件l ...
- 基于GBT28181:SIP协议组件开发-----------第二篇SIP组件开发原理
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3937590.html,qq:1269122125. 上一节中讲的S ...
- SIP协议搭建电信级VOIP/IM运营平台--架构篇(sip集群)
移动互联网的发展为整个VOIP通信行业开拓了新的战场,一时间各类即时通信软件如雨后春筝般冒了出来,再一次创造了移动互联网的发展神话.SIP协议做为音视频通信的首选标准,应用也越来越广泛. ------ ...
- SIP协议整理
本文记录开发.实现IMS项目时,整理的SIP协议基础知识:若有侵权,请告之. SIP协议 1. SIP协议简介 SIP是一个应用层的控制协议,可以用来建立.修改.和终止多媒体会话(或者会议) ...
- SIP协议分析
- SIP流程 一个标准的SIP通话流程如下: 1. A向B发送一个INVITE消息,邀请B通话. 2.B振铃,向A回复一个RING消息,通知A振铃中,A等待. 3.B提机,向A发一个OK消息, 通 ...
- SIP协议参数详解
1.1 SIP消息分类 SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切. SIP协议将Server和User Agent之间的通讯的 ...
- SIP协议 会话发起协议(一)
会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协同工作,通过Internet控制多媒体通信会话. SIP - 概述 以下是有关SIP的几点注意事项 - S ...
- 【转】SIP协议 会话发起协议
转自:https://www.cnblogs.com/gardenofhu/p/7299963.html 会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协 ...
- ts 协议解析
pes : http://wenku.baidu.com/link?url=KjcA0qXqZ1bWVQTa8i1YOmygofldSQL7Pjj-zGRw1e_6_LFmVLo5DIWF0SNwVn ...
- [转]netty对http协议解析原理
本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...
随机推荐
- [转帖]《Linux性能优化实战》笔记(22)—— 网络丢包问题分析
所谓丢包,是指在网络数据的收发过程中,由于种种原因,数据包还没传输到应用程序中,就被丢弃了.这些被丢弃包的数量,除以总的传输包数,也就是我们常说的丢包率.丢包率是网络性能中最核心的指标之一.丢包通常会 ...
- [转帖]必看!PostgreSQL参数优化
https://zhuanlan.zhihu.com/p/333201734 前不久,一个朋友所在的公司,业务人员整天都喊慢. 朋友是搞开发的,不是很懂DB,他说他们应用的其实没什么问题,但是就是每天 ...
- [转帖]HTTP 框架 Hertz 实践入门:性能测试指南
https://maimai.cn/article/detail?fid=1767401397&efid=R2_kM5y-yEUDCK88FZWrGA 干货不迷路2021 年 9 月 8 日, ...
- [转帖]Linux遇到一个内存过高的报警——释放buff/cache
前些天一直受到内存报警,过一段时间就会恢复.由于开发工作有些多,就一直没理它,但是最近几天开始有些频繁了.虽然不影响业务,但是天天报警,还是让人提心吊胆的.因此就抽了一个上午的时间去解决一下这个问题. ...
- [转帖]Linux学习14-ab报错apr_pollset_poll: The timeout specified has expired (70007)
https://www.cnblogs.com/yoyoketang/p/10255100.html 前言 使用ab压力测试时候出现报错apr_pollset_poll: The timeout sp ...
- 京东ES支持ZSTD压缩算法上线了:高性能,低成本 | 京东云技术团队
1 前言 在<ElasticSearch降本增效常见的方法>一文中曾提到过zstd压缩算法[1],一步一个脚印我们终于在京东ES上线支持了zstd:我觉得促使目标完成主要以下几点原因: ...
- webservice--WSDL文件生成本地的代理类
我们在对应第三方接口时常用:项目上右键---->服务引用---->WCF Web Service,如下图的页面----->填好url后---->转到,就可以发现服务,生成代理类 ...
- Why gRPC ?
gRPC(gRPC Remote Procedure Call)是由 Google 开发的开源 RPC 框架,它基于 HTTP/2 标准,使用 Protocol Buffers 作为接口定义语言(ID ...
- 系统Hosts文件原理和应用
Hosts的概念 Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要 ...
- go中的类型转换成interface之后如何复原
go中interface转换成原来的类型 首先了解下interface 什么是interface? 如何判断interface变量存储的是哪种类型 fmt 反射 断言 来看下interface的底层源 ...