voip开发入门->SIP协议学习日记01


<h4>一、SIP简介</h4>
<h6>1. 什么是SIP?</h6>

会话初始化协议 SIP( Session Initiation Protocol ,RFC3261)是一个基于文本的处于应用层的控制协议,可以用来创建,修改和终止会话。具有简练、开放、兼容和可扩展等特性。

2. SIP的作用?

SIP并不能提供具体的服务,它只是在多媒体框架中的一部分,它与实时数据传输协议(RTP)实时流协议(RSTP)会话描述协议(SDP)等其他协议一起组成一个完整的多媒体架构,在这个多媒体架构中SIP相当于交通工具。

3. SIP是如何传输的?

SIP是基于TCP/IP协议进行数据传输的,因此可以通过UDP传输(较常用),也可以同TCP传输。

4. SIP的组成结构

从结构上来说SIP协议由一组相对无关的处理层次组成,这些层次之间只有松散的关系。 事务用户层(Transaction User)->事物层(Transaction)->传输层(Transport)->语法和编码层(Syntax and Encoding)


<h4>二、SIP常用术语</h4>

1.常用术语概述

** <1>会话(Session)**,就是一个多媒体发送方和接收方组成的集合。通常意义下可以理解为一次打电话从摘机、拨号、通话、挂机这一系列动作包含的所有信号集合。
<2>对话(Dialog),一个对话是持续一段时间的两个UA之间的端到端的SIP关系。用Call-ID,local tag(本地tag),remote tag(对方tag)来标志一个对话。
<3>事务(Transaction),是在客户端和服务端的事件,包括了从第一个由客户端发送到服务端的请求,到最后一个(非1xx)服务端向客户端发出的终结应答。一般通过Via头域中的branch参数和Cseq头域的方法参数来标志一个事务。
<4>用户代理 UA(User Agent ),一个逻辑实体的概念,包含UAC和UAS,仅存在于事务中。UAC( User Agent Client ):用户代理客户端,用于发送SIP请求。UAS( User Agent Server ):用户代理服务器,用于对SIP请求做响应的。
<5>背靠背的用户代理 B2BUA(Back-to-Back UserAgent),是直接的UAC和UAS的串连,要接收和处理请求,为了决定如何处理这个请求,又要发出一个请求,同时需要维持对话状态。
<6>呼叫(Call),它是指在端点之间一些通讯行为,通常用于建立多媒体对话。
<7>请求(Request),一个由客户端发到服务端得SIP信息,用于执行特定的功能。
<8> 应答(Response),一个由服务端发到客户端得SIP信息。用来标志从客户端发往服务端得请求处理的情况。
<9>消息(Message),SIP元素之间传送的协议数据就是消息。
<10> 方法(Method),是向服务器请求处理的主要功能。


<h4>三、协议信息</h4>
1.请求信息类型

INVITE:发起会话请求,邀请用户加入一个会话,会话描述含于信息体中。
BYE:结束会话
ACK:用于对请求消息的响应消息进行确认。
OPTIONS:用于请求能力信息。
CANCEL:用于释放未建立的呼叫。
REGISTER:用户SIP网络服务器登记用户位置。

2.响应消息状态码

1xx:临时响应,表示已经接受到请求信息,正对其进行处理;
2xx:成功响应,表示请求已经被接受、处理并被成功受理;
3xx:重定向响应,表示为完成请求信息需要采取进一步的行动;
4xx:客户机错误,表示请求消息中包含语法错误或者SIP服务器不能完成对该请求消息的处理;
5xx:服务器错误,表示SIP服务器故障不能完成对正确消息的处理。
6xx:全局故障,表示请求不嗯给你在任何SIP服务器上实现。

3.请求消息和响应消息的格式

SIP一般消息 = 起始行
*消息头
CRLF(空行)

               [消息体]

起始行=请求行/状态行(SIP请求消息起始行是请求行(Request-Line),响应消息起始行是状态行(Status-Line))。
请求消息头至少包括FromToCSeqCallMax-ForwardsVia六个字段他们是构建SIP消息的基本单元。
消息体一般采用SDP(Session Description Protocol)协议,会话描述协议。

4.SIP请求实例

INVITE sip:5120@192.168.36.180 SIP/2.0
Via: SIP/2.0/UDP 192.168.6.21:5060;branch=z9hG4bK776asdhds
From: sip:5121@192.168.6.21;tag=1928301774
To: sip:5120@192.168.36.180
Call-ID: c2943000-e0563-2a1ce-2e323931@192.168.6.21
CSeq: 100 INVITE
Max-Forwards: 70
Contact: sip:5121@192.168.6.21:5060
Content-Type: application/sdp
Content-Length: 142
Body(略)

其中Request Line包括方法名,Request URL,协议版本
下面的为头域部分,每个头域格式为,域名+“:”+域值。
头域后面加一个空行,然后是消息体部分(如果有的话)

需要注意几点
一个合法的SIP请求的头域部分必须至少包含如下6个头域:Via,From,To,Call-ID,Cseq,Max-Forwards。
整个消息中每行都是以回车换行(CRLF)结束。
头域的域名是大小写不敏感的,一般习惯第一个字母大写;域值也是大小写不敏感的,除非用引号引起来。
冒号左右对加多少空格没有限制,一般建议在冒号和值之间加一个空格(SP)即可。
在没有body时,头域的后面也要加一个空行。

5.SIP应答实例

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.6.21:5060;branch=z9hG4bK776asdhds
From: sip:5121@192.168.6.21;tag=1928301774
To: sip:5120@192.168.36.180;tag=34246673
Call-ID: c2943000-e0563-2a1ce-2e323931@192.168.6.21
CSeq: 100 INVITE
Max-Forwards: 70
Contact: sip:5120@192.168.36.180:5060
Content-Type: application/sdp
Content-Length: 164
Body(略)

其中Status Line包括协议版本,状态码,状态说明
其他的头域除了Contact要改为自己的地址端口,Content-Length的值
为自己实际的body大小意外,其他可从收到的请求中复制。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,515评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • HTTP概述 超文本传输协议(HTTP,HyperText Transfer Protocol) 是互联网上应用最...
    曹渊说创业阅读 3,790评论 2 61
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 8,295评论 6 152
  • 母亲犹如向日葵,总是向着阳光在背后默默付出;母亲犹如香莲,出淤泥而不染;母亲犹如牡丹,端庄淡雅。而我的母亲犹如腊梅...
    天空放晴le阅读 244评论 0 1