RFC 3261 SIP学习笔记

RFC 3261 SIP

1.SDP (rfc 4566)

1)用于交换参数

2)内容分三部分Session description, Time description and Media description (m-line)

3)SDP用于描述会话的媒体属性,通常放在SIP协议的消息体中携带,基于文本的编码方式

format:

Session description

v=  (protocol version)

o=  (originator and session identifier)

s=  (session name)

i=* (session information)

u=* (URI of description)

e=* (email address)

p=* (phone number)

c=* (connection information -- not required if included in

all media)

b=* (zero or more bandwidth information lines)

One or more time descriptions ("t=" and "r=" lines; see below)

z=* (time zone adjustments)

k=* (encryption key)

a=* (zero or more session attribute lines)

Zero or more media descriptions

Time description

t=  (time the session is active)

r=* (zero or more repeat times)

Media description, if present

m=  (media name and transport address)

i=* (media title)

c=* (connection information -- optional if included at

session level)

b=* (zero or more bandwidth information lines)

k=* (encryption key)

a=* (zero or more media attribute lines)

2. SIP

1) request/respones的应用层文本协议

SIP和XMPP都是应用层的协议,主要用来在互联网上发送语音和即时通信IM。

RFC3261定义了SIP,RFC3920定义了XMPP。XMPP来自即时通信系统,而SIP类似语音和视频通信。

XMPP增加了Jingle扩展协议来支持面向连接的业务,如语音和视频;而SIP增加了SIMPLE协议来支持即时通信业务。

SIP协议是一个Client/Sever协议,因此SIP消息分两种:请求消息和响应消息。

请求消息是SIP客户端为了激活特定操作而发给服务器端的消息。

2). Request:

常用的SIP请求消息如下:

INVITE:表示主叫用户发起会话请求,邀请其他用户加入一个会话。也可以用在呼叫建立后用于更新会话(此时该INVITE又称为Re-invite)。

ACK:客户端向服务器端证实它已经收到了对INVITE请求的最终响应。

BYE:表示终止一个已经建立的呼叫。

CANCEL:表示在收到对请求的最终响应之前取消该请求,对于已完成的请求则无影响。

REGISTER:表示客户端向SIP服务器端注册列在To字段中的地址信息。

OPTIONS:表示查询被叫的相关信息和功能。

----------------------------------------------------------------------------

Example:

INVITE sip:[email protected] SIP/2.0

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds

Max-Forwards: 70

To: Bob <sip:[email protected]>

From: Alice <sip:[email protected]>;tag=1928301774

Call-ID: [email protected]

CSeq: 314159 INVITE

Contact: <sip:[email protected]>

Content-Type: application/sdp

Content-Length: 142

----------------------------------------------------------------------------

3). Respones:

100试呼叫(Trying)

180振铃(Ringing)

181呼叫正在前转(Call is Being Forwarded)

200成功响应(OK)

302临时迁移(Moved Temporarily)

400错误请求(Bad Request)

401未授权(Unauthorized)

403禁止(Forbidden)

404用户不存在(Not Found)

408请求超时(Request Timeout)

480暂时无人接听(Temporarily Unavailable)

486线路忙(Busy Here)

504服务器超时(Server Time-out)

600全忙(Busy Everywhere)

----------------------------------------------------------------------------

Example:

SIP/2.0 200 OK

Via: SIP/2.0/UDP server10.biloxi.com

;branch=z9hG4bKnashds8;received=192.0.2.3

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com

;branch=z9hG4bK77ef4c2312983.1;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com

;branch=z9hG4bK776asdhds ;received=192.0.2.1

To: Bob <sip:[email protected]>;tag=a6c85cf

From: Alice <sip:[email protected]>;tag=1928301774

Call-ID: [email protected]

CSeq: 314159 INVITE

Contact: <sip:[email protected]>

Content-Type: application/sdp

Content-Length: 131

----------------------------------------------------------------------------

时间: 2024-10-27 04:54:30

RFC 3261 SIP学习笔记的相关文章

RFC 5245 ICE学习笔记

RFC 5245 ICE  1, offer/answer model 2, ICE Step: 1) 产生候选地址(1.公网 2.NAT反射 3.Relay转发地址) Generate candidates 2) 本地对端交换候选地址,完成连接性检查.(用RTP包,一个四次握手的过程,如下图:) 3) 根据优先级进行排序                              Sorting Candidates 4) 冻结候选地址                              

SIP学习笔记(转)

本文转发自:http://blog.chinaunix.net/uid-20655530-id-1589483.html 学习 SIP 协议最快捷的方法是通过范例来学习, 找到了一个完整的呼叫流程,let's go! INVITE 主叫方Tesla首先发起 INVITE 消息到被叫方Marconi.INVITE 消息包含会话类型和一些呼叫所必须的参数.会话类型可能是单纯的语音,也可能是网络会议所用的多媒体视频,还可能是游戏会话.下面是消息体范例,我们来详细分析各个字段的意义. INVITE si

RFC 6120 XMPP学习笔记

XMPP - Extensible Messaging and Presence Protocol 1. 中文版3920 http://wiki.jabbercn.org/RFC3920 2. 大部分客户端通过 TCP 连接直接连到服务器,并通过XMPP获得由服务器以及联合服务器所提供的全部功能.多个不同资源(比如不同的设备和地点)的客户端可以同时登陆并且并发的连接到一个服务器,每个不同资源的客户端通过XMPP地址的资源标识符来区分(比如<[email protected]/home> 和 &

RFC学习笔记 -- 5245 ICE &amp; 3261 SIP

---------------------------------------------------------------------------- RFC list: 3550 (rtp/rtcp)  - 3711(srtp) - 5245 (ice) - 3261(sip) - 4575(sip-conference) - 4566(sdp) 5389 (stun) - 5766(turn) - 6455(websocket) - 6865(fec) - 2616(http) -----

ICMP:Internet控制报文协议实现学习笔记

ICMP是网络层的一个协议,可以看作IP协议的附属协议,因为它主要被IP用来与其他主机或路由器交换错误报文及其他需要注意的信息.当然,更高层协议(tcp/udp)甚至有些用户进程也可能用到ICMP报文 注册ICMP协议和ICMP协议的处理涉及以下文件: net/ipv4/icmp.c ICMP协议处理入口 net/ipv4/af_inet.c 网络层和传输层接口 ICMP报文结构 参见tcp/ip协议学习笔记(5)Internet Control Message Protocol(ICMP) 注

【转】TCP/IP详解学习笔记(二)

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.11.0    *               255.

python学习笔记[3]-邮件的发送

本文摘抄自:http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.html 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:    1.smtplib模块 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])   SMTP类构造函数,表示与SMTP服务器之间的连接,通过这个连接可以向smtp服务器发送指令,执行

WebRTC学习笔记_Demo收集

1.     WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源代码中添?了webrtc源代码,放在/external/webrtc/,可是Android并没实用到它,更没有被浏览器使用.当时试图在Android 2.3(Gingerbread)高通平台的手机上用H.264 硬件codec替换掉WebRTC缺省使用的VP8软codec,费了不少劲勉强换掉后效果非常差仅仅得放弃. 近期得知Google最新版的Chrome

Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)

所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的垂直搜索引擎,专门为用户提供团购.优惠券的检索:同时存在一个通用的搜索引擎,比如百度,通用搜索引擎希望能够识别出一个Query是否具有O2O检索意图,如果有则调用O2O垂直搜索引擎,获取结果作为通用搜索引擎的结果补充. 我们的目的是学习出一个分类器(classifier),分类器可以理解为一个函数,