1、SIP用户代理软件的设计 第五章 程序介绍目 录摘 要IVABSTRACT6第一章 绪 论71.1 选题的背景71.2 基于SIP协议用户代理软件的国内外研究现状91.3 论文内容和结构安排10第二章 SIP协议及H.323协议簇的简介122.1 SIP系统的组成16图21 SIP系统的组成162.2 SIP功能概要172.2.1 用户定位182.2.2 会话能力的协商182.2.3 呼叫参与者管理182.2.4 呼叫建立192.2.5 呼叫处理192.2.6 SIP注册服务192.3 SIP的呼叫过程202.4 协议的优点232.4.1 基本呼叫的建立和拆除232.4.2 呼叫控制业务242
2、.4.3 SIP的第三方控制242.4.4 服务质量252.4.5 实现的难易性252.5 SIP协议和H.323协议的比较262.6 本章小结28第三章 SIP实现中VC的应用293.1 对话框控件访问的七种方式293.2 窗口293.3 网络编程Socket303.3.1 计算机网络303.3.2 IP地址313.3.3 协议313.3.4 ISO/OSI七层参考模型313.3.5 TCP/IP模型333.3.6 端口343.3.7 套接字343.3.8 客户机/服务器模式353.3.9 Windows Sockets的实现363.4 线程同步与异步套接字编程383.5 本章小结39第四章
3、 基于SIP协议代理服务器的设计与实现394.1用户代理的功能介绍394.1.1 处理SIP消息394.1.2 提供与上层应用程序的接口404.1.3 定时功能404.1.4 其他功能404.2 SIP User Agent的行为414.2.1 主叫发出初始邀请请求414.2.2 被叫发出的响应414.2.3 主叫接收并响应初始化的请求424.2.4 主叫或者被叫产生二级并发请求424.2.5 接收的并发请求424.3 SIP消息机制434.3.1 SIP URL结构434.3.2 SIP消息结构444.4 程序设计思想简介464.5 程序主要功能介绍484.6 程序运行过程介绍494.6.1
4、 程序启动494.6.2 用户注册494.6.3 用户登录504.6.4 用户邀请514.7 本章小结52第五章 总结与展望53摘 要 通信提供商及其合作伙伴和用户越来越渴求新一代基于 IP 的服务。现在有了 SIP协议(会话启动协议),一解燃眉之急。SIP协议 是不到十年前在计算机科学实验室诞生的一个想法。它是第一个适合各种媒体内容而实现多用户会话的协议,现在已成了 Internet 工程任务组 (IETF) 的规范。 今天,越来越多的运营商、CLEC(竞争本地运营商)和 ITSP(IP 电话服务商)都在提供基于 SIP协议 的服务,如市话和长途电话技术、在线信息和即时消息、IP Centr
5、ex/Hosted PBX、语音短信、push-to-talk(按键通话)、多媒体会议等等。独立软件供应商(ISV)正在开发新的开发工具,用来为运营商网络构建基于 SIP协议的应用程序以及 SIP协议软件。网络设备供应商 (NEV) 正在开发支持 SIP协议信令和服务的硬件。现在,有众多IP电话、用户代理、网络代理服务器、VOIP网关、媒体服务器和应用服务器都在使用SIP协议。 SIP将终端用户称为用户代理,请求方称为用户代理客户,被请求方称为用户代理服务器。UAC负责发起SIP呼叫请求,UAS接收UAC的请求并负责对其做出响应(接受、拒绝或重定向)。本文首先对SIP产生背景、国内外研究动态、
6、应用领域及其优点进行简单介绍,并详细介绍了SIP的基本呼叫流程。最后利用VC+6.0开发一个简单的服务器,在Windows环境下自行设计实现了一个SIP用户代理服务器。通过代理服务器分别实现用户的登陆、注册以及PC到PC之间的通信。关键字:SIP,服务器,VC,用户代理ABSTRACTcommunications provider and its partners and users more and thirst for a new generation of based on IP services. Now have an IP protocol (session start agree
7、ment), a solution of financial difficulty. SIP is less than a decade ago in computer science laboratory of the birth of an idea. It is the first suitable for all kinds of media content and achieve more user session of the agreement, now has become the Internet engineering task force (IETF) standard.
8、Today, more and more operators, CLEC (competitive local operators) and ITSP (IP phone service provider) are provided based on SIP services, such as wireless and long distance telephone technology, online information and instant messaging, IP Centrex/Hosted PBX, voice messaging, push-to-talk (buttons
9、 on phone), multimedia conference, etc. Independent software vendors (ISV) is developing new development tools used to network operators based on SIP applications and SIP software. The network equipment suppliers (NEV) are development support SIP signaling and service hardware. Now, there are numero
10、us IP telephone, user agent, network proxy servers, VOIP, gateway, and media server and application server are using SIP.SIP will end user called user agent, the requesting party called user agent customers, the requesting party called user agent server. UAC is responsible for launch SIP call reques
11、ted, receiving the request of the UAC UAS and is responsible for its response (accept, refuse or redirect).This paper first to SIP background, research dynamic, application field and advantages of simple introduction, and introduces the basic process of SIP call. Finally, using the vc + + 6.0, the d
12、evelopment of a simple client, the Windows environment to design and realize a SIP user agent server. Through the proxy server realized respectively users log on, registered and PC to the communication between the PC.第一章 绪 论1.1 选题的背景SIP 出现于二十世纪九十年代中期,源于哥伦比亚大学计算机系副教授 Henning Schulzrinne及其研究小组的研究。Schu
13、lzrinne教授除与人共同提出通过 Internet传输实时数据的实时传输协议(RTP)外,还与人合作编写了实时流传输协议(RTSP)标准提案,用于控制音频视频内容在Web上的流传输。Schulzrinne本来打算编写多方多媒体会话控制(MMUSIC)标准。1996年,他向IETF提交了一个草案,其中包含了SIP的重要内容。1999年,Schulzrinne在提交的新标准中删除了有关媒体内容方面的无关内容。随后,IETF发布了第一个SIP规范,即RFC2543。虽然一些供应商表示了担忧,认为H.323和MGCP协议可能会大大危及他们在SIP服务方面的投资,IETF继续进行这项工作,于2001
14、年发布了SIP规范RFC3261。RFC3261的发布标志着SIP的基础已经确立。从那时起,已发布了几个RFC增补版本,充实了安全性和身份验证等领域的内容。例如,RFC3262对临时响应的可靠性作了规定。RFC3263确立了SIP代理服务器的定位规则。RFC3264提供了提议/应答模型,RFC3265确定了具体的事件通知。早在2001年,供应商就已开始推出基于SIP的服务。今天,人们对该协议的热情不断高涨。Sun Microsystems的Java Community Process等组织正在使用通用的Java编程语言定义应用编程接口(API),以便开发商能够为服务提供商和企业构建SIP组件和
15、应用程序。最重要的是,越来越多的竞争者正在借助前途光明的新服务进入SIP市场。SIP正在成为自HTTP和SMTP以来最为重要的协议之一。不过,SIP不是万能的。它既不是会话描述协议,也不提供会议控制功能。为了描述消息内容的负载情况和特点,SIP使用Internet的会话描述协议(SDP)来描述终端设备的特点。SIP自身也不提供服务质量(QoS),它与负责语音质量的资源保留设置协议(RSVP)互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务(RADIUS)以及负责实时传输的RTP等多个协议。SIP规定了以下基本的通信要求:1
16、、用户定位服务;2、会话建立;3、会话参与方管理;4、特点的有限确定。SIP是由IETF制定的用于会话管理的应用层协议,目前最新的提议标准为RFC3261。通过SIP,人们可以方便地在IP网络上创建、修改和终止由一个或多个参与者参与的会话。任何具有会话管理特征的应用,比如电话、会议、即时消息、游戏等,都可以使用SIP对会话进行管理。SIP(会话初始协议)的开发目的是用来帮助提供跨越因特网的高级电话业务。因特网电话(IP电话)正在向一种正式的商业电话模式演进,SIP就是用来确保这种演进实现而需要的NGN(下一代网络)系列协议中重要的一员。SIP是IETF标准进程的一部分,它是在诸如SMTP(简单
17、邮件传送协议)和HTTP(超文本传送协议)基础之上建立起来的。它用来建立,改变和终止基于IP网络的用户间的呼叫。为了提供电话业务它还需要结合不同的标准和协议:特别是需要确保传输(RTP),与当前电话网络的信令互连,能够确保语音质量(RSVP),能够提供目录(LDAP),能够鉴权用户(RADIUS)等等。SIP被描述为用来生成,修改和终结一个或多个参与者之间的会话。这些会话包括因特网多媒体会议,因特网(或任何IP网络)电话呼叫和多媒体发布。会话中的成员能够通过多播或单播联系的网络来通信。SIP支持会话描述,它允许参与者在一组兼容媒体类型上达成一致。它同时通过代理和重定向请求到用户当前位置来支持用
18、户移动性。SIP不与任何特定的会议控制协议捆绑。1.2 基于SIP协议用户代理软件的国内外研究现状作为一个IMTF提出的标准,SIP协议在很大程度上借鉴了其他各种广泛存在的Internet协议,如HTTP(超文本传输协议)、SMTP(简单邮件传输协议)等,和这些协议一样SIP也采用的基于文本的编码方式,这也是SIP协议同视频通讯领域其他现有标准相比最大的特点之一。SIP协议的提出和发展,是伴随着Internet的发展而发展的,到目前为止它走过了以下几个阶段:1996年首先出现了SIP的概念,这时SIP的主要应用是针对Internet上的各种文本应用,如电子邮件、文字聊天等;1999年3月,IT
19、EF的多方多媒体会话控制工作组提出了RFC2543建议,供各厂商和机构讨论;1999年9月,SIP工作组从MMUSIC中分离并独立出来,成立了SIP工作组,并与2000年7月发表了SIP的草案;2002年6月,ITEF的SIP工作组又发表了RFC3261建议,以取代RFC2543。由于网络环境以及相关多媒体技术的不足,在SIP协议首次提出的时候,仅仅针对各种文本应用,随着技术的发展,并通过和IETF中IP电话工作组(IPTEL),IP网中电话选路(TRIP)工作组等工作组配合工作,在SIP协议中大大加强了对多媒体通讯的支持。由于Internet的飞速发展,在最近的两年时间内,SIP已经开始被I
20、TU-TSG l6,ETSI TIPON(欧洲标准化组织),IMTE等各种标准化组织所接受,并在这些组织中成立了与SIP相关的工作组。特别是作为ITU-T SGl6主要成员,在多年发展H.323应用的基础上,针对SIP应用在视频领域的特点,提出了SIP的应用指导,并推出了相应的SIP协议栈,使得ITL的成员实现了这两种协议之间的互通性。1.3 论文内容和结构安排本文主要是研究基于SIP协议的用户代理软件的设计,首先对SIP产生背景、国内外研究动态、应用领域及其优点进行简单介绍,并详细介绍了SIP的框架层次结构、报文和基本呼叫流程。然后利用VC+6.0开发一个简单的服务器,在Windows环境下
21、自行设计实现了一个SIP用户代理。通过代理服务器分别实现用户的登陆、用户注册以及PC到PC之间的通信的转接。第二章 SIP协议及H.323协议簇的简介会话初始化协议,或称SIP,是一个通讯协议,它使用户的通讯系统更为开放、更好地连接、更方便使用、更多选择和更为个性化。它是正在由互联网协议(IP)和HTTP背后的全球非赢利机构国际互联网标准制定组织(IETF)进行升级的标准。IETF从1996年开始对SIP进行标准化,以支持多点传送的应用。因为SIP使用简便,功能强大,分布广泛,它在整个IETF内的使用者中迅速得到了认同。SIP是文本格式的客户一服务器协议,客户机发起请求,服务器进行响应,它非常
22、类似于SMTP和HTTP协议。SIP沿用了一些HTTP的语法规则和定义,其中包括响应编码结构,一些消息头和它的整个运作机制,与HTTP或SMTP不同的是,SIP既可用TCP也可以UDP来传送。SIP(Session Initiation Protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。 使用 SIP,服务提供商可以随意选择标准组件。不论媒体内容和参与方数量,用户都可以查找和联系对方。SIP 对
23、会话进行协商,以便所有参与方都能够就会话功能达成一致以及进行修改。它甚至可以添加、删除或转移用户。 SIP它既不是会话描述协议,也不提供会议控制功能。为了描述消息内容的负载情况和特点,SIP 使用 Internet 的会话描述协议 (SDP) 来描述终端设备的特点。SIP 自身也不提供服务质量 (QoS),它与负责语音质量的资源预留协议(RSVP) 互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议。 SIP 的一个重要特点是它不定义要建立的会话的类型,而只定义应该如
24、何管理会话。有了这种灵活性,也就意味着SIP可以用于众多应用和服务中,包括交互式游戏、音乐和视频点播以及语音、视频和 Web 会议。SIP消息是基于文本的,因而易于读取和调试。新服务的编程更加简单,对于设计人员而言更加直观。SIP如同电子邮件客户机一样重用 MIME 类型描述,因此与会话相关的应用程序可以自动启动。SIP 重用几个现有的比较成熟的 Internet 服务和协议,如 DNS、RTP、RSVP 等。不必再引入新服务对 SIP 基础设施提供支持,因为该基础设施很多部分已经到位或现成可用。 对 SIP 的扩充易于定义,可由服务提供商在新的应用中添加,不会损坏网络。网络中基于 SIP 的
25、旧设备不会妨碍基于 SIP 的新服务。例如,如果旧 SIP 实施不支持新的 SIP 应用所用的方法/标头,则会将其忽略。 SIP 独立于传输层。因此,底层传输可以是采用 ATM 的 IP。SIP 使用用户数据报协议(UDP) 以及传输控制协议(TCP),将独立于底层基础设施的用户灵活地连接起来。SIP 支持多设备功能调整和协商。如果服务或会话启动了视频和语音,则仍然可以将语音传输到不支持视频的设备,也可以使用其他设备功能,如单向视频流传输功能。 通信提供商及其合作伙伴和用户越来越渴求新一代基于 IP 的服务。现在有了 SIP(The Session Initiation Protocol 会话
26、启动协议),一解燃眉之急。SIP 是不到十年前在计算机科学实验室诞生的一个想法。它是第一个适合各种媒体内容而实现多用户会话的协议,现在已成了 Internet 工程任务组 (IETF) 的规范。 今天,越来越多的运营商、CLEC(竞争本地运营商)和 ITSP(IP 电话服务商)都在提供基于 SIP 的服务,如市话和长途电话技术、在线信息和即时消息、IP Centrex/Hosted PBX、语音短信、push-to-talk(按键通话)、多媒体会议等等。独立软件供应商 (ISV) 正在开发新的开发工具,用来为运营商网络构建基于 SIP 的应用程序以及 SIP 软件。网络设备供应商 (NEV)
27、正在开发支持 SIP 信令和服务的硬件。现在,有众多 IP 电话、用户代理、网络代理服务器、VOIP 网关、媒体服务器和应用服务器都在使用 SIP。 SIP 从类似的权威协议如 Web 超文本传输协议(HTTP) 格式化协议以及简单邮件传输协议(SMTP) 电子邮件协议演变而来并且发展成为一个功能强大的新标准。但是,尽管 SIP 使用自己独特的用户代理和服务器,它并非自成一体地封闭工作。SIP 支持提供融合的多媒体服务,与众多负责身份验证、位置信息、语音质量等的现有协议协同工作。 本白皮书对 SIP 及其作用进行了概括性的介绍。它还介绍了 SIP 从实验室开发到面向市场的过程。本白皮书说明 S
28、IP 提供哪些服务以及正在实施哪些促进发展的方案。它还详细介绍了 SIP 与各种协议不同的重要特点并说明如何建立 SIP 会话。 SIP 较为灵活,可扩展,而且是开放的。它激发了 Internet 以及固定和移动 IP 网络推出新一代服务的威力。SIP 能够在多台 PC 和电话上完成网络消息,模拟 Internet 建立会话。 与存在已久的国际电信联盟(ITU) SS7 标准(用于呼叫建立)和 ITU H.323 视频协议组合标准不同,SIP 独立工作于底层网络传输协议和媒体。它规定一个或多个参与方的终端设备如何能够建立、修改和中断连接,而不论是语音、视频、数据或基于 Web 的内容。 SIP
29、 大大优于现有的一些协议,如将 PSTN 音频信号转换为 IP 数据包的媒体网关控制协议(MGCP)。因为 MGCP 是封闭的纯语音标准,所以通过信令功能对其进行增强比较复杂,有时会导致消息被破坏或丢弃,从而妨碍提供商增加新的服务。而使用 SIP,编程人员可以在不影响连接的情况下在消息中增加少量新信息。 例如,SIP 服务提供商可以建立包含语音、视频和聊天内容的全新媒体。如果使用 MGCP、H.323 或 SS7 标准,则提供商必须等待可以支持这种新媒体的协议新版本。而如果使用 SIP,尽管网关和设备可能无法识别该媒体,但在两个大陆上设有分支机构的公司可以实现媒体传输。 而且,因为 SIP 的
30、消息构建方式类似于 HTTP,开发人员能够更加方便便捷地使用通用的编程语言(如 Java)来创建应用程序。对于等待了数年希望使用 SS7 和高级智能网络(AIN) 部署呼叫等待、主叫号码识别以及其他服务的运营商,现在如果使用 SIP,只需数月时间即可实现高级通信服务的部署。 这种可扩展性已经在越来越多基于 SIP 的服务中取得重大成功。Vonage 是针对用户和小企业用户的服务提供商。它使用 SIP 向用户提供 20,000 多条数字市话、长话及语音邮件线路。Deltathree 为服务提供商提供 Internet 电话技术产品、服务和基础设施。它提供了基于 SIP 的 PC 至电话解决方案,
31、使 PC 用户能够呼叫全球任何一部电话。Denwa Communications 在全球范围内批发语音服务。它使用 SIP 提供 PC 至 PC 及电话至 PC 的主叫号码识别、语音邮件,以及电话会议、统一通信、客户管理、自配置和基于 Web 的个性化服务。 某些权威人士预计,SIP 与 IP 的关系将发展成为类似 SMTP 和 HTTP 与 Internet 的关系,但也有人说它可能标志着 AIN 的终结。迄今为止,3G 界已经选择 SIP 作为下一代移动网络的会话控制机制。Microsoft 已经选择 SIP 作为其实时通信策略并在 Microsoft XP、Pocket PC 和 MSN
32、 Messenger 中进行了部署。Microsoft 同时宣布 CE dot net 的下一个版本将使用基于 SIP 的 VoIP 应用接口层,并承诺向用户 PC 提供基于 SIP 的语音和视频呼叫。 另外,MCI 正在使用 SIP 向 IP 通信用户部署高级电话技术服务。用户将能够通知主叫方自己是否有空以及首选的通信方式,如电子邮件、电话或即时消息。利用在线信息,用户还能够即时建立聊天会话和召开音频会议。使用 SIP 将不断地实现各种功能。2.1 SIP系统的组成LSRSRSSIP ComponentsPSPSUAGatewayPSTN图21 SIP系统的组成一个SIP系统(图2.1)主要
33、由两部分组成:用户代理和网络服务器。用户代理有用户代理客户机(UAC)和用户代理服务器(UAS),其中用户代理客户机用于发起呼叫,而用户代理服务器则用于响应呼叫。另外,图中LS(Location Servers)为位置服务器,PS(Proxy Server)为代理服务器,UA(User Agent)为用户代理。用户代理客户机和用户代理服务器构成了用户端必备的应用程序,由这两个应用程序完成呼叫的发起和接收。网络服务器也有两类,它们是代理服务器和重定位服务器。代理服务器类似于HTTP的代理服务器和SMTP的MTA,它本身并不对用户请求进行响应,只是转发用户请求的中继器,然后将自身地址加入该消息的路
34、径头部分,以保证将响应按原路返回并防止环路的发生。重定位服务器非常类似于DNS,它收到用户的请求后,若判定自身不是目的地址,则向用户响应下一个应访问服务器的地址,而不是转发请求报文。另外,还经常用到注册服务器,它是和代理服务器或重定向服务器绑定在一起的,用来接收客户的注册请求,并完成用户地址的注册。定位服务器本身不属于SIP实体,它位于被叫域中,是Internet中的公共服务器,可以是LDAP服务器、专用企业网数据库、本地文件或通过Internet目录查询finger命令得到的结果,具体形式取决于本地配置,代理服务器和重定向服务器在确定下一跳服务器时都可能向它发出查询请求。2.2 SIP功能概
35、要SIP主要支持以下五个方面的功能:用户定位,确定通信所用的端系统位置;用户能力交换,确定所用媒体类型和媒体参数;用户可用性判定,确定被叫方是否空闲和是否愿意加入通信;呼叫建立,邀请和提示被叫,在主被叫之间传递参数;呼叫处理,包括呼叫终结和呼叫转移等。2.2.1 用户定位SIP协议通过INVITE请求、ACK请求以及响应,可以确定哪个终端系统参加通信,完成用户的定位。SIP协议采用SIP URL来描述一个SIP用户的地址,支持如TEL URL传统电话的一致资源定位器的描述,它的Contact、To、From头域可以包含各种URL地址描述。最基本的URL描述是SIP URL,包括userIP-A
36、ddr;userhost;userdomain,支持如phonenumbergateway的与PSTN网关地址格式,支持Tel:027-86536650这样的电话URL描述和寻址,支持直接“点击呼叫”。SIP协议本身含有向SIP服务器登录的功能,所以它可以支持用户地址重定向功能、名录服务。SIP协议也可以利用其它定位服务器如DNS、LDAP等提供的定位服务来增强它的定位功能。2.2.2 会话能力的协商会话能力协商通过SIP协议的OPTION请求和606应答消息等SIP交互对会话的媒体编码类型、参数,会话带宽要求以及组播和单播方式等会话属性进行协商。通过SIP协议,再次进行一轮Call-ID不变
37、的INVITE邀请,SIP交互可以在会话期间对一个正在进行的会话的属性如媒体的编码类型和格式,会话占用带宽等等作调整和修改。2.2.3 呼叫参与者管理基于SIP协议,任何一个SIP用户可以为自己或他人向被叫发起呼叫;任何一个会话参与者或会话外SIP用户(会话控制者)都可以在会话期间把一个或多个其它用户加至一个正在进行的会话;任何一个会话成员或会话外SIP用户(会话控制者)都可以中止一个正在进行的会话。2.2.4 呼叫建立通过代理服务器完成振铃操作,通过消息的传送来完成主叫方和被叫方的连接和参数的建立。2.2.5 呼叫处理呼叫处理通过SIP协议的重定向功能对呼叫进行前转:通过含有Contact头
38、域的BYE请求消息进行呼叫转移。用户还可以通过组播呼叫或使用带有Also头域的INVITE请求消息进行群呼。SIP不是一个独立的通信系统,而是利用了其他的IETF协议来建立一个完整的多媒体体系框架结构。如利用了RTP协议,RTSP协议来控制媒体传输,媒体网关控制来控制PSTN的网关,SDP协议(RFC2327)来描述多媒体会话。然而,SIP的基本功能和操作不依赖任何其他协议。SIP提供一些安全服务,包括拒绝服务保护,认证,完整性保护,加密和保密服务等。2.2.6 SIP注册服务用户在发起会话前,首先应到注册服务器注册。注册使用REGISTER方法。注册服务器通常将用户注册的地址信息保存在位置服
39、务器,这样使代理服务器或者重定向服务器就知道那些地址是可以到达的。注册信息是随时刷新的(默认周期是1h),所以用户每隔一段时间都应主动注册。注册服务一般伴随其他功能,如提供用户鉴权功能,或者通过注册服务安装呼叫处理程序或第三方应用。SIP注册服务的目的是使SIP客户机能够使用SIP服务器提供的服务,或使之失效。在注册请求中,客户机将提供包含在Contact域中的一个或几个地址给注册服务器。这样代理服务器就可以使用注册信息进行IP电话的路由。同时,注册也可以提供鉴权服务。如果不提供鉴权服务,冒名顶替者就可以截听任何人的电话。2.3 SIP的呼叫过程SIP使用六种信令。INVITE和ACK用于建立
40、呼叫,完成三次握手,或者用于建立以后改变会话属性;BYE用以结束会话;OPTIONS用于查询服务器力;CANCEL用于取消已经发出但未最终结束的请求;REGISTER用于客户向注册服务器注册用户位置等消息。一个SIP的呼叫可以有多种方式,可以有两个用户代理之间的直接呼叫,也可以经过一个或者多个代理服务器的而完成一次呼叫,如果一方不是SIP用户代理,则要经过SIP网关来进行呼叫。 图2.2是一个正常的简单的通过一个代理服务器实现的呼叫过程。图2.2 通过一个代理服务器的呼叫实现过程BYEUAUA代理服务器媒体流通信ACK200OKINVITE180RING200OKINVITE180RING20
41、0OK因为SIP消息是基于文本编码的协议,所以这使得SIP消息看起来像UDP数据报在以太网上传输那样的在线传输。INVITE消息中列出来的区域被称为头部区域。它们都有着这样的形式:头标记:CRLF。第一行被称为开始行,该行标记了一种称为INVITE的方法,后面跟着的是请求的URI(Request-URI),最后是SIP版本号码2,它们之间使用空格来加以区分。SIP消息的每一行都用过CRLF来终结。请求的URI是SIP URI的一种特殊形式,它指明了请求要被发送到的资源,它也被称作请求目标。SIP URI将会在后面部分进行更多更细讨论。紧随其后的第二行的第一个字段是Via,每一个SIP设备产生或
42、者转发一条SIP消息的时候都会在Via字段里面加上自己的地址,一般都是可以通过DNS解析的IP地址。Via字段包含了SIP版本 2.0,紧跟一个“/”,之后的UDP表示通过UDP进行传输,然后接着一个空格,接着是主机名或者IP地址,接着分号,最后是端口值。在上面的这个例子中是通用的SIP端口号5060。SIP的传输采用TCP、UDP、TLS和SCTP。端口号将在章节后面些的内容进行描述。Branch参数是一个传输标记符。针对这条SIP信息的后续响应可以被相互关联上就是因为它们包含一样的传输标记。下一行的头标记是Max-Forwards,它被初始化为一个整数值,每个SIP服务器在接受和转发这个请
43、求的过程中都会增加这个值,这个将简化环回检测。下一行就是To和From行了,它们标识了SIP请求的发起者和目标。如同本例一样,在名字标签被使用的情况下,SIP URI就被放在了括弧内,它将被使用来路由请求。在提醒过程中,名字标签将会被使用,但是却不会被协议本身所使用。Call-ID行是用来保持对特定SIP会话进行记录的标识符。SIP请求的发起者创建了本地唯一的字符串,然后通常会添加和它的IP地址以便让该标识全球唯一。针对Call-ID,会话中的每一方都会贡献一个随机的标识符。这些标识符在每一次呼叫中都不一样。这些标识符被称为标签,在每一个会话建立之后,这些标签会被包含在To和From字段。最初
44、的INVITE中包含了一个From 标签,但是在To中没有标签。用户代理产生一条INVITE来建立会话,同时也产生了唯一的Call-ID和From标签。回应这个INVITE的用户代理也将产生一个标签求。最终本地标签(包含在From)、远程标签(包含在To)以及Call-ID三个合在一起来唯一地标识建立起的会话,也被称作“对话”,对话的标识符被参与会话的双方用来识别特定会话,因为在同一时间,在它们之间可能会建立很多的会话。在该建立好的会话之后的后续请求也将使用这个会话标示符。它们将会在下面的实例中展示。下一行的头标记是CSeq,或者是命令队列,它包含有一个数字,以及一个方法。在本例中是INVIT
45、E。在每一个新的请求被发送的时候,这个数字就会被增加。在本例中,它被初始化为1,但是也有可能从一个其它整数开始。Via、Max-Forwards、To、From、Call-ID和CSeq构成了任何一条SIP请求语句里面的最小组成部分。其它的部分就可以作为可选附加信息或者针对于特别请求的必要信息。在这条INVITE消息里面,头标记Contact也是需要的,因为它包含了Tesla的通讯设备的SIP URI,也称作用户代理,这个URI可以被使用来直接路由信息到Tesla。可选的头标记Subject(主题)也出现在这个例子里,它没有被协议所使用,但是却可以在振铃被叫方的时候显示出来以帮助被叫方决定是否
46、接受这个呼叫。这点有点类似于电子邮件里面的From(发件人)和Subject(主题)。其它出现在这条INVITE消息内的头标记则包含了建立呼叫所必须的媒体信息。Content-Type 和Content-Length头标记字段标识了消息体是SDP,并且包含了158个字节的数据。2.4 协议的优点SIP协议具有简单、扩展性好以及和现有的Internet应用紧密的特点。SIP协议的出发点是想以现有的Internet为基础来构架IP电话业务网。2.4.1 基本呼叫的建立和拆除H.323第二版的呼叫建立是基于可靠的传输协议,所以呼叫建立需要两个连接阶段:TCP连接和呼叫连接。而在H.323第三版,支持
47、TCP和UDP,它简化了呼叫建立过程。SIP的呼叫建立类似H.323第三版的处理过程,用INVITE信息包(可建立在UDP上)。呼叫拆除的过程与呼叫建立相反,主叫和被叫都能通过RELEASECOMPLETE(H.323中用)或BYE(SIP中用)。 2.4.2 呼叫控制业务SIP和H.323都支持呼叫保持、呼叫转移、呼叫前转、呼叫等待、电话会议和其他补充业务。以呼叫保持为例:H.323定义了近点呼叫保持和远点呼叫保持两种保持业务的场景,两者都可带网守或不带。网守仅仅透明地传送SS-HOLD。而SIP实现同样的功能,只要向需要呼叫保持的一方发送一个更改了SDP描述的INVITE命令即可。更改的SDP描述段仅将媒体发送的目的地址变为空,而其他的内容不变。收到该用户的UA,让呼叫保持,直到有新的INVITE到来为止。2.4.3 SIP的第三方控制第三方控制是指不参与会话的第三者具有建立呼叫的能力,这个业务特征目前只有SIP具有,由于SIP的这一特性,ITU-T和IETF在