RFC学习笔记 -- 5245 ICE & 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)

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

一、RFC 5245 ICE 学习笔记

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

1, offer/answer model

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

2, ICE Step:

1) 产生候选地址(1.公网 2.NAT反射 3.Relay转发地址) Generate candidates

2) 本地对端交换候选地址,完成连接性检查。          Local & Peer exchange candidates via SDP, then do connectivity checks

3) 根据优先级进行排序                              Sorting Candidates

4) 冻结候选地址                                    Frozen Candidates

5) 安全性检查                                      Security for Checks

6) 结束ICE过程                                     Concluding ICE

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

3. STUN  (request/response model)

1) binding message format

2) binding request/binding response

3) 目前定义了三种STUN用途:

Interactive Connectivity Establishment(ICE)[MMUSIC-ICE],交互式连接建立

Client-initiated connections for SIP [SIP-OUTBOUND],用于SIP的客户端初始化连接

NAT Behavior Discovery [BEHAVE-NAT],NAT行为发现

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

4. TURN

1)Relayed Transport Address:TURN服务器上的传输地址,用于客户端和对端中继数据。

TURN Server Transport Address:TURN服务器上的传输地址,用于客户端发送STUN消息给服务器。

Peer Transport Address:服务器看到的对端的传输地址,当对端是在NAT后面,则是对端的服务器反射传输地址。

Allocation:通过Allocate请求将中继传输地址提供给客户端,除了中继状态外,还有许可和超时定时器等。

5-tuple:五元组,包括客户端IP地址和端口,服务器IP地址和端口和传输协议(包括UDP、TCP、TLS)的组合。

Channel:通道号与对端传输地址的关联,一旦一个通道号与一个对端的传输地址绑定,客户端和服务器就能够利用带宽效应更大的通道数据消息来交换数据。

Permission:一个对端允许使用它的IP地址和传输协议来发送数据到TURN服务器,服务器只为从对端发来的并且匹配一个已经存在的许可的流量中继到相应的客户端。

Realm:服务器内用于描述服务器或内容的一个字符串,这个realm告诉客户端哪些用户名和密码的组合可用于认证请求。

Nonce:服务器随机选择的一个字符串,包含在报文摘要中。为了防止中继攻击,服务器应该有规律的改变这个nonce。

2)方法:

0x003    Allocate

0x004    Refresh

0x006    Send

0x007    Data

0x008    CreatePermission

0x009    ChannelBind

二、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-10 02:37:08

RFC学习笔记 -- 5245 ICE & 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) 冻结候选地址                              

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)

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

css 学习笔记 一

 css学习笔记1 1.选择特定元素的选择符: 上下文选择符 标签1 标签2 {声明}      其中标签2是要选择的目标,而只有在标签1是其祖先元素(不一定是父元素)的情况下才会被选中.     css代码: body代码: 理解:section标签 article标签就属于上下文的关系,即article为section的后代,只有应用了section的样式,才能应用article的样式.注意:继承关系中的空格问题,有空格的表示祖先与后代的关系,css写法,body的代码为,说明页面样式表文件

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.

&lt;老友记&gt;学习笔记

这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的情路坎坷,事业成败和生活中的喜怒哀乐,无时无刻不牵动着彼此的心,而正是正平凡的点点滴滴,却成为最令人感动与留恋的东西. 人物:1.瑞秋•格林(RACHEL GREENE)由珍妮佛•安妮斯顿(Jennifer Aniston)扮演 瑞秋是莫妮卡的高中同学,在与牙医未婚夫的婚礼上脱逃至莫妮卡处. 2.罗

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服务器发送指令,执行

【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠

碰撞与休眠 上一篇笔记说过,当给予游戏对象刚体这个组件以后,那么这个组件将存在碰撞的可能性.一旦刚体开始运动,那么系统方法便会监视刚体的碰撞状态.一般刚体的碰撞分为三种:进入碰撞,碰撞中,和碰撞结束.关于休眠可以理解成为让游戏对象变成静止状态.如果给某个游戏对象休眠的状态,那么这个物体将立马静止,不再运动. 碰撞 首先学习下碰撞几个重要的方法: OnCollisionEnter(  ):刚体开始接触的时候,立即调用. OnCollisionStay(  ):碰撞过程中,每帧都会调用此方法,直到撞