【Android开发API】通信 - SIP协议 - SIP
- 格式:pdf
- 大小:408.63 KB
- 文档页数:6
SIP协议主要消息协议名称:SIP协议主要消息一、引言本协议旨在详细描述SIP(Session Initiation Protocol,会话初始协议)的主要消息,包括其定义、结构和功能。
SIP是一种用于建立、修改和终止多媒体味话的应用层协议,广泛应用于VoIP(Voice over Internet Protocol,互联网语音通信)和实时通信系统中。
二、协议概述SIP协议主要通过请求和响应的方式进行通信,使用文本格式的消息进行交互。
SIP消息由起始行、头部字段和消息体组成,其中起始行包含请求或者响应的方法、URI(Uniform Resource Identifier,统一资源标识符)和SIP版本信息。
头部字段包含了关于消息的元数据,而消息体则携带了具体的数据内容。
三、主要消息类型1. INVITE:该消息用于建立会话,发起方向被叫方发送INVITE请求,包含了被叫方的SIP地址和媒体描述信息。
2. ACK:该消息用于确认INVITE请求的接收,发起方在收到200 OK响应后发送ACK请求,表示会话建立成功。
3. BYE:该消息用于终止会话,可以由任意一方发送,对方收到BYE请求后会发送200 OK响应,表示会话终止。
4. CANCEL:该消息用于取销未完成的请求,普通用于取销INVITE请求,以便重新发起新的请求。
5. REGISTER:该消息用于注册用户地址,用户向服务器发送REGISTER请求,以便在服务器上注册自己的SIP地址。
6. OPTIONS:该消息用于查询服务器的能力,普通用于检测对方是否在线或者支持特定功能。
7. INFO:该消息用于传输非实时信息,如传输DTMF(Dual-tone Multi-frequency)信号等。
四、消息格式和示例1. INVITE消息格式:```INVITE sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhdsMax-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314159 INVITEContact: <sip:bob@example>Content-Type: application/sdpContent-Length: 142v=0o=bob 2890844526 2890844526 IN IP4 192.0.2.1s=-c=IN IP4 192.0.2.1t=0 0m=audio 49172 RTP/AVP 0a=rtpmap:0 PCMU/8000```2. ACK消息格式:```ACK sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314159 ACKContact: <sip:bob@example>Content-Length: 0```3. BYE消息格式:```BYE sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314160 BYEContact: <sip:bob@example>Content-Length: 0```4. CANCEL消息格式:```CANCEL sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314159 CANCELContact: <sip:bob@example>Content-Length: 0```5. REGISTER消息格式:```REGISTER sip:example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:bob@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314161 REGISTERContact: <sip:bob@example>Expires: 3600Content-Length: 0```6. OPTIONS消息格式:```OPTIONS sip:example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314162 OPTIONSContact: <sip:bob@example>Content-Length: 0```7. INFO消息格式:```INFO sip:alice@example SIP/2.0Via: SIP/2.0/UDP 192.0.2.1;branch=z9hG4bK776asdhds Max-Forwards: 70To: <sip:alice@example>From: <sip:bob@example>;tag=1928301774Call-ID: a84b4c76e66710CSeq: 314163 INFOContact: <sip:bob@example>Content-Type: application/dtmf-relayContent-Length: 18Signal=1Duration=100```五、总结SIP协议的主要消息包括INVITE、ACK、BYE、CANCEL、REGISTER、OPTIONS和INFO。
什么是SIP协议2007年9月3日 13:30 通信世界网评论( 0) 阅读:次什么是SIP协议会话起始协议SIP(SessionInitiationProtocol)被描述用来生成,修改和终结一个或多个参与者之间的会话,是由IETF于1999年提出的一个基于IP网络中实现实时通信应用的一种信令控制协议。
它打破了传统电信业务的传输模式,采用基于因特网的准则,将蜂窝系统与因特网应用融合在一起提供基于IP的多媒体业务,具有开放性,可扩展性,安全性的特点。
3G PP已将SIP作为第三代移动通信系统多媒体域的控制协议。
经常出现这种情况,一个用户在多个位置之间移动,如一个公司职员,可能处在公司,家里或是咖啡厅等位置。
为了给用户提供方便的移动性,SIP 使用统一资源定位符URI(UniformResourceIdentifier)来表示用户。
通常由一个域名加上用户名组成,例如SIP:John@ ,类似于电子邮件地址。
SIP URI只是用来唯一标示用户的逻辑标记符,用户注册时它将与用户的IP地址绑定并记录到定位服务器。
在SIP中,系统采用了因特网常用的客户机/服务器结构,由用户代理和服务器两大部分组成。
其中用户代理又分为用户代理客户(UAC:UserAgentClient)和用户代理服务器(UAS:UserAgent Server)两种。
UAC用来发起会话请求,UAS用来接受并响应会话请求。
这两者只是逻辑上的功能,实际上网络终端应同时具备这两种功能,既能发起会话,又能接受、相应会话。
服务器分为代理服务器(Proxy Server)、重定向服务器(Redirected Server)和注册服务器(Registrar)。
图1 SIP的网络体系结构图1描述了SIP的基本网络体系结构。
用户接入网络后首先要向注册服务器注册,注册信息写入定位服务器中(定向服务器不属于SIP网元,只是一个数据库)。
当用户代理客户UAC要发起呼叫时,它一般将呼叫请求消息发送给本域的出向代理服务器。
SIP协议深入介绍网络事业部软交换开发部王笑蓉1.SIP简介SIP(Session Initiation Protocol)是应用层控制协议,可以创建,修改,以及终止一个多媒体会话。
它具有以下几个主要功能:Userlocation:确定通信中的终端位置availability:确定被叫方是否愿意进行通信Usercapabilities:确定用于通信的媒体类型及参数Usersetup:建立会话各方的会话参数Sessionmanagement:终止会话,修改会话参数SessionSIP协议需要和其他IETF协议一起来构成一个完整的多媒体通信构架。
这些协议有:RTP(Real Time Transport):传输实时数据,提供QoS反馈信息Streamingprotocol):控制流媒体的传送TimeRTSP(RealMEGACO(Media Gateway Control Protocol):控制媒体网关SDP(Session Description Protocol):描述多媒体会话1.1SIP协议结构SIP协议的行为模型可以用几个分层的相对独立处理阶段来描述:1.语法及编码层2.传输层定义了客户端如何通过网络发送请求及接收响应,以及服务器端如何接收请求并发送响应。
所有SIP逻辑实体都包含此层。
3.事务层事务层处理应用层请求或响应消息的重发,响应与请求的匹配以及应用层的超时。
一个SIP事务由一个请求和对该请求的所有响应构成,这些响应分临时响应(provisional response)和最终响应(final response)。
对于INVITE事务,对应于非2xx响应的ACK确认消息也属于该事物,而对应于2xx响应的ACK确认消息则不属于该INVITE事物。
UA以及stateful proxy均包含事务层,而stateless proxy 不包含事务层一个事物根据逻辑功能分为客户事务(client transaction)和服务器事务(server transaction)。
主题:基于Android平台Sip协议的会话通信第一次评审报告开发主机平台:WindowsXP目标平台:Android 2.3会话终端或更高版本一、项目需求:1. 会话终端(双向)1> 会话终端向目标终端发起呼叫/监听被叫,经服务器验证注册,采用Sip协议实现语音通信。
2> 呼叫、被叫双向通过建立UDP或TCP/IP连接发送、接受视频数据,通过边采集边上传功能,实现视频会话。
二、成果演示:搭建Sip服务器,分配sip账号,由中兴V880端9003呼叫PC机9001,可实现语音视频会话。
三、开发思路及问题处理:会话终端:1> 简单流程图2> 开发思路2.1 实现终端之间的语音通信功能,.sip包中有几个类和接口,用来实现基于sip协议的语音会话功能,如下SDK API:创建SharedPreferences,用来存放sip账号、服务器等信息;创建一个SipProfile,用来配置管理sip账号、服务器等信息;创建一个SipManager实例,用来访问、打开sip相关服务,注册验证,根据sipAddress 建立音频电话;注册监听:sipmanager.setRegistrationListener(sipprofile.getUriString(), new SipRegistrationListener(){与服务器交互触发以下三个方法:a:登记请求发送,与服务器验证信息b:注册成功c: 注册失败});监听呼叫:SipAudioCall.Listener listener=new SipAudioCall.Listener(){a:会话建立时调用(启动音频、调整为可讲话模式、切换静音等语音设置)b:会话结束时调用}监听被叫:c:来电显示2.2直接从Android的MediaRecorder里面已经生成好的视频数据中提取出H263/H264数据,然后将传递的RTP视频数据流封装成RTSP数据流传递给终端的videoview实现视频会话。
sip协议详解SIP协议详解。
SIP(Session Initiation Protocol)是一种应用层控制协议,用于建立、修改和终止多媒体会话,如VoIP电话、视频会议和即时消息。
它是一种基于文本的协议,采用类似HTTP的请求-响应模型。
SIP协议的设计目标是简单、灵活、可扩展和易于实现。
SIP协议的核心功能包括会话管理、用户定位、呼叫建立和终止。
它使用统一资源标识符(URI)来标识终端用户或终端设备,允许用户在不同网络之间进行无缝切换。
SIP还支持呼叫保持、呼叫转移、多方通话和媒体协商等高级功能。
SIP协议的消息格式包括请求消息和响应消息。
请求消息由方法、URI、协议版本和消息头组成,用于向服务器发起请求。
响应消息由协议版本、状态码、原因短语和消息头组成,用于对请求进行响应。
常见的SIP方法包括INVITE(邀请)、ACK(确认)、BYE(结束)、CANCEL(取消)和REGISTER(注册)等。
SIP协议的工作流程可以简单描述为,用户代理向代理服务器发送请求,代理服务器根据用户的请求进行路由选择,最终找到被叫用户的位置并向其发送请求,被叫用户接受请求后进行响应,双方建立会话并进行媒体传输,会话结束后发送BYE消息进行终止。
SIP协议的可扩展性是其设计的重要特点之一。
SIP允许通过扩展头字段和方法来支持新的功能和应用,因此可以满足不断变化的通信需求。
此外,SIP还与其他协议如SDP(Session Description Protocol)、RTP(Real-time Transport Protocol)和RTCP(Real-time Control Protocol)等配合使用,实现多媒体会话的建立和传输。
总的来说,SIP协议作为一种开放、灵活的多媒体会话控制协议,被广泛应用于VoIP、视频会议、即时消息等通信领域。
它的设计简单、功能丰富、可扩展性强,为多媒体通信提供了可靠的基础。
随着通信技术的不断发展,SIP协议将继续发挥重要作用,推动通信行业的进步和创新。
————SIP协议详解————超全超清精编版目录第3章SIP协议3.1 概述3.1.1 基本概念3.1.2 相关术语3.1.3 协议栈结构3.1.4 SIP协议的应用3.2 协议消息3.2.1 消息类型3.2.2 消息结构3.3 基本消息流程3.3.1 SIP用户注册流程3.3.2 成功的SIP用户呼叫流程3.3.3 成功的SIP中继呼叫流程3.3.4 成功的SIP-T中继呼叫流程第3章SIP协议3.1 概述3.1.1 基本概念会话启动协议SIP(Session Initiation Protocol)是由IETF提出并主持研究的一个在IP网络上进行多媒体通信的应用层控制协议,它被用来创建、修改、和终结一个或多个参加者参加的会话进程。
这些会话包括Internet 多媒体会议、Internet电话、远程教育以及远程医疗等。
即所有的因特网上交互式两方或多方多媒体通信活动,统称为多媒体会话。
参加会话的成员可以通过组播方式、单播联网方式或者两者结合的方式进行通信。
SIP协议是一个正在发展和不断研究中的协议。
一方面,它借鉴了其他Internet标准和协议的设计思想,在风格上遵循因特网一贯坚持的简练、开放、兼容和可扩展等原则,并充分注意到因特网开放而复杂的网络环境下的安全问题。
另一方面,它也充分考虑了对传统公共电话网的各种业务,包括IN 业务和ISDN业务的支持。
利用带有会话描述的SIP邀请消息来创建会话,以使参加者能够通过SIP交互进行媒体类型协商。
它通过代理和重定向请求用户当前位置,以支持用户的移动性。
用户也可以登记它们的当前位置。
SIP协议独立于其他会议控制协议,它在设计上独立于下面的传输层协议,因此可以灵活方便地扩展其他附加功能。
SIP作为一个应用层的多媒体会话信令协议,可以被用来发起一个会话进程、在会话中邀请其他参加者加入会议,会话本身可以通过基于组播协议的会话通告协议(SAP)、电子邮件、网页通告、以及轻量级号薄访问协议(LDAP)等方式预先通告各个可能的参加者。
几种开源SIP协议栈对比1.PJSIP:PJSIP是一个强大而灵活的开源SIP协议栈,提供了全面的SIP协议支持以及音频、视频、实时通信等功能。
它使用C语言编写,具有跨平台的特性,支持多种操作系统和开发环境,如Windows、Linux、macOS等。
PJSIP提供了简单易用的API,使开发者能够快速构建VoIP应用程序。
2. Linphone:Linphone是一个流行的开源SIP协议栈,支持语音、视频、实时消息等多媒体通信功能。
它使用C语言编写,可跨平台运行于多种操作系统和设备,如Windows、Linux、iOS和Android。
Linphone具有丰富的功能和友好的用户界面,让开发者和用户能够轻松地构建和使用VoIP应用程序。
3. Doubango:Doubango是一个高性能的开源SIP协议栈,专注于提供低延迟和高质量的音频和视频通信服务。
它使用C++语言编写,提供了跨平台的支持,可运行于不同的操作系统和设备。
Doubango提供了可扩展的API,使开发者能够快速构建各种实时通信应用程序。
4. Sofia-SIP:Sofia-SIP是一个轻量级的开源SIP协议栈,专注于提供简单和可移植的SIP协议支持。
它使用C语言编写,具有可扩展性和灵活性,可适应不同的应用需求。
Sofia-SIP支持多种操作系统和开发环境,如Linux、Windows、macOS和iOS等。
5.JsSIP:JsSIP是一个基于JavaScript的开源SIP协议栈,专为Web应用程序而设计。
它使用纯粹的JavaScript语言编写,运行于现代的Web浏览器环境中。
JsSIP提供了易于使用的API,使开发者能够在Web应用程序中集成SIP功能,实现浏览器间的实时通信。
综上所述,开源SIP协议栈提供了各种选择,适用于不同的应用需求和开发环境。
无论是构建VoIP应用程序还是实现WebRTC等实时通信功能,开发者都可以根据自身需求选择适合的开源SIP协议栈来实现他们的目标。
SIP协议简介SIP(Session Initiation Protocol ,RFC 3261)是由IETF (国际互联网标准制定组织)制定的面向Internet 会议和电话的信令协议。
SIP是一个应用层的协议,可以建立,修改或者中止多媒体会话或者呼叫。
它是一个基于ASCII的端到端的协议,它实际上是在因特网上提供“约会”服务。
用来实现VoIP的开放协议,最常用的有三种,SIP、MGCP(Media Gateway Control Protocol)和H.323。
SIP协议是专门为IP 电话,尤其是结合Internet 设计的协议,同传统的H.323 协议相比,SIP 拥有明显的优越性:优异的可扩展性--大大提高了系统的处理能力;与Internet 紧密结合--使通讯更加轻松便捷的;卓越的开放性--不仅能够对手机、PDA 等移动设备提供良好的支持,对于在线即时交流、语音和视频数据传输等多媒体应用也能够很好地完成。
SIP协议的特性和优势特性优势简洁性SIP的协议栈比其它的VoIP协议都要小。
SIP可以看作是一个简单的工具箱,利用它便于实现智能终端、网关、进程和客户端软件。
可扩展性端到端(点到点)的结构,使得它比较容易扩展。
当要增加新的用户到基于SIP协议的系统中时,与其它的VoIP协议相比,需要增加的软件和硬件要少得多。
分布式的功能非集中式的智能,这样可以在每个组件中实现更多的功能。
而要修改某个组件时,对系统其余部分的影响很小。
在以太网上,两个SIP电话机可以直接互相呼叫,而不需要系统中任何其它服务模块的帮助。
当网络中有多于二个电话机时,系统中的其它模块就发挥作用了。
支持因特网基于SIP的系统,可以利用因特网不断增长的优势。
转换网关可以将基于SIP的系统连接到公众电话网(PSTN)上去,而不用被历史遗留的标准所阻碍。
与SIP兼容的协议SIP协议可以单独地工作,也可以与下面的协议一起工作。
协议缩写协议名字描述DHCPDynamic Host Configuration Protocol动态主机配置协议,帮助系统自动地配置网络IP地址。
android语音通话SIP版android语音通话SIP版2012-08-28 12:51:51| 分类:公开经验 |字号订阅近期来在做一个android平板项目,由于项目中用到了语音通话的功能。
原计划自己写一套socket通讯,连接平板和平板之间的通话,后来在网络上面查询了相关资料,了解到可以用呼叫中心的相关东西进行设计开发。
于是借助trixbox进行搭建服务器,局域网连接Sipdroid开源项目,竟然成功了,兴奋之余,把Sipdroid的相关内容进行整理,提供相关接口,注册SIP服务,打电话,接电话,挂机,注销服务等。
1.下载Sipdroid开源项目,把相关文件导入android里面。
2.把androidManifest.xml文件中的内容整合到自己的项目中。
3.项目中增加以下代码:SharedPreferences settings = getSharedPreferences("org.sipdroid.sipua_preferences",MODE_PRIVATE);Editor edit = settings.edit();edit.putString("username", "200");edit.putString("password", "200");edit.putString("server", "192.168.0.111");mit(); //配置SIP相关连接信息Receiver.engine(this).StartEngine(); //开始注册服务Receiver.engine(this).halt(); //停止连接服务器信息stopService(new Intent(this, RegisterService.class)); //停止连接服务Receiver.engine(Receiver.mContext).call("200", true); // 进行呼叫Receiver.engine(Receiver.mContext).rejectcall(); //挂机Receiver.engine(Receiver.mContext).answercall(); //接听。
SIP协议SIP(Session Initiation Protocol,会话发起协议)是VoIP(Voice over Internet Protocol,IP语⾳)技术中最常⽤的协议之⼀。
它是⼀种应⽤层协议,与其他应⽤层协议⼀起⼯作,控制Internet上的多媒体通信会话。
1. VoIP技术在进⼀步讨论之前,我们先了解⼀下VoIP。
能够通过因特⽹传输语⾳和视频电话的系统被称为VoIP或商务电话系统。
VoIP本⾝不是⼀种协议。
相反,它是所有使⽤IP传输语⾳和视频信息的技术的总称。
VoIP的主要内涵如下:VoIP是⼀种允许您通过Internet传递语⾳和多媒体(视频、图⽚)内容的技术。
这是⼀种随时随地都可以使⽤互联⽹的最廉价的通信⽅式。
VoIP的优势包括:低成本便捷(可移植性强)灵活⽀持视频会议不需要额外电缆对于⼀个VoIP电话,所需要的只是⼀台连接互联⽹的电脑/笔记本电脑/⼿机。
VoIP呼叫过程如图1所⽰。
图1:VoIP电话⼯作过程2. SIP协议1)SIP协议位置SIP是⼀种应⽤层协议,是因特⽹上现代交互通信(语⾳通话、视频通话等)的基础。
在OSI模型中所处第7层位置,具体如图2所⽰。
图2:SIP处OSI模型第7层位置2)SIP协议功能SIP是⼀种与媒体⽆关的协议——它不是语⾳,不是视频,也不是数据——它可以是任何东西。
虽然它主要应⽤于VoIP,但它不是⼀个VoIP协议。
SIP只是发起和终⽌IP通信会话,该会话可以是两⼈之间的语⾳通话,也可以是团队之间的视频会议。
它通过在两个或多个已识别的IP端点(也称为SIP地址)之间发送消息(以数据包的形式)来建⽴会话。
每个SIP地址都连接到⼀个物理SIP客户端(如IP桌上电话)或⼀个软件客户端(如软电话)。
图3描述了SIP会话的初始细节。
INVITE是⼀个SIP消息,⽤于请求来⾃另⼀个SIP客户机的参与。
类似于电⼦邮件地址的⽂本块是参与者的SIP地址。
SIP安全通信协议SIP 安全通信协议SIP(Session Initiation Protocol)是一种用于建立、修改和终止多媒体会话的通信协议。
它广泛应用于互联网电话、实时消息传递和视频会议等领域。
然而,SIP 通信的安全性一直是一个重要的关注点。
为了确保通信的安全性和保护用户的隐私,SIP 通信协议可以采取一系列的安全机制和措施。
1. 加密SIP 通信协议可以使用加密技术来保护通信内容的机密性。
加密技术可以将通信数据转换为不易理解的密文,只有授权的受信任实体才能解密和读取通信内容。
常用的加密算法包括对称加密算法和非对称加密算法。
对称加密算法使用相同的密钥进行加密和解密,而非对称加密算法使用一对公钥和私钥进行加密和解密。
2. 鉴别为了确保通信的真实性和防止被恶意伪造,SIP 通信协议使用鉴别机制来验证通信实体的身份。
常见的鉴别机制包括基于用户名和密码的鉴别、数字证书和基于身份令牌的鉴别。
这些鉴别机制可以通过在通信过程中进行身份验证和标识确认,防止未经授权的用户访问和操纵通信。
3. 防止重放攻击重放攻击是指攻击者通过重放之前的通信数据来欺骗通信实体的行为。
为了防止重放攻击,SIP 通信协议可以使用时间戳、随机数和令牌等技术来生成唯一的请求标识,并确保通信实体只接受来自不同的请求标识的数据。
4. 拒绝服务防护为了保护SIP通信服务免受拒绝服务(DoS)攻击,SIP 通信协议可以采用一系列的防护机制。
这些机制包括限制请求频率、验证请求有效性、设置访问控制列表和使用入侵检测系统等。
5. 安全代理服务器安全代理服务器是SIP通信中的关键组成部分,它负责处理加密、鉴别和安全传输等功能。
安全代理服务器可以拦截和检查传入和传出的SIP消息,以确保通信内容的安全性和完整性。
总结SIP安全通信协议采取了多种安全机制和措施来保护通信的安全性和用户的隐私。
这些机制包括加密、鉴别、防止重放攻击、拒绝服务防护和安全代理服务器等。
中国科学技术大学University of Science and Technology of China本科毕业论文题目:智能手机安卓系统秘密语音通信软件设计英文Software Design of the Smartphone Secret 题目:Voice Communication Based on Android学院: 信息科学技术学院致谢本论文是在我的导师XXX教授的亲切关怀和悉心指导下完成的。
他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。
从课题的选择到项目的最终完成,X老师都始终给予我细心的指导和不懈的支持,谨向李老师致以诚挚的谢意和崇高的敬意。
历时将近两个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。
感谢在大学生学习期间给我上课的老师们,感谢在大学四年里对我们的生活学习都无微不至照顾的辅导员周远远老师。
在此,我还要感谢在一起愉快的度过大学生活的XXX寝室各位同门,正是由于你们的帮助和支持,我才能克服一个一个困难和疑惑,直至本文的顺利完成。
另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助,在此向帮助和指导过我的各位老师表示最衷心的感谢!感谢这篇论文所涉及到的各位学者。
本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!感谢我的同学和朋友,在我写论文的过程中给予我了很多素材,还在论文的撰写和排版过程中提供热情的帮助。
由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!感谢我认识的师兄弟、师姐妹们。
需要一一感谢我的同学们,有幸与你们同学是我大学的最大收获。
最后,我要特别感谢我的家人,没有你们的支持,就没有今天的我。
第一部分SIP协议概述1 SIP协议简介SIP(会话发起协议)的开发目的是用来帮助提供跨越因特网的高级电话业务。
因特网电话(IP电话)正在向一种正式的商业电话模式演进,SIP就是用来确保这种演进实现的NGN (下一代网络)系列协议中重要的一员。
Internet的许多应用程序都要求创建和管理会话,会话可以看成是相互联系的参与者之间的数据交换。
应用程序的实现因为参与者的行为而变得复杂:用户可以在终端节点之间移动,可以通过多种名字被访问到,也可以通过多种不同的媒体(有时可能是同时的)进行交流。
已经出现的许多协议都可以用来传送实时多媒体会话的数据例如视频、音频和文本信息。
SIP协议可以和这些协议协同工作使得internet的终端节点(被称为用户代理User Agent)可以和另外一个终端节点协商一种共享的会话特性。
SIP是一个用于建立、修改、结束单用户或多用户之间会话(这些会话包括了Internet 电话、多媒体发布和多媒体会议)的应用层控制协议。
它是一个基于ASCII的端到端的协议。
SIP协议独立于下层的传输协议而工作,也无需依赖于所建立的会话的类型。
SIP不是会话描述协议,也不提供会议控制功能。
SIP是一个可以和其他的IETF协议协同工作共同完成多媒体体系结构的一个组件。
该体系结构包含其他一些协议,例如用于传输实时数据和提供QoS反馈的实时传输协议(RTP)、用于控制传递媒体流的实时流协议(RTSP)、用于控制公用电话交换网网关(PSTN)的媒体网关控制协议(MEGACO)、描述终端设备的特点Internet的会话描述协议(SDP)。
SIP自身也不提供服务质量(QoS),它与负责语音质量的资源保留设置协议(RSVP)互操作,它还与若干个其他的协议进行协作,包括负责定位的轻型目录访问协议(LDAP),负责身份鉴定的远程身份验证拨入用户服务(RADIUS)。
因此,SIP应该和其他协议协同工作以提供给用户完全的服务。
sip 协议讲解SIP协议是一种用于建立、修改和终止实时通信会话的协议。
它是一种应用层协议,用于在互联网上传输多媒体通信数据。
SIP协议的全称是Session Initiation Protocol,它的设计目标是提供一种简单、灵活、可扩展的通信协议,以便在不同的网络环境下进行实时通信。
SIP协议的核心思想是基于客户端-服务器模型的,其中有两个重要的角色:用户代理(User Agent)和SIP服务器。
用户代理可以是一个软件应用或硬件设备,它负责与用户进行交互,并将用户的请求发送到SIP服务器。
SIP服务器则负责处理这些请求,并根据请求的内容来建立、修改或终止通信会话。
SIP协议定义了一系列消息格式,包括请求消息和响应消息。
请求消息用于向服务器发送请求,而响应消息则是服务器对请求的回应。
这些消息可以通过网络传输,以实现通信会话的建立和管理。
SIP 协议还定义了一些重要的功能,如呼叫转移、呼叫等待和呼叫会议等。
在建立通信会话时,SIP协议使用统一资源标识符(Uniform Resource Identifier,URI)来标识参与通信的各方。
URI是一种用于唯一标识资源的字符串,它可以是一个电话号码、一个电子邮件地址或一个网址等。
通过URI,SIP协议可以将不同的通信终端连接起来,实现实时通信。
SIP协议还支持会话描述协议(Session Description Protocol,SDP),用于描述通信会话的参数和能力。
SDP可以包含音频、视频和其他媒体的编码格式、传输协议和网络地址等信息,以便各方能够正确地进行媒体数据的传输和解码。
总的来说,SIP协议是一种强大而灵活的通信协议,它可以在不同的网络环境下实现实时的多媒体通信。
它的设计目标是简单易用、可扩展和高效可靠的。
通过SIP协议,我们可以实现语音通话、视频通话、实时消息和在线会议等多种实时通信应用。
SIP协议的发展和应用将进一步推动互联网通信的发展,为人们的生活和工作带来更多的便利和可能性。
SIP 会话使用多达四个主要组件:SIP 用户代理、SIP 注册服务器、SIP 代理服务器和 SIP 重定向服务器。
这些系统通过传输包括了SDP 协议(用于定义消息的内容和特点)的消息来完成 SIP 会话。
下面概括性地介绍各个 SIP 组件及其在此过程中的作用。
●SIP用户代理(UA)是终端用户设备,如用于创建和管理 SIP 会话的移动电话、多媒体手持设备、PC、PDA 等。
用户代理客户机发出消息。
用户代理服务器对消息进行响应。
●SIP 注册服务器是包含域中所有用户代理位置的数据库。
在 SIP 通信中,这些服务器会检索参与方IP 地址和其他相关信息,并将其发送到 SIP 代理服务器。
●SIP 代理服务器接受 SIP UA的会话请求并查询 SIP 注册服务器,获取收件方 UA 的地址信息。
然后,它将会话邀请信息直接转发给收件方 UA(如果它位于同一域中)或代理服务器(如果 UA 位于另一域中)。
●SIP重定向服务器允许SIP代理服务器将SIP会话邀请信息定向到外部域。
SIP 重定向服务器可以与 SIP 注册服务器和 SIP 代理服务器同在一个硬件上。
以下几个情景说明SIP组件之间如何进行协调以在同一域和不同域中的 UA 之间建立 SIP 会话:在同一域中建立 SIP 会话下图说明了在预订同一个ISP从而使用同一域的两个用户之间建立SIP会话的过程。
用户A使用SIP电话。
用户B有一台 PC,运行支持语音和视频的软客户程序。
1.加电后,两个用户都在ISP网络中的SIP代理服务器上注册了他们的空闲情况和 IP 地址。
2.用户 A 发起此呼叫,告诉SIP代理服务器要联系用户B。
3.然后,SIP代理服务器向SIP注册服务器发出请求,要求提供用户B的IP地址,并收到用户 B 的 IP 地址。
4.SIP代理服务器转发用户A与用户B进行通信的邀请信息(使用 SDP),包括用户A要使用的媒体。
1)呼叫用户 B2)查询B 在哪里3)响应B 的 SIP 地址4)呼叫5)响应6)响应多媒体通道已建立5.用户 B 通知SIP代理服务器可以接受用户A的邀请,且已做好接收消息的准备。
原文地址:/intl/ja/guide/topics/connectivity/sip.html翻译:tyutNo4更新:2012.06.06Android提供了⼀个支持会话发起协议(SIP)的API,这可以让你添加基于SIP的网络电话功能到你的应用程序。
Android 包括⼀个完整的SIP协议栈和集成的呼叫管理服务,让应用轻松无需管理会话和传输层的沟通就可设置传出和传⼊的语音通话,或直接音频记录或播放。
以下类型的应用程序可能使用SIP API:视频会议。
即时消息。
* 条件和限制*以下是开发⼀个SIP应用程序的条件: * 你必须有⼀个运行Android2.3或者更高版本的移动设备。
* SIP是通过无线数据连接来运行的,所以你的设备必须有⼀个数据连接(通过移动数据服务或者Wi-Fi)。
这意味着你不能在模拟器(AVD)上进行测试,只能在⼀个物理设备上测试。
详情请参见应用程序测试(Testing SIP Applications)。
* 每⼀个参与者在应用程序的通信会话过程中必须有⼀个SIP账户。
有很多不同的SIP服务提供商提供SIP账户。
* SIP API类和接⼝*以下是Android SIP API中包含的⼀些类和⼀个接⼝(SipRegistrationListener)的概述: {|style="border-spacing:0px;margin: 4px 4px; width: 90%; border-left:1px solid #ccc;border-top:1px solid #ccc; "|-style="background:#DEE8F1; " ! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px;" | 类/接⼝ ! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px;" | 描述|- style=" vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipAudioCall | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 通过SIP处理网络音频电话 |- style=" vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipAudioCall.Listener | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |关于SIP电话的事件监听器,比如接受到⼀个电话(on ringing)或者呼出⼀个电话(on calling)的时候 |- style=" vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipErrorCode | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 定义在SIP活动中返回的错误代码 |- style=" vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipManager | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 为SIP任务提供APIs,比如初始化⼀个SIP连接。
提供相关SIP服务的访问。
|- style=" vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipProfile | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 定义了SIP的相关属性,包含SIP账户、域名和服务器信息 |- style=" vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipProfile.Builder | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 创建SipProfile的帮助类 |-style=" vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipSession | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 代表⼀个SIP会话,跟SIP对话框或者⼀个没有对话框的独立事务相关联 |- style=" vertical-align:top;" | style=" border-right:1px solid#ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipSession.Listener | style=" border-right:1px solid#ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 关于SIP会话的事件监听器,比如注册⼀个会话(on registering)或者呼出⼀个电话(on calling)的时候 |- style=" vertical-align:top;" | style=" border-right:1px solid#ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipSession.State | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | 定义SIP会话的声明,比如“注册”、“呼出电话”、“打⼊电话” |- style=" vertical-align:top;" | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | SipRegistrationListener | style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " | ⼀个关于SIP注册事件监听器的接⼝ |}* 创建Manifest文件*如果你开发⼀个用到SIP API的应用程序,记住它需要Android2.3(API9)或者更高版本的平台的支持。
所以在你的设备上要运行Android2.3(API9)或者更高的版本,并不是所有的设备都提供SIP的支持。
为了使用SIP,需要添加以下权限到你的manifest文件: * E_SIP * android.permission.INTERNET 为了确保你的应用程序能够安装到支持SIP的设备上,你需要添加以下内容到你应用程序的manifest文件里: * . 这个设置表明你的应用程序需要Android2.3或者更高版本的平台。
详情请参考API Levels和元素相关的文档。
为了控制你的应用程序被那些不支持SIP的设备过滤掉(比如:在Google Play),你需要添加以下内容到你应用程序的manifest文件里: * . 这个设置声明了你的应用程序用到了SIP API。
这个声明还应该包含⼀个android:required 属性来表明你是否想让你的应用程序被那些不提供SIP支持的设备过滤掉。
其他声明你也可能需要,具体取决于你的实现,详情请参考元素相关的文档。
如果你的应用程序设计用来接受呼叫,那么你还必须在应用程序的manifest文件里定义⼀个接收器(BroadcastReceiver 的⼦类): * 以下是从SipDemo项目manifest文件中摘录的内容: ...... ...* 创建⼀个SipManager对象*要想使用SIP API,你的应用程序需要创建⼀个SipManager对象,这个SipManager对象在你的应用程序里负责以下内容:* 发起SIP会话 * 发起和接受呼叫 * 在SIP provider里进行注册和注销 * 验证会话的连通性你可以像下面⼀样实例化⼀个新的SipManager对象: public SipManager mSipManager = null; ... if(mSipManager == null) { mSipManager = SipManager.newInstance(this); }* 在SIP服务器上进行注册*⼀个典型的Android SIP应用中包含⼀个或多个用户,他们中的每个⼈都有⼀个SIP账户。