起始行(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协议解析的更多相关文章

  1. 基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现(一)

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3945294.html. 上章节讲解了利用自主开发的组件SIP组件l ...

  2. 基于GBT28181:SIP协议组件开发-----------第二篇SIP组件开发原理

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3937590.html,qq:1269122125. 上一节中讲的S ...

  3. SIP协议搭建电信级VOIP/IM运营平台--架构篇(sip集群)

    移动互联网的发展为整个VOIP通信行业开拓了新的战场,一时间各类即时通信软件如雨后春筝般冒了出来,再一次创造了移动互联网的发展神话.SIP协议做为音视频通信的首选标准,应用也越来越广泛. ------ ...

  4. SIP协议整理

    本文记录开发.实现IMS项目时,整理的SIP协议基础知识:若有侵权,请告之. SIP协议 1.      SIP协议简介 SIP是一个应用层的控制协议,可以用来建立.修改.和终止多媒体会话(或者会议) ...

  5. SIP协议分析

    - SIP流程 一个标准的SIP通话流程如下: 1. A向B发送一个INVITE消息,邀请B通话. 2.B振铃,向A回复一个RING消息,通知A振铃中,A等待. 3.B提机,向A发一个OK消息,  通 ...

  6. SIP协议参数详解

    1.1  SIP消息分类 SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切. SIP协议将Server和User Agent之间的通讯的 ...

  7. SIP协议 会话发起协议(一)

    会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协同工作,通过Internet控制多媒体通信会话. SIP - 概述 以下是有关SIP的几点注意事项 - S ...

  8. 【转】SIP协议 会话发起协议

    转自:https://www.cnblogs.com/gardenofhu/p/7299963.html 会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协 ...

  9. ts 协议解析

    pes : http://wenku.baidu.com/link?url=KjcA0qXqZ1bWVQTa8i1YOmygofldSQL7Pjj-zGRw1e_6_LFmVLo5DIWF0SNwVn ...

  10. [转]netty对http协议解析原理

    本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...

随机推荐

  1. [转帖]如何监控Redis性能指标(译)

    Redis给人的印象是简单.很快,但是不代表它不需要关注它的性能指标,此文简单地介绍了一部分Redis性能指标.翻译过程中加入了自己延伸的一些疑问信息,仍然还有一些东西没有完全弄明白.原文中Metri ...

  2. 基于OpenJDK部署clickhouse-local镜像的快捷方法

    基于OpenJDK部署clickhouse-local镜像的快捷方法 摘要 前期搭建了一套基于OpenJDK的Clickhouse的服务端的镜像 可以简单使用dbeaver进行连接与使用. 后来发现需 ...

  3. [转帖]Python连接Oracle数据库进行数据处理操作

    https://www.dgrt.cn/a/2259443.html?action=onClick 解决以下问题: Python连接Oracle数据库,并查询.提取Oracle数据库中数据? 通过Py ...

  4. [转帖]使用JAYDEBEAPI同时连接两个不同数据库(ORACLE+MYSQL)的问题

    jaydebeapi 同时连接两种数据库 在使用jaydebeapi只连接一种数据库时,是没问题的,但是如果需要同时连接两种数据库,比如同时连接oracle和mysql 例如以下测试代码:   imp ...

  5. 【转帖】Linux性能优化(四)——BCC性能监控工具

    一.BCC简介 1.BCC简介 BCC是一个Python库,简化了eBPF应用的开发过程,并收集了大量性能分析相关的eBPF应用.BCC为BPF开发提供了不同的前端支持,包括Python和Lua,实现 ...

  6. 【JS 逆向百例】HN某服务网登录逆向,验证码形同虚设

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 逆向目标 目标:某政务服务 ...

  7. 在Protocol Buffers中导入当前目录中的.proto文件

    在protobuf中导入当前目录中的.proto文件时,可以使用相对路径.相对路径是相对于当前.proto文件所在的目录来引用其他.proto文件. 假设有以下目录结构: my_project/ |- ...

  8. Unity字体和画面花屏处理

    字体花屏和相机渲染花屏,这两者的表现有明显的差异. 字体花屏 字体花屏是持续性的,直到组件被刷新,或字体图集被刷新.目前在我们项目中当游戏启动时,就会填充游戏用到的所有字符到贴图中,所以并没有遇到此问 ...

  9. Softmax偏导及BP过程的推导

    Softmax求导 其实BP过程在pytorch中可以自动进行,这里进行推导只是强迫症 A Apart证明softmax求导和softmax的BP过程 本来像手打公式的,想想还是算了,引用部分给出la ...

  10. Java 如何在日志中优雅的打印 Exception

    一.使用 log 库打印 使用 log 库如 slf4j @Slf4j public class MyDemo { public void demo() { try { int a = 10 / 0; ...