<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_木瓜脑袋</title><subtitle type="text">只为成功去努力,不为失败找理由 </subtitle><id>http://feed.cnblogs.com/blog/u/51304/rss</id><updated>2011-09-30T02:39:08Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/51304/rss"/><entry><id>http://www.cnblogs.com/mugua/archive/2011/09/30/2196196.html</id><title type="text">双网卡共享上网中的桥接设置[转]</title><summary type="text">局域网中新增了一台客户机，但集线器端口已接满，为一台电脑增加集线器太不合算。怎么办？windows XP的“网桥”功能就派上用场了，不过需要一个前提条件，就是局域网中必须有一台安装了双网卡的Windows XP系统客户机。</summary><published>2011-09-30T02:32:00Z</published><updated>2011-09-30T02:32:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/09/30/2196196.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/09/30/2196196.html"/><content type="html">&lt;p&gt;&lt;font color="#408080"&gt;&lt;em&gt;From: &lt;/em&gt;&lt;/font&gt;&lt;a href="http://hi.baidu.com/man_jack/blog/item/19391f542b43bc56564e00e9.html"&gt;&lt;font color="#408080"&gt;&lt;em&gt;http://hi.baidu.com/man_jack/blog/item/19391f542b43bc56564e00e9.html&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt; 局域网中新增了一台客户机，但集线器端口已接满，为一台电脑增加集线器太不合算。怎么办？windows XP的“网桥”功能就派上用场了，不过需要一个前提条件，就是局域网中必须有一台安装了双网卡的Windows XP系统客户机。下面介绍具体实现方法：   &lt;br /&gt; 为了容易区分说明对象，以下将装了双网卡的客户机称为“客户A”，新增的那台客户机称为“客户B”，具体连接和设置方法如下：    &lt;br /&gt; 假设局域网使用的网段为192.168.0.x。    &lt;br /&gt; 首先确保“客户A”能够访问局域网上的资源和Internet，并配置好双网卡，其中连接到集线器的网卡IP地址为192.168.0.1，连接到“客户B”网卡IP地址为192.168.0.2。打开“网络和拨号连接”，将原先连接局域网的“本地连接”重命名为“本地连接-主机”，将另一“本地连接”重名为“本地连接-客户”，然后用双绞线（双机直联的方式）将“本地连接-客户”对应的网卡和“客户B”机上的网卡直接连起来。    &lt;br /&gt; 接下来在“客户B”机上设置网络属性，指定一空IP地址和“计算机名”，如IP地址:192.168.0.3 ,计算机名为：客户B,其他设置如“子网掩码”、“默认网关”、“D 服务器”和“客户A”机的设置相同。    &lt;br /&gt; 现在如果“客户A”和“客户B”能够互相访问资源，那么就说明已经成功一半了，接下来需要做的就是用Windows XP的“网桥”将“本地连接-主机”和“本地连接-客户”连接起来。    &lt;br /&gt; 在“客户A”机上进入“网络和拨号连接”窗口，选中“本地连接-客户”和“本地连接-主机”单击右键，点击右键菜单中的“网桥”命令，系统开始给这两个连接进行桥接，如果以上设置一切正确，此时桥接会成功启用。现在就会出现一个“网络桥”的图标。鼠标右键点击图标选择“属性”，在“Internet协议（TCP/IP）”属性中设置IP属性（如图）。比如：192.168.0.4。好了，现在“客户B”机也可访问局域网其它电脑和Internet了，至此实现了在局域网中双机共用一Hub端口共享上网。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/2196196.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/09/30/2196196.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mugua/archive/2011/05/19/2051128.html</id><title type="text">SIP协议总结[转]</title><summary type="text">SIP协议是一个用于建立，更改和终止多媒体会话的应用层控制协议，大量借鉴了成熟的HTTP协议（文本格式编码，Request消息中的method等），采用基于文本的UTF-8编码方式，可以承载与UDP或者TCP协议之上(首选UDP)。</summary><published>2011-05-19T07:21:00Z</published><updated>2011-05-19T07:21:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/05/19/2051128.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/05/19/2051128.html"/><content type="html">&lt;p class="&amp;quot;MsoNormal&amp;quot;&amp;gt;&amp;lt;span" auto&amp;quot;="auto&amp;amp;quot;" mso-margin-bottom-alt:="mso-margin-bottom-alt:" auto;="auto;" mso-margin-top-alt:="mso-margin-top-alt:" 10pt;="10pt;" 0in="0in" margin:="margin:" normal;="normal;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: 宋体" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;" lang="ZH-CN"&gt;协议是一个用于建立，更改和终止多媒体会话的应用层控制协议&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;" lang="ZH-CN"&gt;大量借鉴了成熟的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: 宋体" lang="EN-GB"&gt;HTTP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;" lang="ZH-CN"&gt;协议&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;（文本格式编码，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Request&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息中的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;method&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;等），&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;" lang="ZH-CN"&gt;采用基于文本的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: 宋体" lang="EN-GB"&gt;UTF-8&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;" lang="ZH-CN"&gt;编码方式，&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;可以承载与&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;或者&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;TCP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;协议之上&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;(&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;首选&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UDP)&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。和&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Diameter&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;协议类似，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;也是有一个基础协议和很多扩展协议，基础协议在&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;RFC3261&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;中定义，本文主要概括&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;基础协议的要点。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;1.&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;基本概念：&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Session&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Session&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;简单的说就是一次通话，从摘机拨号开始到最终的挂机之间所有的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息都属于一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Session&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，它们具有相同的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Call-Id&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Dialog&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;基于&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Peer-to-Peer&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，描述了两端的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;User Agents&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;在一段时间内的关联。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Dialog&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Dialog Id&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;来表示，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Dialog Id&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;是由三部分组成的：&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Call-Id&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;from&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;中的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;tag&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;to&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;中的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;tag&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。只有对&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Invite&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息响应的的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;2xx &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;和&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt; 101-199 &lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;消息才能建立一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;Dialog&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;100 Trying&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;相应无法建立&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;Dialog&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;，因为&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;100 Trying&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;中的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;To&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;属性没有&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;tag&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: zh-cn; mso-no-proof: no" lang="ZH-CN"&gt;值。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Transaction&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Transction&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;是有一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Request&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息和一个或者多个临时或者最终应答消息构成的。如果对&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Invite&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的应答是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;200 OK&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，则接下来的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;ACK&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息认为是另一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;transaction&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;2.&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;网络实体：&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UA(User Agent)&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;和用户直接交互的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;设备，可以是硬件的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;电话也可以是电脑上具有&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;电话功能的软件等；发送&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP Request&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UA&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;即&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UAC(User Agent Client), &lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;接受&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP Request&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UA&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;即&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UAS(User Agent Server), &lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UA&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;通常既是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UAC&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;又是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UAS&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Proxy Server&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;进行消息转发，负责把消息转发给最终用户或者另一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Proxy Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Redirect Server&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;和&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Diameter&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Redirect Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;类似，不进行消息转发，而是给消息发送方回复一个或者多个地址，建议发送方把消息发往这些地址。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Redirect Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;返回的地址并不一定就是最终用户的地址，也有可能是另一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Proxy Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的地址。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Registrars:&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt; &lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;因为&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;需要支持用户的移动性，所以当用户改变位置后需要对新位置的终端进行注册，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Registrars&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;接受&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;用户注册，从而得知可以从何处找打当前用户。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Registrars&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;通常位于&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP Server(Proxy Server &lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;或者&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Redirect Server)&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;中。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Location Server&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;不是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;实体，之所以说它不是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;实体是因为&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Location Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;上面不必运行&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;协议栈，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;和&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt; Location Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;之间的通信方式也不是用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP(&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;比如用&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;LDAP)&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Location Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的作用是保存&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;用户位置数据&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;(IP &lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;或者&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Hostname)&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，比如当一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;用户向&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;注册之后，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;将该&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;用户位置信息上传到&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Location Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;中，当&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;收到需要发送给该&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;用户的消息时，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;再向&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Location Server&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;询问该用户位置信息&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;(IP &lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;或者&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Hostname)&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;3.&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息分类：&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息分为如下两类&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;请求消息：&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UAC&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;发给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UAS&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;的消息，包括&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;INVITE&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;ACK&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;BYE&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;CANCEL&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;OPTION&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;和&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;REGISTER&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;消息。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;·&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;响应消息：&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UAS&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;回应给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;UAC&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;的消息，包括&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;1xx&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;2xx&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;3xx&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;4xx&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;5xx&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;6xx&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;响应消息，每类消息的具体含义如下表：&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table style="margin: auto auto auto 54.9pt; border-collapse: collapse; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 31.5pt; padding-right: 5.4pt; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" valign="top" width="42"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;1xx&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 112.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign="top" width="150"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;进展相应&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 121.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign="top" width="162"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;临时相应&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 1"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 31.5pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="42"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;2xx&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 112.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="150"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;成功&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 121.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="162"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;最终相应&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 2"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 31.5pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="42"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;3xx&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 112.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="150"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;重定向错误&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 121.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="162"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;最终相应&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 31.5pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="42"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;4xx&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 112.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="150"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;客户端错误&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 121.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="162"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;最终相应&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 4"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 31.5pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="42"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;5xx&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 112.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="150"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;服务端错误&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 121.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="162"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;最终相应&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;       &lt;td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 31.5pt; padding-right: 5.4pt; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign="top" width="42"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;6xx&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 112.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="150"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;全局错误&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: black 1pt solid; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 121.5pt; padding-right: 5.4pt; border-left-color: #ece9d8; border-right: black 1pt solid; padding-top: 0in; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign="top" width="162"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;最终相应&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoListParagraph"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;4.&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息格式：&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;由于是采用文本格式编码，所以消息格式很简单，是由&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Message Header&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;加可选的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Message body&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;构成，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Message Header &lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;从第二行开始每一行都由“&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Tag :Valued&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;”格式&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;组成，每一行描述一个属性。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="ZH-CN"&gt; &lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;头部的属性有很多，基本协议中定义了一部分，扩展协议也定义了相应的头部属性。如果消息中携带了&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Message body&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;，则&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Message Header&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;和&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Message body&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;之间用一个空行分割开来；&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Message body&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;通常有“&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Content-Type&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;”和“&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Content-Length&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;”属性来对&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Message body&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;进行解释，例如：&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; background: silver; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-highlight: silver" lang="EN-GB"&gt;Content-Type: application/sdp        &lt;br /&gt;Content-Length: 212&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息也可以携带多个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Message body&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，比如可以带上&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;信息和主叫方的照片，这样被叫就能看到主叫方的头像了。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息在经过&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Proxy&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的时候，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Proxy&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;只关心&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Message Header&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，而不会检查&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Message body&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，所以说&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Message body&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;对&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Proxy&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;是透明的。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraph"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;5.&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP(Session Description Protocol)&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;：&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;在&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Message body&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;中最常见的就是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，这里概述一下&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Session Description Protocol (SDP) &lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;在&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;RFC 2327&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;中被定义；&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;中携带了一些必要信息，以供用户可以加入一个多媒体会话，比如&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;IP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;地址，端口号，会话的日期时间等；这有点儿类似电视台的节目单，有了节目单，我们就可以在指定的时间切换到指定的频道收看到预期的节目。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;是单独定义的，和&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;没有必然的联系，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;信息可以通过各种途径传输比如&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Email&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Webpage&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;等，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;只是众多传输&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;方式中的一种而已。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraph"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;1)&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;语法：&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;也是用文本格式描述的，一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP Description&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;可以包含很多行，每一行的格式如下：&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;      &lt;br /&gt;&lt;span style="font-size: small"&gt;Type = Value        &lt;br /&gt;Type&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;只用一个字母来表示；一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP Description&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;通常有一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Session-level&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;和多个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Media-level&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;信息组成；&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Session-level&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;信息用来描述整个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Session&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，每个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Media-level&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;信息用来描述一个特定的媒体流。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Session-level&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;总以&lt;/span&gt;&lt;span style="mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;" lang="EN-GB"&gt;&lt;span style="font-family: calibri"&gt;”&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;v=0&lt;/span&gt;&lt;span style="mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;" lang="EN-GB"&gt;&lt;span style="font-family: calibri"&gt;”&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;开头，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Media-level&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;总已&lt;/span&gt;&lt;span style="mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;" lang="EN-GB"&gt;&lt;span style="font-family: calibri"&gt;”&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;m=&amp;lt;media type&amp;gt; &amp;lt;port number&amp;gt; &amp;lt;transport protocol&amp;gt; &amp;lt;media formats&amp;gt;&lt;/span&gt;&lt;span style="mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;" lang="EN-GB"&gt;&lt;span style="font-family: calibri"&gt;”&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;开头&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;,&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。下面是一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP Description&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的例子，该例子中包含了三个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Media-level&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;信息：&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;      &lt;br /&gt;&lt;span style="color: #c00000"&gt;&lt;span style="font-size: small"&gt;v=0          &lt;br /&gt;o=Bob 2890844526 2890842807 IN IP4 131.160.1.112           &lt;br /&gt;s=SIP seminar           &lt;br /&gt;i=A Seminar on the Session Initiation Protocol           &lt;br /&gt;u=http://www.cs.columbia.edu/sip           &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB"&gt;&lt;a href="mailto:e=bob@university.edu"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #c00000; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin"&gt;&lt;span style="font-size: small"&gt;e=bob@university.edu&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #c00000; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;      &lt;br /&gt;&lt;span style="font-size: small"&gt;c=IN IP4 224.2.17.12/127        &lt;br /&gt;t=2873397496 2873404696         &lt;br /&gt;a=recvonly         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #7030a0; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;m=audio 49170 RTP/AVP 0        &lt;br /&gt;a=rtpmap:0 PCMU/8000         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #984806; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent6; mso-themeshade: 128" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;m=video 51372 RTP/AVP 31        &lt;br /&gt;a=rtpmap:31 H261/90000         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #0070c0; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;m=video 53000 RTP/AVP 32        &lt;br /&gt;a=rtpmap:32 MPV/90000&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;该例中&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;o&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;描述该&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;session&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的发起者是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;以及他的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;IP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;地址；&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;s&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;描述该&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;session&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的名字；&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;i&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;描述了该&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;session&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的一般信息；&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;u&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;说明可以从这个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;URL&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;中获取和该&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;session&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;相关的更多信息；&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;e&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;描述了该&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;session&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;联系人的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;email&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;C&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;和&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;t&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;描述了什么时间从哪里可以接收到该&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;Session&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;multicast&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;m&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;描述了一个媒体流的端口号，传输协议，媒体格式等信息。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;a&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;可以用来对&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;进行扩展，比如双方如果协商音频的音量，可以用下面的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;描述：&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;      &lt;br /&gt;&lt;span style="font-size: small"&gt;m=audio 49170 RTP/AVP 0        &lt;br /&gt;a=volume:8         &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;前提是双方都需要理解&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;volume&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;的含义，如果对方不理解&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;volume&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;，也不会出错，只是将其忽略。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraph"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;2)&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;描述中常见属性：&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table style="margin: auto auto auto 0.5in; border-collapse: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-border-top-alt: solid #4f81bd 1.0pt; mso-border-top-themecolor: accent1; mso-border-bottom-themecolor: accent1; mso-border-bottom-alt: solid #4f81bd 1.0pt" class="LightShading-Accent11" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr style="mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;       &lt;td style="border-bottom: #4f81bd 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; border-top: #4f81bd 1pt solid; padding-top: 0in; mso-border-top-themecolor: accent1; mso-border-bottom-themecolor: accent1" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;v&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; padding-bottom: 0in; background-color: transparent; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; border-top: #4f81bd 1pt solid; padding-top: 0in; mso-border-top-themecolor: accent1; mso-border-bottom-themecolor: accent1" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Protocol version&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 0"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;b&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Bandwidth information&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 1"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;o&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Owner of the session and session identifier&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 2"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Time zone adjustments&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;s&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Name of the session&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 4"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;k&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Encryption key&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 5"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Information about the session&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 6"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;a&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Attribute lines&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 7"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;u&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;URL containing a description of the session&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 8"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Time when the session is active&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 9"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;E-mail address to obtain information about the session&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 10"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;r&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Times when the session will be repeated&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 11"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;p&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Phone number to obtain information about the session&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 12"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;m&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Media line&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 13"&gt;       &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;c&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom-color: #ece9d8; padding-bottom: 0in; background-color: transparent; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Connection information&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 14; mso-yfti-lastrow: yes"&gt;       &lt;td style="border-bottom: #4f81bd 1pt solid; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 27.9pt; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-border-bottom-themecolor: accent1; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="37"&gt;         &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom: #4f81bd 1pt solid; padding-bottom: 0in; border-top-color: #ece9d8; padding-left: 5.4pt; width: 5.5in; padding-right: 5.4pt; background: #d3dfee; border-right-color: #ece9d8; border-left-color: #ece9d8; padding-top: 0in; mso-border-bottom-themecolor: accent1; mso-background-themecolor: accent1; mso-background-themetint: 63" valign="top" width="528"&gt;         &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: #365f91; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-themecolor: accent1; mso-themeshade: 191" lang="EN-GB"&gt;&lt;span style="font-size: small"&gt;Information about a media line&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoListParagraph"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;6.&lt;/span&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: small"&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;呼叫流程实例分析：&lt;/span&gt;&lt;/strong&gt;&lt;strong style="mso-bidi-font-weight: normal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;下图是一个完整的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;呼叫消息流示意图，这里重点关注&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息流，下一篇文中将给出一个稍微复杂的例子，那个例子中将重点关注&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;消息的路由和&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;SIP&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: calibri; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin" lang="ZH-CN"&gt;常见头部字段的含义。&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-ansi-language: en-us"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201105/201105191518493691.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="0_1279096532o6wQ" border="0" alt="0_1279096532o6wQ" src="http://images.cnblogs.com/cnblogs_com/mugua/201105/201105191518501641.gif" width="570" height="334" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;要与&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;通话，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;拨打&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;的的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Public URI&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;：&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;&lt;a href="sip:Bob.Johnson@company.com"&gt;sip:Bob.Johnson@company.com&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;，给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Invite&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;消息，在&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Invite&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;消息中携带了&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;，表明&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;期望在&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;UDP&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;端口&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;20002&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;上收到包含&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;PCM voice&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;编码的&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;RTP&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;数据包。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Proxy&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;收到这个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Invite&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;消息后转发给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;，同时给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;回送一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;100 Trying&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;消息&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;(Trying&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;消息是&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Hop-to-Hop&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;的，不会被转发&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;)&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;收到&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Invite&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;消息后开始振铃，返回&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;180 Ringing&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;消息给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;侧会听到回铃音。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;INVITE sip:Bob.Johnson@company.com SIP/2.0&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Via: SIP/2.0/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;UDP&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt; workstation1000.university.com:5060&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;From: Laura Brown &amp;lt;sip:Laura.Brown@university.com&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;To: Bob Johnson &lt;/span&gt;&lt;span lang="EN-GB"&gt;&lt;a href="sip:Bob.Johnson@company.com"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no" lang="EN-US"&gt;sip:Bob.Johnson@company.com&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Call-ID: 12345678@workstation1000.university.com&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;CSeq: 1 INVITE&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Contact: Laura Brown &amp;lt;sip:Laura@workstation1000.university.com&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Content-Type: application/sdp&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Content-Length: 154&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;v=0&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;o=Laura 2891234526 2891234526 IN IP4 workstation1000.university.com&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;s=Let us talk for a while&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;c=IN IP4 138.85.27.10&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;t=0 0&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;m=audio 20002 RTP/AVP 0&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;当&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;摘机后，一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;200 OK&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;的最终应答消息会被返回给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;，消息中携带了一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;SDP&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;，表明&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;可以在&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;UDP&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;端口&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;41000&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;上接受数据包。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;收到&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;200 OK&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;后给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;发送一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;ACK&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;消息，确认已经收到&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;200 OK&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;。此时双方进入通话。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;SIP/2.0 200 OK&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Via: SIP/2.0/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;UDP&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt; 131.160.1.110&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Via: SIP/2.0/UDP workstation1000.university.com:5060&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;From: Laura Brown &amp;lt;sip:Laura.Brown@university.com&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;To: Bob Johnson &amp;lt;sip:Bob.Johnson@company.com&amp;gt;;tag=314159&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Call-ID: 12345678@workstation1000.university.com&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;CSeq: 1 INVITE&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Contact: Bob Johnson &amp;lt;sip:Bob@131.160.1.112&amp;gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Content-Type: application/sdp&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Content-Length: 154&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;v=0&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;o=Bob 2891234321 2891234321 IN IP4 131.160.1.112&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;s=Let us talk for a while&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;c=IN IP4 131.160.1.112&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;t=0 0&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;m=audio 41000 RTP/AVP 0&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: red; font-size: 10pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;&amp;#160;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;当通话结束时，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;发送一个&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bye&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;消息给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Laura&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;随后回应&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;200 OK&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;给&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;Bob&lt;/span&gt;&lt;span style="font-family: 宋体; color: black; font-size: 12pt; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-ansi-language: en-us; mso-no-proof: no" lang="ZH-CN"&gt;，至此通话结束。&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; color: black; font-size: 12pt; mso-ansi-language: en-us; mso-no-proof: no"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-ansi-language: en-us"&gt;&lt;span style="font-size: small"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: &amp;#39;Courier New&amp;#39;; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast" lang="ZH-CN"&gt;参考资料：&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;1.&lt;/span&gt;&lt;span style="line-height: normal; font-variant: normal; font-style: normal; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;“RFC 3261”- Section 4&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: cambria; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: major-latin" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Section 12&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: cambria; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: major-latin" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Section 17&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: cambria; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: major-latin" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;Section 24&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: cambria; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: major-latin" lang="ZH-CN"&gt;；&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;#39;Courier New&amp;#39;" lang="EN-GB"&gt;&lt;span style="mso-list: ignore"&gt;&lt;span style="font-size: small"&gt;2.&lt;/span&gt;&lt;span style="line-height: normal; font-variant: normal; font-style: normal; font-family: &amp;quot;Times New Roman&amp;quot;; font-weight: normal"&gt;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;“SIP Demystified”- Chapter 4&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: cambria; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: major-latin" lang="ZH-CN"&gt;，&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt; Chapter 5&lt;/span&gt;&lt;span style="font-family: 宋体; mso-fareast-font-family: 宋体; mso-ascii-font-family: &amp;#39;Courier New&amp;#39;; mso-hansi-font-family: cambria; mso-bidi-font-family: &amp;#39;Courier New&amp;#39;; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: major-latin" lang="ZH-CN"&gt;；&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;" lang="EN-GB"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#408080"&gt;From: &lt;/font&gt;&lt;/em&gt;&lt;a title="http://blog.csdn.net/minico/archive/2010/07/14/5734820.aspx" href="http://blog.csdn.net/minico/archive/2010/07/14/5734820.aspx"&gt;&lt;em&gt;&lt;font color="#408080"&gt;http://blog.csdn.net/minico/archive/2010/07/14/5734820.aspx&lt;/font&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/2051128.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/05/19/2051128.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mugua/archive/2011/03/04/1971023.html</id><title type="text">FreeSwitch Sip【转】</title><summary type="text">在继续学习 FreeSWITCH 之前我们有必要来学习一下 SIP 协议，因为它是 FreeSWITCH 的核心。但即使如此，讲清楚 SIP 必然需要很大篇幅，本书是关于 FreeSWITCH 的，而重点不是 SIP。因此，我将仅就理解 FreeSWITCH 必需的一些概念加以通俗的解释，更严肃一些的请参阅其它资料或 RFC（Request For Comments）。</summary><published>2011-03-04T08:34:00Z</published><updated>2011-03-04T08:34:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/03/04/1971023.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/03/04/1971023.html"/><content type="html">&lt;p&gt;在继续学习 FreeSWITCH 之前我们有必要来学习一下 SIP 协议，因为它是 FreeSWITCH 的核心。但即使如此，讲清楚 SIP 必然需要很大篇幅，本书是关于 FreeSWITCH 的，而重点不是 SIP。因此，我将仅就理解 FreeSWITCH 必需的一些概念加以通俗的解释，更严肃一些的请参阅其它资料或 RFC（Request For Comments）。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SIP 的概念和相关元素&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;会话初始协议（Session Initiation Protocol）是一个控制发起、修改和终结交互式多媒体会话的信令协议。它是由 IETF（Internet Engineering Task Force，Internet工程任务组）在 RFC 2543 中定义的。最早发布于 1999 年 3 月，后来在 2002 年 6 月又发布了一个新的标准 RFC 2361。&lt;/p&gt;  &lt;p&gt;SIP 是一个基于文本的协议，在这一点上与 HTTP 和 SMTP 相似。我们来对比一个简单的 SIP 请求与 HTTP 请求：&lt;/p&gt;  &lt;code&gt;GET /index.html HTTP/1.1&lt;br/&gt;&lt;br/&gt;INVITE sip:seven@freeswitch.org.cn SIP/2.0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;请求由三部分组成。在 HTTP 中， GET 指明一个获取资源（文件）的动作，而 /index.html 则是资源的地址，最后是协议版本号。而在 SIP 中，INVITE 表示发起一次请求，seven@freeswitch.org.cn 为请求的地址，称为 SIP URI，最后也是版本号。其中，SIP URI很类似一个电子邮件，其格式为“协议:名称@主机”。与 HTTP 和 HTTPS 相对应，有 SIP 和 SIPS，后者是加密的；名称可以是一串数字的电话号码，也可以是字母表示的名称；而主机可以是一个域名，也可以是一个IP地址。&lt;/p&gt;&lt;p&gt;SIP 是一个对等的协议，类似 P2P。不像传统电话那样必须有一个中心的交换机，它可以在不需要服务器的情况下进行通信，只要通信双方都彼此知道对方地址（或者，只有一方知道另一方地址），如下图，bob 给 alice 发送一个 INVITE 请求，说“Hi, 一起吃饭吧...”，alice 说&amp;quot;好的，OK&amp;quot;，电话就通了。&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041633523200.png"&gt;&lt;img title="4-1" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="111" alt="4-1" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041633546953.png" width="447" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;在 SIP 网络中，alice 和 bob 都叫做用户代理（UA, User Agent）。UA 是在 SIP 网络中发起或响应 SIP 处理的逻辑功能。UA是有状态的，也就是说，它维护会话（或称对话）的状态。UA 有两种功能：一种是 UAC（UA Client用户代理客户端），它是发起 SIP 请求的一方，如上图的 bob。另一种是 UAS（UA Server），它是接受请求并发送响应的一方，如上图中的 alice。由于 SIP 是对等的，如果 alice 呼叫 bob 时（有时候 alice 也主动叫 bob 一起吃饭），alice 就称为 UAC，而 bob 则执行 UAS的功能。一般来说，UA 都会实现上述两种功能。&lt;/p&gt;&lt;p&gt;设想 bob 和 alice 是经人介绍认识的，而他们还不熟悉，bob 想请 alice 吃饭就需要一个中间人（M）传话，而这个中间人就叫代理服务器（Proxy Server）。还有另一种中间人叫做重定向服务器（Redirect Server），它类似于这样的方式工作──中间人 M 告诉 bob，我也不知道 alice 在哪里，但我老婆知道，要不然我告诉你我老婆的电话，你直接问她吧，我老婆叫 W。这样，M 就成了一个重定向服务器，而他老婆 W 则是真正的代理服务器。这两种服务器都是 UAS，它们主要是提供一对欲通话的 UA 之间的路由选择功能。具有这种功能的设备通常称为边界会话控制器（SBC，Service Border Controller）。&lt;/p&gt;&lt;p&gt;还有一种 UAS 叫做注册服务器。试想这样一种情况，alice 还是个学生，没有自己的手机，但它又希望 bob 能随时找到她，于是当她在学校时就告诉中间人 M 说她在学校，如果有事打她可以打宿舍的电话；而当她回家时也通知 M 说有事打家里电话。只要 alice 换一个新的位置，它就要向 M 重新“注册”新位置的电话，以让 M 能随时找到她，这时候 M 就是一个注册服务器。&lt;/p&gt;&lt;p&gt;最后一种叫做背靠背用户代理（B2BUA，Back-to-Back UA）。需要指出，其实 RFC 3261 并没有定义 B2BUA的功能，它只是一对 UAS 和 UAC的串联。FreeSWITCH 就是一个典型的 B2BUA，事实上，B2BUA 的概念会贯穿本书始终，所以，在此我们需要多花一点笔墨来解释。&lt;/p&gt;&lt;p&gt;我们来看上述故事的另一个版本：M 和 W 是一对恩爱夫妻。M 认识 bob 而 W 认识 alice。M 和 W 有意搓合两个年轻人，但见面时由于两人太腼腆而互相没留电话号码。事后 bob 相知道 alice 对他感觉如何，于是打电话问 M，M 不认识 alice，就转身问老婆 W （注意这次 M 没有直接把 W 电话给 bob），W 接着打电话给 alice，alice 说印象还不错，W 就把这句话告诉 M， M 又转过身告诉 bob。 M 和 W 一个面向 bob，一个对着 alice，他们两个合在一起，称作 B2BUA。在这里，bob 是 UAC，因为他发起请求；M 是 UAS，因为他接受 bob 的请求并为他服务；我们把 M 和 W 看做一个整体，他们背靠着背（站着坐着躺着都行），W 是 UAC，因为她又向 alice 发起了请求，最后 alice 是 UAS。其实这里UAC 和 UAS 的概念也不是那么重要，重要的是要理解这个&lt;strong&gt;背靠背的用户代理&lt;/strong&gt;。因为事情还没有完，bob 一听说 alice 对他印象还不错，心花怒放，便想请 alice 吃饭，他告诉 M， M 告诉 W， W 又告诉 alice，alice 问去哪吃，W 又只好问 M， M 再问 bob…… 在这对年轻人挂断电话这前， M 和 W 只能“背对背”的工作。&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/20110304163356772.png"&gt;&lt;img title="4-2" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="178" alt="4-2" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041633577349.png" width="511" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;从上图可以看出，四个人其实全是 UA。从上面故事可以看出，虽然 FreeSWITCH 是 B2BUA，但也可以经过特殊的配置，实现一些代理服务器和重定向服务器的功能，甚至也可以从中间劈开，两边分别作为一个普通的 UA 来工作。这没有什么奇怪的，在 SIP 世界中，所有 UA 都是平等的。具体到实物，则 M 和 W 就组成了实现软交换功能的交换机，它们对外说的语言是 SIP，而在内部，它们则使用自己家的语言沟通。bob 和 alice 就分别成了我们常见的软电话，或者硬件的 SIP 电话。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SIP 注册&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;不像普通的固定电话网中，电话的地址都是固定的。因特网是开放的，alice 的 UA 可能在家也可能在学校，或者，在世界是任何角落，只要能上网，它就能与世界通信。为了让我们的 FreeSWITCH 服务器能找到它，它必须向服务器进行注册。通常的注册流程是：&lt;/p&gt;&lt;code&gt;Alice                          FreeSWITCH &lt;br/&gt;  |                                |&lt;br/&gt;  |           REGISTER             |&lt;br/&gt;  |-------------------------------&amp;gt;|&lt;br/&gt;  |   SIP/2.0 401 Unauthorized     |&lt;br/&gt;  |&amp;lt;-------------------------------|&lt;br/&gt;  |           REGISTER             |&lt;br/&gt;  |-------------------------------&amp;gt;|&lt;br/&gt;  |   SIP/2.0 200 OK               |&lt;br/&gt;  |                                |&lt;br/&gt;&lt;/code&gt;&lt;p&gt;我们用真正的注册流程进行说明。下面的 SIP 消息是在真正的 FreeSWITCH 中 trace 出来的。其中 FreeSWITCH 服务器的 IP 地址是 192.168.4.4，使用默认的端口号 5060，在这里，我们使用的是 UDP 协议。 alice 使用的 UAC 是 Zoiper，端口号是 5090（在我写作时它与 FreeSWITCH 在同一台机器上，所以不能再使用端口 5060）。其中每个消息短横线之间的内容都是 FreeSWITCH 中输出的调试信息，不是 SIP 的一部分。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 584 bytes from udp/[192.168.4.4]:5090 at 12:30:57.916812:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;REGISTER sip:192.168.4.4;transport=UDP SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:5090;branch=z9hG4bK-d8754z-d9ed3bbae47e568b-1---d8754z-;rport&lt;br/&gt;Max-Forwards: 70&lt;br/&gt;Contact: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=d42207a765c0626b;transport=UDP&amp;gt;&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;&lt;br/&gt;From: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;;tag=9c709222&lt;br/&gt;Call-ID: NmFjNzA3MWY1MDI3NGViMjY1N2QwZDlmZWQ5ZGY2OGE.&lt;br/&gt;CSeq: 1 REGISTER&lt;br/&gt;Expires: 3600&lt;br/&gt;Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE&lt;br/&gt;User-Agent: Zoiper rev.5415&lt;br/&gt;Allow-Events: presence&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;recv 表明 FreeSWITCH 收到来自 alice 的消息。我们前面已经说进，SIP 是纯文本的协议，类似 HTTP，所以很容易阅读。&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;第一行的 REGISTER 表示是一条注册消息。 &lt;/li&gt;  &lt;li&gt;Via 是 SIP 的消息路由，如果 SIP 经过好多代理服务器转发，则会有多条 Via 记录。 &lt;/li&gt;  &lt;li&gt;Max-forwards 指出消息最多可以经过多少次转发，主要是为了防止产生死循环。 &lt;/li&gt;  &lt;li&gt;Contact 是 alice 家的地址，本例中，FreeSWITCH 应该能在 192.168.4.4 这台机器上的 5090 端口找到她。 &lt;/li&gt;  &lt;li&gt;To 和 From 先不管。 &lt;/li&gt;  &lt;li&gt;Call-ID 是本次 SIP 会话（Session）的标志。 &lt;/li&gt;  &lt;li&gt;CSeq 是一个序号，由于 UDP 是不可靠的协议，在不可靠的网络上可能丢包，所以有些包需要重发，该序号则可以防止重发引起的消息重复。 &lt;/li&gt;  &lt;li&gt;Expires 是说明本次注册的有效期，单位是秒。在本例中，alice 应该在一小时内再次向 FreeSWITCH 注册，防止 FreeSWITCH 忘掉她。实际上，大部分 UA 的实现都会在几十秒内就重新发一次注册请求，这在 NAT 的网络中有助于保持连接。 &lt;/li&gt;  &lt;li&gt;Allow 是说明 alice 的 UA 所能支持的功能，某些 UA 功能丰富，而某些 UA 仅有有限的功能。 &lt;/li&gt;  &lt;li&gt;User-Agent 是 UA 的型号。 &lt;/li&gt;  &lt;li&gt;Allow-Events 则是说明她允许哪些事件通知。 &lt;/li&gt;  &lt;li&gt;Content-Length 是消息体（Body）的长度，在这里，只有消息头（Header），没有消息体，因此长度为 0 。 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;.&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 664 bytes to udp/[192.168.4.4]:5090 at 12:30:57.919364:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 401 Unauthorized&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:5090;branch=z9hG4bK-d8754z-d9ed3bbae47e568b-1---d8754z-;rport=5090&lt;br/&gt;From: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;;tag=9c709222&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;;tag=QFXyg6gcByvUH&lt;br/&gt;Call-ID: NmFjNzA3MWY1MDI3NGViMjY1N2QwZDlmZWQ5ZGY2OGE.&lt;br/&gt;CSeq: 1 REGISTER&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER,&lt;br/&gt;    NOTIFY, PUBLISH, SUBSCRIBE&lt;br/&gt;Supported: timer, precondition, path, replaces&lt;br/&gt;WWW-Authenticate: Digest realm=&amp;quot;192.168.4.4&amp;quot;,&lt;br/&gt;    nonce=&amp;quot;62fb812c-71d2-4a36-93d6-e0008e6a63ee&amp;quot;, algorithm=MD5, qop=&amp;quot;auth&amp;quot;&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;FreeSWITCH 需要验证 alice 的身分才允许她注册。在 SIP 中，没有发明新的认证方式，而是使用已有的 HTTP 摘要（Digest）方式来认证。401 消息表示未认证，它是 FreeSWITCH 对 alice 的响应。同时，它在本端生成一个认证摘要（WWW-Authenticate），一齐发送给 alice。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 846 bytes from udp/[192.168.4.4]:5090 at 12:30:57.921011:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;REGISTER sip:192.168.4.4;transport=UDP SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:5090;branch=z9hG4bK-d8754z-dae1693be9f8c10d-1---d8754z-;rport&lt;br/&gt;Max-Forwards: 70&lt;br/&gt;Contact: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=d42207a765c0626b;transport=UDP&amp;gt;&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;&lt;br/&gt;From: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;;tag=9c709222&lt;br/&gt;Call-ID: NmFjNzA3MWY1MDI3NGViMjY1N2QwZDlmZWQ5ZGY2OGE.&lt;br/&gt;CSeq: 2 REGISTER&lt;br/&gt;Expires: 3600&lt;br/&gt;Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE&lt;br/&gt;User-Agent: Zoiper rev.5415&lt;br/&gt;Authorization: Digest username=&amp;quot;alice&amp;quot;,realm=&amp;quot;192.168.4.4&amp;quot;,&lt;br/&gt;    nonce=&amp;quot;62fb812c-71d2-4a36-93d6-e0008e6a63ee&amp;quot;,&lt;br/&gt;    uri=&amp;quot;sip:192.168.4.4;transport=UDP&amp;quot;,response=&amp;quot;32b5ddaea8647a3becd25cb84346b1c3&amp;quot;,&lt;br/&gt;    cnonce=&amp;quot;b4c6ac7e57fc76b85df9440994e2ede8&amp;quot;,nc=00000001,qop=auth,algorithm=MD5&lt;br/&gt;Allow-Events: presence&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;alice 收到带有摘要的 401 后，后新发起注册请求，这一次，加上了根据收到的摘要和它自己的密码生成的认证信息（Authorization）。并且，你可以看到，CSeq 序号变成了 2。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 665 bytes to udp/[192.168.4.4]:5090 at 12:30:57.936940:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 200 OK&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:5090;branch=z9hG4bK-d8754z-dae1693be9f8c10d-1---d8754z-;rport=5090&lt;br/&gt;From: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;;tag=9c709222&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;;tag=rrpQj11F86jeD&lt;br/&gt;Call-ID: NmFjNzA3MWY1MDI3NGViMjY1N2QwZDlmZWQ5ZGY2OGE.&lt;br/&gt;CSeq: 2 REGISTER&lt;br/&gt;Contact: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=d42207a765c0626b;transport=UDP&amp;gt;;expires=3600&lt;br/&gt;Date: Tue, 27 Apr 2010 12:30:57 GMT&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER,&lt;br/&gt;    NOTIFY, PUBLISH, SUBSCRIBE&lt;br/&gt;Supported: timer, precondition, path, replaces&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;FreeSWITCH 收到带有认证的注册消息后，核实 alice 身份，认证通过，回应 200 OK。 如果失败，则回应 403 Forbidden 或其它失败消息，如下。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 542 bytes to udp/[192.168.4.4]:5090 at 13:22:49.195554:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 403 Forbidden&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:5090;branch=z9hG4bK-d8754z-d447f43b66912a1b-1---d8754z-;rport=5090&lt;br/&gt;From: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;;tag=c097e17f&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4;transport=UDP&amp;gt;;tag=yeecX364pvryj&lt;br/&gt;Call-ID: ZjkxMGJmMjE4Y2ZiNjU5MzM5NDZkMTE5NzMzMzM0Mjc.&lt;br/&gt;CSeq: 2 REGISTER&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER,&lt;br/&gt;    NOTIFY, PUBLISH, SUBSCRIBE&lt;br/&gt;Supported: timer, precondition, path, replaces&lt;br/&gt;Content-Length: 0           &lt;br/&gt;&lt;/code&gt;&lt;p&gt;你可以看到，alice 的密码是不会直接在 SIP 中传送的，因而一定程序上保证了安全（当然还是会有中间人，重放之类的攻击，我们留到后面讨论）。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SIP 呼叫流程&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;UA 间直接呼叫&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;上面我们说过，SIP 的 UA 是平等的，如果一方知道另一方的地址，就可以通信。我们先来做一个实验。在笔者的机器上，我启动了两个软电话（UA）， 一个是 bob 的 X-Lite（左），另一个是 alice 是 Zoiper。它们的 IP 地址都是 192.168.4.4，而端口号分别是 26000 和 5090，当 bob 呼叫 alice 时，它只需直接呼叫 alice 的 SIP 地址：sip:alice@192.168.4.4:5090。如图，alice 的电话正在振铃：&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041634165153.png"&gt;&lt;img title="4-4" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="454" alt="4-4" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041634216761.png" width="735" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;详细的呼叫流程图为：&lt;/p&gt;&lt;code&gt;bob               alice&lt;br/&gt;|                     |&lt;br/&gt;|    INVITE           |&lt;br/&gt;|--------------------&amp;gt;|&lt;br/&gt;|    100 Trying       |&lt;br/&gt;|&amp;lt;--------------------|&lt;br/&gt;|    180 Ringing      |&lt;br/&gt;|&amp;lt;--------------------|&lt;br/&gt;|    200 OK           |&lt;br/&gt;|&amp;lt;--------------------|&lt;br/&gt;|    ACK              |&lt;br/&gt;|--------------------&amp;gt;|&lt;br/&gt;|                     |&lt;br/&gt;|&amp;lt;---RTP-------------&amp;gt;|&lt;br/&gt;|&amp;lt;---RTP-------------&amp;gt;|&lt;br/&gt;|&amp;lt;---RTP-------------&amp;gt;|&lt;br/&gt;|    ...              |&lt;br/&gt;|                     |&lt;br/&gt;|    BYE              |&lt;br/&gt;|&amp;lt;--------------------|&lt;br/&gt;|    200 OK           |&lt;br/&gt;|--------------------&amp;gt;|&lt;br/&gt;|                     |&lt;br/&gt;&lt;/code&gt;&lt;p&gt;首先 bob 向 alice 发送 INVITE 请求建立 SIP 连接，alice 的 UA 回 100 Trying 说我收到你的请求了，先等会，接着 alice 的电话开始振铃，并给对回消息 180 Ringing 说我这边已经振铃了，alice 一会就过来接电话，bob 的 UA 收到该消息后可以播放回铃音。接着 alice 接了电话，她发送 200 OK 消息给 bob，该消息是对 INVITE 消息的最终响应，而先前的 100 和 180 消息都是临时状态，只是表明呼叫进展的情况。 bob 收到 200 后向 alice 回 ACK 证实消息。 INVITE - 200 - ACK 完成三次握手，它们合在一起称作一个对话（Dialogue）。这时候 bob 已经在跟 alice 能通话了，他们通话的内容（语音数据）是在SIP之外的 RTP 包中传递的，我们后面再详细讨论。&lt;/p&gt;&lt;p&gt;最后，alice 挂断电话，向 bob 送 BYE 消息，bob 收到 BYE 后回送 200 OK，通话完毕。其中 BYE 和 200 OK 也是一个对话，而上面的所有消息，称作一个会话（Session）。&lt;/p&gt;&lt;p&gt;反过来也一样，alice 可以直接呼叫 bob 的地址： sip:bob@192.168.4.4:26000。&lt;/p&gt;&lt;p&gt;上面描述了一个最简单的 SIP 呼叫流程。实际上，SIP 还有其它一些消息，它们大致可分为请求和响应两类。请求由 UAC 发出，到达 UAS 后， UAS 回送响应消息。某些响应消息需要证实（ACK），以完成三次握手。其中请求消息包括 INVITE、ACK、OPTIOS、BYE、CANCEL、REGISTER 以及一些扩展 re-INVITE、PRACK、SUBSCRIBE、NOTIFY、UPDATE、MESSAGE、REFER等。而响应消息则都包含一个状态码。跟 HTTP 响应类似，状态码有三位数字组成。其中，1xx 组的响应为临时状态，表明呼叫进展的情况；2xx 表明请求已成功处理；3xx 表明 SIP 请求需要转向到另一个 UAS 处理；4xx 表明请求失败，这种失败一般是由客户端或网络引起的，如密码错误等；5xx 为服务器内部错误；6xx 为更严重的错误。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;通过 B2BUA 呼叫&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在真实世界中，bob 和 alice 肯定要经常改变位置，那么它们的 SIP 地址也会相应改变，并且，如果他们之中有一个或两个处于 NAT 的网络中时，直接通信就更困难了。所以，他们通常会借助于一个服务器来相互通信。通过注册到服务器上，他们都可以获得一个服务器上的 SIP 地址。注册服务器的地址一般是不变的，因此他们的 SIP 地址就不会发生变化，因而，他们总是能够进行通信。&lt;/p&gt;&lt;p&gt;我们让他们两个都注册到 FreeSWITCH 上。上面已经说过，FreeSWITCH 监听的端口是 SIP 默认的端口 5060。bob 和 alice 注册后，他们分别获得了一个服务器的地址（SIP URI）：sip:bob@192.168.4.4 和 sip:alice@192.168.4.4（默认的端口号 5060 可以省略）。&lt;/p&gt;&lt;p&gt;下面是 bob 呼叫 alice 的流程。需要指出，如果 bob 只是发起呼叫而不接收呼叫，他并不需要向 FreeSWITCH 注册（有些软交换服务器需要先注册才能发起呼叫，但 SIP 是不强制这么做的）。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 1118 bytes from udp/[192.168.4.4]:26000 at 13:31:39.938891:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;INVITE sip:alice@192.168.4.4 SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:26000;branch=z9hG4bK-d8754z-56adad736231f024-1---d8754z-;rport&lt;br/&gt;Max-Forwards: 70&lt;br/&gt;Contact: &amp;lt;sip:bob@192.168.4.4:26000&amp;gt;&lt;br/&gt;To: &amp;quot;alice&amp;quot;&amp;lt;sip:alice@192.168.4.4&amp;gt;&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 1 INVITE&lt;br/&gt;Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO&lt;br/&gt;Content-Type: application/sdp&lt;br/&gt;User-Agent: X-Lite release 1014k stamp 47051&lt;br/&gt;Content-Length: 594&lt;br/&gt;&lt;/code&gt;&lt;p&gt;上面的消息中省略了 SDP 的内容，我们将留到以后再探讨。bob 的 UAC 通过 INVITE 消息向 FreeSWITCH 发起请求。bob 的 UAC 用的是 X-Lite（User-Agent），它运行在端口 26000 上（实际上，它默认在端口也是 5060，但由于在我的实验环境下它也是跟 FreeSWITCH 运行在一台机器上，已被占用，因此它需要选择另一个端口）。其中，From 为主叫用户的地址，To 为被叫用户的地址。此时 FreeSWITCH 作为一个 UAS 接受请求并进行响应。它得知 bob 要呼叫 alice，需要在自己的数据库中查找 alice 是否已在服务器上注册，好知道应该怎么找到 alice。但在此之前，它先通知 bob 它已经收到了他的请求。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 345 bytes to udp/[192.168.4.4]:26000 at 13:31:39.940278:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 100 Trying&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:26000;branch=z9hG4bK-d8754z-56adad736231f024-1---d8754z-;rport=26000&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;To: &amp;quot;alice&amp;quot;&amp;lt;sip:alice@192.168.4.4&amp;gt;&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 1 INVITE&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Content-Length: 0        &lt;br/&gt;&lt;/code&gt;&lt;p&gt;FreeSWITCH 通过 100 Trying 消息告诉 bob “我已经收到你的消息了，别着急，我正在联系 alice 呢...” 该消息称为呼叫进展消息。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 826 bytes to udp/[192.168.4.4]:26000 at 13:31:39.943392:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 407 Proxy Authentication Required&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:26000;branch=z9hG4bK-d8754z-56adad736231f024-1---d8754z-;rport=26000&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;To: &amp;quot;alice&amp;quot; &amp;lt;sip:alice@192.168.4.4&amp;gt;;tag=B4pem31jHgtHS&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 1 INVITE&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Accept: application/sdp&lt;br/&gt;Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER,&lt;br/&gt;    NOTIFY, PUBLISH, SUBSCRIBE&lt;br/&gt;Supported: timer, precondition, path, replaces&lt;br/&gt;Allow-Events: talk, presence, dialog, line-seize, call-info, sla,&lt;br/&gt;    include-session-description, presence.winfo, message-summary, refer&lt;br/&gt;Proxy-Authenticate: Digest realm=&amp;quot;192.168.4.4&amp;quot;,&lt;br/&gt;    nonce=&amp;quot;31c5c3e0-cc6e-46c8-a661-599b0c7f87d8&amp;quot;, algorithm=MD5, qop=&amp;quot;auth&amp;quot;&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;但就在此时，FreeSWITCH 发现 bob 并不是授权用户，因而它需要确认 bob 的身份。它通过发送带有 Digest 验证信息的 407 消息来通知 bob（注意，这里与注册流程中的 401 不同）。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 319 bytes from udp/[192.168.4.4]:26000 at 13:31:39.945314:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;ACK sip:alice@192.168.4.4 SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:26000;branch=z9hG4bK-d8754z-56adad736231f024-1---d8754z-;rport&lt;br/&gt;To: &amp;quot;alice&amp;quot; &amp;lt;sip:alice@192.168.4.4&amp;gt;;tag=B4pem31jHgtHS&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 1 ACK&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;bob 回送 ACK 证实消息向 FreeSWITCH 证实已收到认证要求。并重新发送 INVITE，这次，附带了验证信息。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 1376 bytes from udp/[192.168.4.4]:26000 at 13:31:39.945526:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;INVITE sip:alice@192.168.4.4 SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:26000;branch=z9hG4bK-d8754z-87d60b47b6627c3a-1---d8754z-;rport&lt;br/&gt;Max-Forwards: 70&lt;br/&gt;Contact: &amp;lt;sip:bob@192.168.4.4:26000&amp;gt;&lt;br/&gt;To: &amp;quot;alice&amp;quot;&amp;lt;sip:alice@192.168.4.4&amp;gt;&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 2 INVITE&lt;br/&gt;Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO&lt;br/&gt;Content-Type: application/sdp&lt;br/&gt;Proxy-Authorization: Digest username=&amp;quot;bob&amp;quot;,realm=&amp;quot;192.168.4.4&amp;quot;,&lt;br/&gt;    nonce=&amp;quot;31c5c3e0-cc6e-46c8-a661-599b0c7f87d8&amp;quot;,&lt;br/&gt;    uri=&amp;quot;sip:alice@192.168.4.4&amp;quot;,response=&amp;quot;327887635344405bcd545da06763c466&amp;quot;,&lt;br/&gt;    cnonce=&amp;quot;c164b74f625ff2161bd8d47dba3a0ee2&amp;quot;,nc=00000001,qop=auth,&lt;br/&gt;    algorithm=MD5&lt;br/&gt;User-Agent: X-Lite release 1014k stamp 47051&lt;br/&gt;Content-Length: 594&lt;br/&gt;&lt;/code&gt;&lt;p&gt;这里也省略了 SDP 消息体。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 345 bytes to udp/[192.168.4.4]:26000 at 13:31:39.946349:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 100 Trying&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:26000;branch=z9hG4bK-d8754z-87d60b47b6627c3a-1---d8754z-;rport=26000&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;To: &amp;quot;alice&amp;quot;&amp;lt;sip:alice@192.168.4.4&amp;gt;&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 2 INVITE&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;FreeSWITCH 重新回 100 Trying，告诉 bob 呼叫进展情况。&lt;/p&gt;&lt;p&gt;至此，bob 与 FreeSWITCH 之间的通信已经初步建立，这种通信的通道称作一个信道（channel）。该信道是由 bob 的 UA 和 FreeSWITCH 的一个 UA 构成的，我们称它为 FreeSWITCH 的一条腿，叫做 a-leg。&lt;/p&gt;&lt;p&gt;接下来 FreeSWITCH 要建立另一条腿，称为 b-leg。它通过查打本地数据库，得到了 alice 的位置，接着启动一个 UA（用作 UAC），向 alice 发送 INVITE 消息。如下：&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 1340 bytes to udp/[192.168.4.4]:5090 at 13:31:40.028988:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;INVITE sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4;rport;branch=z9hG4bKey90QUyHZQXNN&lt;br/&gt;Route: &amp;lt;sip:alice@192.168.4.4:5090&amp;gt;;rinstance=e7d5364c81f2b879;transport=UDP&lt;br/&gt;Max-Forwards: 69&lt;br/&gt;From: &amp;quot;Bob&amp;quot; &amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=Dp9ZQS3SB26pg&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;&lt;br/&gt;Call-ID: 0d74ac35-cca4-122d-81a2-2990e5b2bd3e&lt;br/&gt;CSeq: 130069214 INVITE&lt;br/&gt;Contact: &amp;lt;sip:mod_sofia@192.168.4.4:5060&amp;gt;&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER,&lt;br/&gt;    NOTIFY, PUBLISH, SUBSCRIBE&lt;br/&gt;Supported: timer, precondition, path, replaces&lt;br/&gt;Allow-Events: talk, presence, dialog, line-seize, call-info, sla,&lt;br/&gt;    include-session-description, presence.winfo, message-summary, refer&lt;br/&gt;Content-Type: application/sdp&lt;br/&gt;Content-Disposition: session&lt;br/&gt;Content-Length: 313&lt;br/&gt;X-FS-Support: update_display&lt;br/&gt;Remote-Party-ID: &amp;quot;Bob&amp;quot; &amp;lt;sip:bob@192.168.4.4&amp;gt;;party=calling;screen=yes;privacy=off&lt;br/&gt;&lt;/code&gt;&lt;p&gt;你可以看到，该INVITE 的 Call-ID 与前面的不同，说明这是另一个 SIP 会话（Session）。另外，它还多了一个 Remote-Party-ID，它主要是用来支持来电显示。因为，在 alice 的话机上，希望显示 bob 的号码，显示呼叫它的那个 UA（负责 b-leg的那个 UA）没什么意义。与普通的 POTS 电话不同，在 SIP 电话中，不仅能显示电话号码（这里是 bob），还能显示一个可选的名字（“Bob”）。这也说明了 FreeSWITCH 这个 B2BUA 本身是一个整体，它虽然是以一个单独的 UA 呼叫 alice，但还是跟负责 bob 的那个 UA 有联系--就是这种背靠背的串联。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 309 bytes from udp/[192.168.4.4]:5090 at 13:31:40.193634:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 100 Trying&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4;rport=5060;branch=z9hG4bKey90QUyHZQXNN&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;&lt;br/&gt;From: &amp;quot;Bob&amp;quot; &amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=Dp9ZQS3SB26pg&lt;br/&gt;Call-ID: 0d74ac35-cca4-122d-81a2-2990e5b2bd3e&lt;br/&gt;CSeq: 130069214 INVITE&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;跟上面的流程差不多，alice回的呼叫进展。此时，alice 的 UA 开始振铃。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 431 bytes from udp/[192.168.4.4]:5090 at 13:31:40.193816:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 180 Ringing&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4;rport=5060;branch=z9hG4bKey90QUyHZQXNN&lt;br/&gt;Contact: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;;tag=3813e926&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=Dp9ZQS3SB26pg&lt;br/&gt;Call-ID: 0d74ac35-cca4-122d-81a2-2990e5b2bd3e&lt;br/&gt;CSeq: 130069214 INVITE&lt;br/&gt;User-Agent: Zoiper rev.5415&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;180也是呼叫进展消息，它说明，我这边已经准备好了，alice 的电话已经响了，她听到了一会就会接听。&lt;/p&gt;&lt;code&gt;send 1125 bytes to udp/[192.168.4.4]:26000 at 13:31:40.270533:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 183 Session Progress&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:26000;branch=z9hG4bK-d8754z-87d60b47b6627c3a-1---d8754z-;rport=26000&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;To: &amp;quot;alice&amp;quot; &amp;lt;sip:alice@192.168.4.4&amp;gt;;tag=cDg7NyjpeSg4m&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 2 INVITE&lt;br/&gt;Contact: &amp;lt;sip:alice@192.168.4.4:5060;transport=udp&amp;gt;&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Accept: application/sdp&lt;br/&gt;Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER,&lt;br/&gt;    NOTIFY, PUBLISH, SUBSCRIBE&lt;br/&gt;Supported: timer, precondition, path, replaces&lt;br/&gt;Allow-Events: talk, presence, dialog, line-seize, call-info, sla,&lt;br/&gt;    include-session-description, presence.winfo, message-summary, refer&lt;br/&gt;Content-Type: application/sdp&lt;br/&gt;Content-Disposition: session&lt;br/&gt;Content-Length: 267&lt;br/&gt;Remote-Party-ID: &amp;quot;alice&amp;quot; &amp;lt;sip:alice@192.168.4.4&amp;gt;&lt;br/&gt;&lt;/code&gt;&lt;p&gt;FreeSWITCH 在收到 alice 的 180 Ringing 消息后，便告诉 bob 呼叫进展情况，183 与 180 不同的是，它包含 SDP，即接下来它会向 bob 发送 RTP 的媒体流，就是回铃音。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 768 bytes from udp/[192.168.4.4]:5090 at 13:31:43.251980:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 200 OK&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4;rport=5060;branch=z9hG4bKey90QUyHZQXNN&lt;br/&gt;Contact: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;;tag=3813e926&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=Dp9ZQS3SB26pg&lt;br/&gt;Call-ID: 0d74ac35-cca4-122d-81a2-2990e5b2bd3e&lt;br/&gt;CSeq: 130069214 INVITE&lt;br/&gt;Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE&lt;br/&gt;Content-Type: application/sdp&lt;br/&gt;User-Agent: Zoiper rev.5415&lt;br/&gt;Content-Length: 226&lt;br/&gt;&lt;/code&gt;&lt;p&gt;alice 接听电话以后，其 UA 向 FreeSWITCH 送 200 OK，即应答消息。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 436 bytes to udp/[192.168.4.4]:5090 at 13:31:43.256692:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;ACK sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4;rport;branch=z9hG4bKF72SSpFNv0K8g&lt;br/&gt;Max-Forwards: 70&lt;br/&gt;From: &amp;quot;Bob&amp;quot; &amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=Dp9ZQS3SB26pg&lt;br/&gt;To: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;;tag=3813e926&lt;br/&gt;Call-ID: 0d74ac35-cca4-122d-81a2-2990e5b2bd3e&lt;br/&gt;CSeq: 130069214 ACK&lt;br/&gt;Contact: &amp;lt;sip:mod_sofia@192.168.4.4:5060&amp;gt;&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;FreeSWITCH 向 alice 回送证实消息，证实已经知道了。至此，b-leg已经完全建立完毕，多半这时 alice 已经开始说话了：“Hi, bob，你好……”&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 1135 bytes to udp/[192.168.4.4]:26000 at 13:31:43.293311:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 200 OK&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:26000;branch=z9hG4bK-d8754z-87d60b47b6627c3a-1---d8754z-;rport=26000&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;To: &amp;quot;alice&amp;quot; &amp;lt;sip:alice@192.168.4.4&amp;gt;;tag=cDg7NyjpeSg4m&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 2 INVITE&lt;br/&gt;Contact: &amp;lt;sip:alice@192.168.4.4:5060;transport=udp&amp;gt;&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER,&lt;br/&gt;    NOTIFY, PUBLISH, SUBSCRIBE&lt;br/&gt;Supported: timer, precondition, path, replaces&lt;br/&gt;Allow-Events: talk, presence, dialog, line-seize, call-info, sla,&lt;br/&gt;    include-session-description, presence.winfo, message-summary, refer&lt;br/&gt;Session-Expires: 120;refresher=uas&lt;br/&gt;Min-SE: 120&lt;br/&gt;Content-Type: application/sdp&lt;br/&gt;Content-Disposition: session&lt;br/&gt;Content-Length: 267&lt;br/&gt;Remote-Party-ID: &amp;quot;alice&amp;quot; &amp;lt;sip:alice@192.168.4.4&amp;gt;&lt;br/&gt;&lt;/code&gt;&lt;p&gt;与此同时，它也给 bob 送应答消息，告诉他电话已经接通了，可以跟 alice 说话了。在需要计费的情况下，应该从此时开始对 bob 的电话计费。bob 的 UA 收到该消息后启动麦克风让 bob 讲话。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 697 bytes from udp/[192.168.4.4]:26000 at 13:31:43.413025:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;ACK sip:alice@192.168.4.4:5060;transport=udp SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:26000;branch=z9hG4bK-d8754z-ef53864320037c04-1---d8754z-;rport&lt;br/&gt;Max-Forwards: 70&lt;br/&gt;Contact: &amp;lt;sip:bob@192.168.4.4:26000&amp;gt;&lt;br/&gt;To: &amp;quot;alice&amp;quot;&amp;lt;sip:alice@192.168.4.4&amp;gt;;tag=cDg7NyjpeSg4m&lt;br/&gt;From: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 2 ACK&lt;br/&gt;Proxy-Authorization: Digest username=&amp;quot;bob&amp;quot;,realm=&amp;quot;192.168.4.4&amp;quot;,&lt;br/&gt;    nonce=&amp;quot;31c5c3e0-cc6e-46c8-a661-599b0c7f87d8&amp;quot;,&lt;br/&gt;    uri=&amp;quot;sip:alice@192.168.4.4&amp;quot;,response=&amp;quot;327887635344405bcd545da06763c466&amp;quot;,&lt;br/&gt;    cnonce=&amp;quot;c164b74f625ff2161bd8d47dba3a0ee2&amp;quot;,nc=00000001,qop=auth,&lt;br/&gt;    algorithm=MD5&lt;br/&gt;User-Agent: X-Lite release 1014k stamp 47051&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;bob 在收到应答消息后也需要回送证实消息。至此 a-leg 也建立完毕。双方正常通话。&lt;/p&gt;&lt;p&gt;[][][][][][] &lt;strong&gt;此处省略 5000 字&lt;/strong&gt; [][][][][]&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 484 bytes from udp/[192.168.4.4]:5090 at 13:31:49.949240:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;BYE sip:mod_sofia@192.168.4.4:5060 SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:5090;branch=z9hG4bK-d8754z-2146ae0ddd113efe-1---d8754z-;rport&lt;br/&gt;Max-Forwards: 70&lt;br/&gt;Contact: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;&lt;br/&gt;To: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=Dp9ZQS3SB26pg&lt;br/&gt;From: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;;tag=3813e926&lt;br/&gt;Call-ID: 0d74ac35-cca4-122d-81a2-2990e5b2bd3e&lt;br/&gt;CSeq: 2 BYE&lt;br/&gt;User-Agent: Zoiper rev.5415&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;终于聊完了，alice 挂断电话，发送 BYE 消息。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 543 bytes to udp/[192.168.4.4]:5090 at 13:31:49.950425:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 200 OK&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4:5090;branch=z9hG4bK-d8754z-2146ae0ddd113efe-1---d8754z-;rport=5090&lt;br/&gt;From: &amp;lt;sip:alice@192.168.4.4:5090;rinstance=e7d5364c81f2b879;transport=UDP&amp;gt;;tag=3813e926&lt;br/&gt;To: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=Dp9ZQS3SB26pg&lt;br/&gt;Call-ID: 0d74ac35-cca4-122d-81a2-2990e5b2bd3e&lt;br/&gt;CSeq: 2 BYE&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER,&lt;br/&gt;    NOTIFY, PUBLISH, SUBSCRIBE&lt;br/&gt;Supported: timer, precondition, path, replaces&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;FreeSWITCH 返回 OK，b-leg 释放完毕。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;send 630 bytes to udp/[192.168.4.4]:26000 at 13:31:50.003165:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;BYE sip:bob@192.168.4.4:26000 SIP/2.0&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4;rport;branch=z9hG4bKggvjUH0rS99tc&lt;br/&gt;Max-Forwards: 70&lt;br/&gt;From: &amp;quot;alice&amp;quot; &amp;lt;sip:alice@192.168.4.4&amp;gt;;tag=cDg7NyjpeSg4m&lt;br/&gt;To: &amp;quot;Bob&amp;quot; &amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 130069219 BYE&lt;br/&gt;Contact: &amp;lt;sip:alice@192.168.4.4:5060;transport=udp&amp;gt;&lt;br/&gt;User-Agent: FreeSWITCH-mod_sofia/1.0.trunk-16981M&lt;br/&gt;Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER,&lt;br/&gt;    NOTIFY, PUBLISH, SUBSCRIBE&lt;br/&gt;Supported: timer, precondition, path, replaces&lt;br/&gt;Reason: Q.850;cause=16;text=&amp;quot;NORMAL_CLEARING&amp;quot;&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;接下来 FreeSWITCH 给 bob 发送 BYE，通知要拆线了。出于对 bob 负责，它包含了挂机原因（Hangup Cause），此处 NOMAL_CLEARING 表示正常释放。&lt;/p&gt;&lt;code&gt;------------------------------------------------------------------------&lt;br/&gt;recv 367 bytes from udp/[192.168.4.4]:26000 at 13:31:50.111765:&lt;br/&gt;------------------------------------------------------------------------&lt;br/&gt;SIP/2.0 200 OK&lt;br/&gt;Via: SIP/2.0/UDP 192.168.4.4;rport=5060;branch=z9hG4bKggvjUH0rS99tc&lt;br/&gt;Contact: &amp;lt;sip:bob@192.168.4.4:26000&amp;gt;&lt;br/&gt;To: &amp;quot;Bob&amp;quot;&amp;lt;sip:bob@192.168.4.4&amp;gt;;tag=15c8325a&lt;br/&gt;From: &amp;quot;alice&amp;quot;&amp;lt;sip:alice@192.168.4.4&amp;gt;;tag=cDg7NyjpeSg4m&lt;br/&gt;Call-ID: YWEwYjNlZTZjOWZjNDg3ZjU3MjQ3MTA1ZmQ1MDM5YmQ.&lt;br/&gt;CSeq: 130069219 BYE&lt;br/&gt;User-Agent: X-Lite release 1014k stamp 47051&lt;br/&gt;Content-Length: 0&lt;br/&gt;&lt;/code&gt;&lt;p&gt;bob 回送 OK，a-leg 释放完毕，通话结束。从下图可以很形象地看出 FreeSWITCH 的两条“腿”-- a-leg 和 b-leg。&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041634247091.png"&gt;&lt;img title="4-3" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="347" alt="4-3" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041634263701.png" width="313" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;整个呼叫流程图示如下：&lt;/p&gt;&lt;code&gt;bob (UAC)           [ UAS-UAC ]          (UAS) alice&lt;br/&gt; |                     |   |                     |&lt;br/&gt; |   INVITE            |   |                     |&lt;br/&gt; |--------------------&amp;gt;|   |                     |&lt;br/&gt; |   100 Trying        |   |                     |&lt;br/&gt; |&amp;lt;--------------------|   |                     |&lt;br/&gt; |   407 Authentication Required                 |&lt;br/&gt; |&amp;lt;--------------------|   |                     |&lt;br/&gt; |   ACK               |   |                     |&lt;br/&gt; |--------------------&amp;gt;|   |                     |&lt;br/&gt; |   INVITE            |   |                     |&lt;br/&gt; |--------------------&amp;gt;|   |                     |&lt;br/&gt; |   100 Trying        |   |    INVITE           |&lt;br/&gt; |&amp;lt;--------------------&amp;lt;   &amp;gt;--------------------&amp;gt;|&lt;br/&gt; |                     |   |    100 Trying       |&lt;br/&gt; |                     |   |&amp;lt;--------------------|&lt;br/&gt; |   183 Progress      |   |    180 Ringing      |&lt;br/&gt; |&amp;lt;--------------------&amp;lt;   |&amp;lt;--------------------|&lt;br/&gt; |                     |   |    200 OK           |&lt;br/&gt; |                     |   |&amp;lt;--------------------|&lt;br/&gt; |   200 OK            |   |    ACK              |&lt;br/&gt; |&amp;lt;--------------------&amp;lt;   &amp;gt;--------------------&amp;gt;|&lt;br/&gt; |   ACK               |   |                     |&lt;br/&gt; |--------------------&amp;gt;|   |                     |&lt;br/&gt; |                                               |&lt;br/&gt; |                Call Connected                 |&lt;br/&gt; |                                               |&lt;br/&gt; |                     |   |     BYE             |&lt;br/&gt; |                     |   |&amp;lt;--------------------|&lt;br/&gt; |   BYE               |   |    200 OK           |&lt;br/&gt; |&amp;lt;--------------------&amp;lt;   &amp;gt;--------------------&amp;gt;|&lt;br/&gt; |   200 OK            |   |                     |&lt;br/&gt; |--------------------&amp;gt;|   |                     |&lt;br/&gt; |                     |   |                     |&lt;br/&gt;&lt;/code&gt;&lt;p&gt;从流程图可以看出，右半部分跟上一节“UA间直接呼叫”一样，而左半部分也类似。这就更好的说明了实际上有 4 个 UA （两对）参与到了通信中，并且，有两个 Session。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;再论 SIP URI&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;上面我们介绍了一些 FreeSWITCH 的基本概念，并通过一个真正的呼叫流程讲解了一下 SIP。由于实验中所有 UA 都 运行在一台机器上，这可能会引起迷惑，如果我们有三台服务器，那么情况可能是：&lt;/p&gt;&lt;code&gt;                       /---------------\&lt;br/&gt;                    |  FreeSWITCH   |&lt;br/&gt;                    |  192.168.0.1  |&lt;br/&gt;                    \ --------------/&lt;br/&gt;sip:bob@192.168.0.1    /          \     sip:alice@192.168.0.1&lt;br/&gt;                      /            \&lt;br/&gt;                     /              \&lt;br/&gt;  /-----------------\               /-----------------\&lt;br/&gt;  |  bob            |               |  alice          |&lt;br/&gt;  |  192.168.0.100  |               |  192.168.0.200  |&lt;br/&gt;  \-----------------/               \-----------------/&lt;br/&gt;&lt;br/&gt;  sip:bob@192.168.0.100                sip:alice@192.168.0.200&lt;br/&gt;&lt;/code&gt;&lt;p&gt;alice 注册到 FreeSWITCH，bob呼叫她时，使用她的服务器地址，即 sip:alice@192.168.0.1，FreeSWITCH 接到请求后，查找本地数据库，发现 alice 的实际地址是 sip:alice@192.168.0.200，便可以建立呼叫。&lt;/p&gt;&lt;p&gt;SIP URI 除使用 IP 地址外，也可以使用域名，如 sip:alice@freeswitch.org.cn。更高级也更复杂的配置则需要 DNS 的 SRV 记录，在此就不做讨论了。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/1971023.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/03/04/1971023.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mugua/archive/2011/03/04/1970963.html</id><title type="text">SIP简介，第2部分：SIP SERVLET[转]</title><summary type="text">会话发起协议(Session Initiation Protocol，SIP)是一个重要的信令协议，它正在迅速被电信业采用以构建下一代应用程序。Java是用于SIP开发的极好平台，尤其是在进行服务器端开发时。类似于HTTP servlet，SIP Servlet API使SIP服务的开发变得更轻松。本文将介绍SIP servlet技术，并提供一个带注释的例子。</summary><published>2011-03-04T07:35:00Z</published><updated>2011-03-04T07:35:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/03/04/1970963.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/03/04/1970963.html"/><content type="html">&lt;p&gt;&lt;strong&gt;摘要&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;会话发起协议(Session Initiation Protocol，SIP)是一个重要的信令协议，它正在迅速被电信业采用以构建下一代应用程序。Java是用于SIP开发的极好平台，尤其是在进行服务器端开发时。类似于HTTP servlet，SIP Servlet API使SIP服务的开发变得更轻松。本文将介绍SIP servlet技术，并提供一个带注释的例子。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;即时消息传递正在改变人们的生活。它是一个非常有用的工具，结合了电子邮件、Internet电话以及文件传输应用程序的优点。用户甚至可以看到谁在线、谁的状态为“忙碌”。当然了，人们可以用它来长时间地进行不创造任何效益的聊天。但是，员工也可以利用它在老板会见客户时向他发送极为重要的信息。&lt;/p&gt;  &lt;p&gt;所以，市场上出现如此多的不同种类的即时消息传递应用程序也就不足为怪了。有这么多的选择应该是一件好事，可是如果员工使用的应用程序与老板使用的不同，那又会怎么样呢？这将是一个大问题，因为这些应用程序大多都使用专有的协议。&lt;/p&gt;  &lt;p&gt;SIP为我们带来了福音。SIP很有可能会成为标准的即时消息传递协议。&lt;/p&gt;  &lt;p&gt;在本文中，我将开发一个简单的SIP应用程序——一个允许SIP即时messenger （消息传递应用程序）彼此联系并互相传播消息的聊天室服务器端。&lt;/p&gt;  &lt;p&gt;SIP SIMPLE    &lt;br /&gt;    &lt;br /&gt;SIMPLE ，即SIP Instant Messaging and Presence Leveraging Extension（SIP即时消息和现场支持扩展）的缩写，是一个工作组以及一组SIP扩展。其中的一个扩展是MESSAGE消息。可以用它来发送包含文本和二进制内容的任意组合的即时消息。这种消息使用起来非常简单，这也是我决定使用它来开发第一个SIP应用程序的原因。&lt;/p&gt;  &lt;p&gt;TextClient    &lt;br /&gt;    &lt;br /&gt;为了测试我们的应用程序，我提供了一个小型SIP即时messenger应用程序（参见文章结尾处的“下载”部分）。该应用程序向其他messenger或服务器发送MESSAGE消息。用户界面中包含了客户端的地址、好友地址的输入字段、一个文本消息以及一个提交按钮。图1显示了正在运行的TextClient。&lt;/p&gt;  &lt;table class="ln" cellspacing="0" bordercolordark="#ffffff" align="center" bgcolor="#ddddd0" bordercolorlight="#999999" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td bgcolor="#ffffff"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041637151456.jpg"&gt;&lt;img title="1204120" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="336" alt="1204120" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041637175243.jpg" width="342" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="it" align="center" bgcolor="#dddddd"&gt;图1. 运行中的TextClient&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;要启动TextClient，只需使用以下命令：&lt;/p&gt;  &lt;p&gt;java -jar textclient.jar dev2dev.textclient.TextClient username port    &lt;br /&gt;    &lt;br /&gt;该命令使用JAIN SIP API参考实现作为一个SIP协议栈。我们提供了该工具的源代码，如果您希望了解更多，我推荐您读一下源代码。&lt;/p&gt;  &lt;p&gt;ChatRoomServer    &lt;br /&gt;    &lt;br /&gt;下面是示例应用程序的需求&lt;/p&gt;  &lt;p&gt;聊天室是一个虚拟空间，不同的即时messenger应用程序可以在其中进行交互。传入聊天室的消息将向聊天室中其他所有的人进行广播。换句话说，所有的消息都可以被所有用户看到。这意味着，当一个消息到达服务器端应用程序时，用户的地址将被添加到一个列表中。然后消息将被发送到该列表中的所有用户。&lt;/p&gt;  &lt;p&gt;此外，还可以实现“命令”。命令以正斜杠(/)开头，它不被广播，而是由服务器自己处理，用于特定功能。我将实现的命令包括：&lt;/p&gt;  &lt;p&gt;/join：默默地进入一个聊天室，不广播任何消息。    &lt;br /&gt;    &lt;br /&gt;/who：打印一份该聊天室所有用户的列表。     &lt;br /&gt;    &lt;br /&gt;/quit：离开聊天室，不再有消息传入。     &lt;br /&gt;    &lt;br /&gt;SIP Servlet API     &lt;br /&gt;    &lt;br /&gt;SIP Servlet API (JSR 116)是一个服务器端接口，它描述了一个SIP组件或服务的容器。这正适合用于开发ChatRoomServer。下载该规范，并解压缩。生成的文件夹包括一些库(servlet.jar、sipservlet.jar)以及文档。我无法获得运行示例SIP servlet的参考实现，所以我想您也不必费心去找它了。&lt;/p&gt;  &lt;p&gt;SIP servlet最核心的概念是包含。SIP服务是部署或运行在在一个容器或SIP应用服务器上的打包SIP servlet。容器提供了可供应用程序使用的许多服务，比如自动重试、消息调度和排队、分流和归并，以及状态管理。应用程序中只需包含高级的消息处理和业务逻辑。这使SIP服务的开发成为一件轻而易举的事情。&lt;/p&gt;  &lt;p&gt;本文的目的不是要提供对SIP Servlet API技术的全面介绍。因此我只简要概述了该API和示例代码，更多信息请参见文章结尾处的“参考资料”部分。&lt;/p&gt;  &lt;p&gt;服务器端代码    &lt;br /&gt;    &lt;br /&gt;如果您曾经开发过HTTP servlet，那么服务器端的代码会让您感到非常熟悉。如果您还不知道什么是servlet，您应该首先了解一下。SIP Servlet规范是HTTP Servlet规范的扩展。其语法、容器行为，甚至方法名都是相似的。&lt;/p&gt;  &lt;p&gt;下面我将详细分析该例子。它主要由3个部分组成：&lt;/p&gt;  &lt;p&gt;生命周期方法    &lt;br /&gt;    &lt;br /&gt;这些方法在启动或关闭servlet时被容器调用：&lt;/p&gt;  public class ChatRoomServer extends SipServlet {&lt;br/&gt;&lt;br/&gt;/** Context attribute key to store user list. */&lt;br/&gt;public static String THE_LIST=&amp;quot;dev2dev.chatroomserver.userList&amp;quot;;&lt;br/&gt;&lt;br/&gt;/** Init parameter key to retrieve the chat room's address. */&lt;br/&gt;public static String THE_NAME=&amp;quot;dev2dev.chatroomserver.name&amp;quot;;&lt;br/&gt;&lt;br/&gt;/** This chat room server's address, retrieved from the init params. */&lt;br/&gt;public String serverAddress;&lt;br/&gt;&lt;br/&gt;/** This is called by the container when starting up the service. */&lt;br/&gt;public void init() throws ServletException {&lt;br/&gt; super.init();&lt;br/&gt; getServletContext().setAttribute(THE_LIST,new ArrayList());&lt;br/&gt; serverAddress = getServletConfig().getInitParameter(THE_NAME);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;/** This is called by the container when shutting down the service. */&lt;br/&gt;public void destroy() {&lt;br/&gt; try&lt;br/&gt; {&lt;br/&gt;  sendToAll(serverAddress, &amp;quot;Server is shutting down -- goodbye!&amp;quot;);&lt;br/&gt; } catch (Throwable e)&lt;br/&gt; { //ignore all errors when shutting down.&lt;br/&gt;  e.printStackTrace();&lt;br/&gt; }&lt;br/&gt; super.destroy();&lt;br/&gt;}&lt;br/&gt;...&lt;p&gt;在初始化方法中，我创建了一个所有会话共享的全局属性。这是用户的列表。我还获得了该聊天室的地址（servlet参数）以备将来使用。&lt;/p&gt;&lt;li&gt;&lt;strong&gt;消息处理方法&lt;/strong&gt;   &lt;p&gt;SIP servlet与HTTP servlet稍有不同。对于HTTP servlet，您处理传入的请求，并发送响应消息。而对于SIP servlet，可以发送和接收请求和响应。我将说明如何做到这一点。&lt;/p&gt;  &lt;p&gt;当收到消息（请求或响应）时，容器将调用下面的方法。容器将按照下面图表的顺序调用这些方法，也可以重写这些方法来根据消息的类型处理消息：&lt;/p&gt;  &lt;table class="tabel-general" width="100%" border="1"&gt;&lt;tbody&gt;      &lt;tr&gt;        &lt;th colspan="2"&gt;void service(ServletRequest,ServletResponse) 如果对其进行重写，不要忘记调用super.service()。 其默认实现调用以下方法之一： &lt;/th&gt;      &lt;/tr&gt;      &lt;tr&gt;        &lt;td class="left" width="50%"&gt;void doRequest(SipServletRequest)           &lt;br /&gt;          &lt;br /&gt;如果对其进行重写，不要忘记调用super.doRequest()。           &lt;br /&gt;          &lt;br /&gt;其默认实现调用以下方法之一：&lt;/td&gt;        &lt;td class="right" width="50%"&gt;void doResponse(SipServletResponse)           &lt;br /&gt;          &lt;br /&gt;如果对其进行重写，不要忘记调用super.doResponse()。           &lt;br /&gt;          &lt;br /&gt;其默认实现调用以下方法之一：:&lt;/td&gt;      &lt;/tr&gt;      &lt;tr&gt;        &lt;td class="left" width="50%"&gt;下列请求方法之一（自解释）：           &lt;ul&gt;            &lt;li&gt;doAck(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doBye(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doCancel(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doInfo(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doInvite(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doMessage(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doNotify(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doOptions(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doPrack(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doRegister(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doRequest(SipServletRequest) &lt;/li&gt;            &lt;li&gt;doResponse(SipServletResponse) &lt;/li&gt;            &lt;li&gt;doSubscribe(SipServletRequest) &lt;/li&gt;          &lt;/ul&gt;        &lt;/td&gt;        &lt;td class="right" width="50%"&gt;下列响应方法之一：           &lt;p&gt;&lt;/p&gt;          &lt;ul&gt;            &lt;li&gt;doProvisionalResponse(SipServletResponse)—对应于1xx-类响应消息。 &lt;/li&gt;            &lt;li&gt;doSuccessResponse(SipServletResponse)—对应于2xx-类响应消息。 &lt;/li&gt;            &lt;li&gt;doRedirectResponse(SipServletResponse)—对应于3xx-类响应消息。 &lt;/li&gt;            &lt;li&gt;doErrorResponse(SipServletResponse)—对应于4xx-、5xx-以及6xx-类响应消息。 &lt;/li&gt;          &lt;/ul&gt;        &lt;/td&gt;      &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;例如，MESSAGE可以调用以下方法：&lt;/p&gt;  &lt;ol&gt;    &lt;li&gt;service()，传入一个SipServletRequest（必须进行类型转换）以及null &lt;/li&gt;    &lt;li&gt;doRequest() &lt;/li&gt;    &lt;li&gt;doMessage() &lt;/li&gt;  &lt;/ol&gt;  &lt;p&gt;通常只重写最后一级的方法，除非使用了非标准的SIP消息，或者希望收集有关消息的统计信息。     &lt;br /&gt;    &lt;br /&gt;下面是处理即时消息的代码：&lt;/p&gt;  /** This is called by the container when a MESSAGE message arrives. */&lt;br/&gt;protected void doMessage(SipServletRequest request) throws&lt;br/&gt;        ServletException, IOException {&lt;br/&gt;&lt;br/&gt;    request.createResponse(SipServletResponse.SC_OK).send();&lt;br/&gt;&lt;br/&gt;    String message = request.getContent().toString();&lt;br/&gt;    String from = request.getFrom().toString();&lt;br/&gt;&lt;br/&gt;    //A user asked to quit.&lt;br/&gt;    if(message.equalsIgnoreCase(&amp;quot;/quit&amp;quot;)) {&lt;br/&gt;        sendToUser(from, &amp;quot;Bye&amp;quot;);&lt;br/&gt;        removeUser(from);&lt;br/&gt;        return;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    //Add user to the list&lt;br/&gt;    if(!containsUser(from)) {&lt;br/&gt;        sendToUser(from, &amp;quot;Welcome to chatroom &amp;quot; + serverAddress +&lt;br/&gt;                &amp;quot;. Type '/quit' to exit.&amp;quot;);&lt;br/&gt;        addUser(from);&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    //If the user is joining the chat room silently, no message&lt;br/&gt;    //to broadcast, return.&lt;br/&gt;    if(message.equalsIgnoreCase(&amp;quot;/join&amp;quot;)) {&lt;br/&gt;        return;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    //We could implement more IRC commands here,&lt;br/&gt;    //see http://www.mirc.com/cmds.html&lt;br/&gt;    sendToAll(from, message);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;/**&lt;br/&gt; * This is called by the container when an error is received&lt;br/&gt; * regarding a sent message, including timeouts.&lt;br/&gt; */&lt;br/&gt;protected void doErrorResponse(SipServletResponse response)&lt;br/&gt;        throws ServletException, IOException {&lt;br/&gt;    super.doErrorResponse(response);&lt;br/&gt;    //The receiver of the message probably dropped off. Remove&lt;br/&gt;    //the receiver from the list.&lt;br/&gt;    String receiver = response.getTo().toString();&lt;br/&gt;    removeUser(receiver);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;/**&lt;br/&gt; * This is called by the container when a 2xx-OK message is&lt;br/&gt; * received regarding a sent message.&lt;br/&gt; */&lt;br/&gt;protected void doSuccessResponse(SipServletResponse response)&lt;br/&gt;        throws ServletException, IOException {&lt;br/&gt;    super.doSuccessResponse(response);&lt;br/&gt;    //We created the app session, we have to destroy it too.&lt;br/&gt;    response.getApplicationSession().invalidate();&lt;br/&gt;}  &lt;p&gt;第一个方法在收到一个MESSAGE消息时被调用。最初以一条200 OK消息响应，表明收到了消息。然后它处理服务器命令，比如/join。最后，它调用一个业务逻辑方法来广播传入的消息。&lt;/p&gt;  &lt;p&gt;传入的错误响应消息表明上一个请求失败了。这可能意味着有一个用户被断开了。只需将该用户从列表中移除即可。&lt;/p&gt;  &lt;p&gt;成功的响应消息表明上一个MESSAGE消息被即时messenger正确地接收了。因此不再需要该会话，可以将其删除了。通常，MESSAGE消息是以无状态的形式发送的，并不保存消息之间的连接信息。（对于INVITE消息来说，情况不是这样的，它打开一个有状态的会话直到发送BYE。）&lt;/p&gt;&lt;/li&gt;&lt;li&gt;业务逻辑代码   &lt;p&gt;其余的代码由helper方法组成。前两个方法向即时messenger发送消息。要发送消息，使用一个工厂创建以下两项：&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;一个SipApplicationSession（稍后将详细介绍） &lt;/li&gt;    &lt;li&gt;一个请求消息 &lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;此时，可以随心所欲地修改消息。在我们的例子中，我们在有效负载中添加即时消息文本。最后，发送该消息。&lt;/p&gt;  private void sendToAll(String from, String message)&lt;br/&gt;        throws ServletParseException, IOException {&lt;br/&gt;    SipFactory factory = (SipFactory)getServletContext().&lt;br/&gt;        getAttribute(&amp;quot;javax.servlet.sip.SipFactory&amp;quot;);&lt;br/&gt;&lt;br/&gt;    List list = (List)getServletContext().getAttribute(THE_LIST);&lt;br/&gt;    Iterator users = list.iterator();&lt;br/&gt;    while (users.hasNext()) { //Send this message to all on the list.&lt;br/&gt;        String user = (String) users.next();&lt;br/&gt;&lt;br/&gt;        SipApplicationSession session =&lt;br/&gt;            factory.createApplicationSession();&lt;br/&gt;        SipServletRequest request = factory.createRequest(session,&lt;br/&gt;                &amp;quot;MESSAGE&amp;quot;, serverAddress, user);&lt;br/&gt;        String msg = from + &amp;quot; sent message: &lt;br/&gt;&amp;quot; + message;&lt;br/&gt;        request.setContent(msg.getBytes(), &amp;quot;text/plain&amp;quot;);&lt;br/&gt;        request.send();&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;private void sendToUser(String to, String message)&lt;br/&gt;        throws ServletParseException, IOException {&lt;br/&gt;    SipFactory factory = (SipFactory)getServletContext().&lt;br/&gt;        getAttribute(&amp;quot;javax.servlet.sip.SipFactory&amp;quot;);&lt;br/&gt;    SipApplicationSession session = factory.createApplicationSession();&lt;br/&gt;    SipServletRequest request = factory.createRequest(session,&lt;br/&gt;            &amp;quot;MESSAGE&amp;quot;, serverAddress, to);&lt;br/&gt;    request.setContent(message.getBytes(), &amp;quot;text/plain&amp;quot;);&lt;br/&gt;    request.send();&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;private boolean containsUser(String from) {&lt;br/&gt;    List list = (List)getServletContext().getAttribute(THE_LIST);&lt;br/&gt;    return list.contains(from);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;private void addUser(String from) {&lt;br/&gt;    List list = (List)getServletContext().getAttribute(THE_LIST);&lt;br/&gt;    list.add(from);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;private void removeUser(String from) {&lt;br/&gt;    List list = (List)getServletContext().getAttribute(THE_LIST);&lt;br/&gt;    list.remove(from);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;}  &lt;p&gt;&lt;strong&gt;部署描述符&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;对于HTTP servlet，还必须编写web.xml部署描述符。而在SIP servlet中，对应的文件是sip.xml，我们在其中列出SIP servlet、初始化参数以及映射（哪个SIP servlet处理哪些SIP消息）。关于该文件语法的更多信息，请参见&lt;a href="http://jcp.org/aboutJava/communityprocess/final/jsr116/index.html" target="_blank"&gt;SIP Servlet规范&lt;/a&gt;中15.5节的DTD。其语法类似于&lt;a href="http://e-docs.bea.com/wls/docs81/webapp/web_xml.html" target="_blank"&gt;web.xml&lt;/a&gt;，但&lt;servlet-mapping&gt;&lt;/servlet-mapping&gt;标签除外。它不会将一个URL模式映射到servlet，而是（基于字段和子字段的内容）描述一个条件，SIP请求必须满足这个条件才能被映射到servlet。SIP Servlet规范第11节描述了所有的字段、子字段以及用于该映射的条件。&lt;/p&gt;  &lt;p&gt;注意，该映射只用于初始请求；同一个会话/对话中的后续请求由处理初始请求的同一servlet处理。     &lt;br /&gt;    &lt;br /&gt;下面是用于ChatRoomServer的XML代码：&lt;/p&gt;  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br/&gt;&amp;lt;!DOCTYPE sip-app&lt;br/&gt;   PUBLIC &amp;quot;-//Java Community Process//DTD SIP Application 1.0//EN&amp;quot;&lt;br/&gt;   &amp;quot;http://www.jcp.org/dtd/sip-app_1_0.dtd&amp;quot;&amp;gt;&lt;br/&gt;&amp;lt;sip-app&amp;gt;&lt;br/&gt;   &amp;lt;servlet&amp;gt;&lt;br/&gt;      &amp;lt;servlet-name&amp;gt;ChatRoomServer&amp;lt;/servlet-name&amp;gt;&lt;br/&gt;      &amp;lt;servlet-class&amp;gt;dev2dev.chatroomserver.ChatRoomServer&amp;lt;/servlet-class&amp;gt;&lt;br/&gt;      &amp;lt;init-param&amp;gt;&lt;br/&gt;         &amp;lt;param-name&amp;gt;dev2dev.chatroomserver.name&amp;lt;/param-name&amp;gt;&lt;br/&gt;         &amp;lt;!-- This will be replaced by the build script --&amp;gt;&lt;br/&gt;         &amp;lt;param-value&amp;gt;sip:chatroomname&amp;lt;/param-value&amp;gt;&lt;br/&gt;      &amp;lt;/init-param&amp;gt;&lt;br/&gt;   &amp;lt;/servlet&amp;gt;&lt;br/&gt;&lt;br/&gt;   &amp;lt;servlet-mapping&amp;gt;&lt;br/&gt;      &amp;lt;servlet-name&amp;gt;ChatRoomServer&amp;lt;/servlet-name&amp;gt;&lt;br/&gt;      &amp;lt;pattern&amp;gt;&lt;br/&gt;         &amp;lt;and&amp;gt;&lt;br/&gt;            &amp;lt;equal&amp;gt;&lt;br/&gt;               &amp;lt;var&amp;gt;request.uri.user&amp;lt;/var&amp;gt;&lt;br/&gt;               &amp;lt;!-- This will be replaced by the build script --&amp;gt;&lt;br/&gt;               &amp;lt;value&amp;gt;chatroomname&amp;lt;/value&amp;gt;&lt;br/&gt;            &amp;lt;/equal&amp;gt;&lt;br/&gt;           &amp;lt;equal&amp;gt;&lt;br/&gt;             &amp;lt;var&amp;gt;request.method&amp;lt;/var&amp;gt;&lt;br/&gt;             &amp;lt;value&amp;gt;MESSAGE&amp;lt;/value&amp;gt;&lt;br/&gt;           &amp;lt;/equal&amp;gt;&lt;br/&gt;         &amp;lt;/and&amp;gt;&lt;br/&gt;      &amp;lt;/pattern&amp;gt;&lt;br/&gt;   &amp;lt;/servlet-mapping&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;/sip-app&amp;gt;  &lt;p&gt;代码看起来很复杂，其实并非如此。Servlet映射说明了：&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;如果请求URI的用户名部分等于chatroomname，则将传入的MESSAGE请求映射到ChatRoomServer Servlet。&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;该聊天室名称只是一个占位符。在编译过程中，会用实际的聊天室名称替换关键字“chatroomname”。&lt;/p&gt;  &lt;p&gt;这么做有什么用呢？您可以将同样的服务部署多次，每次都使用其独有的聊天室名称，而消息可以自动发送到相应的servlet。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;构建、打包、部署&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;需要对SIP servlet进行编译，并将其打包到SAR(Servlet ARchives)文件中。这些文件在功能上等效于WAR文件，结构也相同。参见图2：&lt;/p&gt;  &lt;p&gt;    &lt;table class="ln" cellspacing="0" bordercolordark="#ffffff" align="center" bgcolor="#ddddd0" bordercolorlight="#999999" border="1"&gt;&lt;tbody&gt;        &lt;tr&gt;          &lt;td bgcolor="#ffffff"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041637197916.png"&gt;&lt;img title="无标题" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="171" alt="无标题" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041637223786.png" width="199" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td class="it" align="center" bgcolor="#dddddd"&gt;图2. SAR文件结构&lt;/td&gt;        &lt;/tr&gt;      &lt;/tbody&gt;&lt;/table&gt;  &lt;/p&gt;  &lt;p&gt;最后一步是部署，这根据SIP应用服务器的不同而不同。通常需要将SAR文件复制到一个部署文件夹中，然后部署应用程序。&lt;/p&gt;  &lt;p&gt;下面的&lt;a href="http://ant.apache.org/manual" target="_blank"&gt;Ant&lt;/a&gt;脚本可以帮助部署：&lt;/p&gt;  &amp;lt;project name=&amp;quot;ChatRoomServer&amp;quot;  default=&amp;quot;build&amp;quot;  basedir=&amp;quot;.&amp;quot;&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;!-- Change this to specify the name of the chat room. In order to&lt;br/&gt;         send messages to this chat room, simply deploy just4fun.sar, and&lt;br/&gt;         use the address sip:just4fun.0.2.5060:5060. --&amp;gt;&lt;br/&gt;    &amp;lt;property name=&amp;quot;chatroomname&amp;quot; value=&amp;quot;just4fun&amp;quot; /&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;!-- Change this to the address and port of the SIP server. --&amp;gt;&lt;br/&gt;    &amp;lt;property name=&amp;quot;serveraddress&amp;quot; value=&amp;quot;10.0.2.69:5060&amp;quot; /&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;!-- Change this to the location of the SAR deployment folder. --&amp;gt;&lt;br/&gt;    &amp;lt;property name=&amp;quot;sar.deployment&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;property name=&amp;quot;src&amp;quot; value=&amp;quot;/src&amp;quot; /&amp;gt;&lt;br/&gt;    &amp;lt;property name=&amp;quot;lib&amp;quot; value=&amp;quot;/lib&amp;quot; /&amp;gt;&lt;br/&gt;    &amp;lt;property name=&amp;quot;tmp&amp;quot; value=&amp;quot;/tmp&amp;quot; /&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;path id=&amp;quot;classpath&amp;quot;&amp;gt;&lt;br/&gt;        &amp;lt;fileset dir=&amp;quot;&amp;quot;/&amp;gt;&lt;br/&gt;    &amp;lt;/path&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;target name=&amp;quot;build&amp;quot;&amp;gt;&lt;br/&gt;        &amp;lt;mkdir dir=&amp;quot;&amp;quot;/&amp;gt;&lt;br/&gt;        &amp;lt;mkdir dir=&amp;quot;/WEB-INF&amp;quot;/&amp;gt;&lt;br/&gt;        &amp;lt;mkdir dir=&amp;quot;/WEB-INF/classes&amp;quot;/&amp;gt;&lt;br/&gt;        &amp;lt;mkdir dir=&amp;quot;/WEB-INF/lib&amp;quot;/&amp;gt;&lt;br/&gt;        &amp;lt;javac debug=&amp;quot;true&amp;quot; srcdir=&amp;quot;&amp;quot; destdir=&amp;quot;/WEB-INF/classes&amp;quot;&amp;gt;&lt;br/&gt;            &amp;lt;classpath refid=&amp;quot;classpath&amp;quot;/&amp;gt;&lt;br/&gt;        &amp;lt;/javac&amp;gt;&lt;br/&gt;        &amp;lt;copy todir=&amp;quot;/WEB-INF&amp;quot; file=&amp;quot;/sip.xml&amp;quot;/&amp;gt;&lt;br/&gt;        &amp;lt;replace file=&amp;quot;/WEB-INF/sip.xml&amp;quot; token=&amp;quot;chatroomname&amp;quot; value=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/replace&amp;gt;&lt;br/&gt;        &amp;lt;replace file=&amp;quot;/WEB-INF/sip.xml&amp;quot; token=&amp;quot;serveraddress&amp;quot; value=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/replace&amp;gt;&lt;br/&gt;        &amp;lt;zip destfile=&amp;quot;/.sar&amp;quot;&amp;gt;&lt;br/&gt;            &amp;lt;zipfileset dir=&amp;quot;&amp;quot;/&amp;gt;&lt;br/&gt;        &amp;lt;/zip&amp;gt;&lt;br/&gt;        &amp;lt;copy file=&amp;quot;/.sar&amp;quot; todir=&amp;quot;&amp;quot;/&amp;gt;&lt;br/&gt;    &amp;lt;/target&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;/project&amp;gt;  &lt;p&gt;&lt;strong&gt;结果&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;聊天室应用程序运行之后，试着通过运行两个TextClient实例来访问它。要确保运行在同一机器上的SIP应用程序使用的是不同的端口。下面的例子显示了运行在同一机器上的3个应用程序：&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;运行在ChatRoomServer上的SIP应用服务器，地址是sip:just4fun@10.0.2.69:5060。 &lt;/li&gt;    &lt;li&gt;地址为sip:snoopy71@10.0.2.69:5061的Text client。 &lt;/li&gt;    &lt;li&gt;地址为sip:maria119@10.0.2.69:5062的Text client。 &lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;图3显示了结果。&lt;/p&gt;  &lt;p&gt;    &lt;table class="ln" cellspacing="0" bordercolordark="#ffffff" align="center" bgcolor="#ddddd0" bordercolorlight="#999999" border="1"&gt;&lt;tbody&gt;        &lt;tr&gt;          &lt;td bgcolor="#ffffff"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041637294479.png"&gt;&lt;img title="2" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="412" alt="2" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041637317600.png" width="332" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;/tr&gt;        &lt;tr&gt;          &lt;td class="it" align="center" bgcolor="#dddddd"&gt;图3. TextClient与ChatRoomServer交互&lt;/td&gt;        &lt;/tr&gt;      &lt;/tbody&gt;&lt;/table&gt;  &lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;复杂应用程序&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;我知道本文中的例子相对于我们通常要构建的应用程序来说有点过于简单了，现实中的大多数SIP应用程序都由大量代码组成。&lt;/p&gt;  &lt;p align="left"&gt;会话和状态：通常，SIP应用程序是一个状态机(state machine)，其中呼叫或会话都是长时间保持的（有状态的），直到断开。对于SIP servlet，呼叫是由SipApplicationSession表示的，它可以带属性（状态）。在呼叫中，每个会话（呼叫的分支）由SipApplicationSession中的SipSession表示。（两人间的back-to-back会话要使用一个SipApplicationSession和两个SipSession。会议呼叫可能包含更多的SipSession。这些都可以带属性。容器会根据消息的上下文自动提供相应的会话对象。&lt;/p&gt;  &lt;p align="left"&gt;分层设计：最糟糕的是将所有的代码放入单个的大型SIP servlet。应该按照相对独立的层来设计复杂的应用程序。一个明显的层就是包括连接池的数据库层。也可以包含一个与SIP信令分离的业务逻辑层。另一个方面是有效负载分析，它应该被构建为一个可重用的层。&lt;/p&gt;  &lt;p align="left"&gt;其他技术：存在许多先进的SIP servlet技术，包括请求代理、重定向和循环、会话超时管理、身份验证、国际化、TCP支持、计时器、会话监听程序以及错误管理。很明显，本文并没有涵盖所有这些方面，但是您可以在SIP Servlet规范中找到相关内容。&lt;/p&gt;  &lt;p align="left"&gt;例子：可以参见“参考资料”部分，其中有可以帮助您了解更复杂的SIP编程的例子。&lt;/p&gt;  &lt;p align="left"&gt;&lt;strong&gt;结束语&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;标准促进了互操作性，从而促进了协作。而协作——不管它是用于朋友间的轻松聊天，还是用于重要的文件传输——都是一件好事。&lt;/p&gt;  &lt;p align="left"&gt;SIP是一个大有前途的电信标准，而SIP Servlet API则是轻松快速地开发服务器端SIP应用程序的极佳方式。在本文中，我们通过一个简单的例子，概述了SIP servlet编程。希望通过本文，能够帮助您在协作的道路上迈出一大步。&lt;/p&gt;  &lt;p&gt;本文简要介绍了SIP、它的使用场景，以及一些SIP语法。我们还了解了各种与SIP相关的Java技术。尽管本文不够详尽，我还是希望它能够激发您的兴趣，并促使您开始使用它。SIP的时代已经到来，现在使用它可以实现很多很酷的想法。     &lt;br /&gt;在本系列文章的第2部分中，我将说明如何使用SIP Servlet API编写一个聊天室应用程序。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;参考资料&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;&lt;a href="http://www.sipforum.com/" target="_blank"&gt;SIP Forum&lt;/a&gt;——SIP工作组的社区站点 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sipcentre.com/" target="_blank"&gt;SIP Center&lt;/a&gt;——另一个广受欢迎的社区站点 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ietf.org/rfc/rfc3261.txt" target="_blank"&gt;RFC 3261&lt;/a&gt;——SIP规范 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.cs.columbia.edu/sip/drafts.html" target="_blank"&gt;SIP的相关RFC和草案&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://jain-sip.dev.java.net/" target="_blank"&gt;开源JAIN SIP堆栈&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://sip-communicator.dev.java.net/" target="_blank"&gt;开源SIP软件电话&lt;/a&gt; &lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/1970963.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/03/04/1970963.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mugua/archive/2011/03/04/1970905.html</id><title type="text">SIP简介，第1部分：SIP初探[转]</title><summary type="text">会话发起协议（Session Initiation Protocol，SIP）是一种信令协议，它对于通信业有着重要的意义。本文从技术上对SIP进行了一般性的介绍，并说明了SIP如何为通信解决方案提供重要支持。</summary><published>2011-03-04T06:31:00Z</published><updated>2011-03-04T06:31:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/03/04/1970905.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/03/04/1970905.html"/><content type="html">&lt;p&gt;&lt;strong&gt;摘要&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;会话发起协议（Session Initiation Protocol，SIP）是一种信令协议，它对于通信业有着重要的意义。本文从技术上对SIP进行了一般性的介绍，并说明了SIP如何为通信解决方案提供重要支持。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;简介&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;我曾经构想过一种软件，它可以“浮于”应用程序之上，提供辅助作用。这不是一个哑的“帮助”系统，而是一个活动的技术支持代理，可以在Internet上进行讨论。那时曾有人告诉我，“现有的工具、库、协议或带宽实现不了这样的要求！”&lt;/p&gt;  &lt;p&gt;时代已经不同了！&lt;/p&gt;  &lt;p&gt;许多人家中已经拥有基于DSL、光纤和其他技术的宽带网络。存在大量高质量的工具和库，无论是商业的还是开源的。标准驱动应用。现在是时候来实现上述创新思路了。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;了解SIP&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;首先，我将向您介绍SIP，也就是会话发起协议。SIP是一种轻量级的可扩展请求/响应协议，用于在两个端点之间开始通信会话。这听起来是不是很熟悉？SIP在概念上源自于HTTP和SMTP，但是它的目的却不同。可以把SIP消息与CB（民用波段）隐语10-code和Q-signal进行比较。     &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;table class="ln" cellspacing="0" bordercolordark="#ffffff" align="center" bgcolor="#ddddd0" bordercolorlight="#999999" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td bgcolor="#ffffff"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041639317739.jpg"&gt;&lt;img title="1149130" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="248" alt="1149130" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041639337413.jpg" width="521" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="it" align="center" bgcolor="#dddddd"&gt;图1.用于管理CB呼叫的隐语&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;在这个例子中，真正的消息包含在专用的呼叫协商消息中。&lt;/p&gt;  &lt;p&gt;SIP是IETF于1999年提出的，在2002年进行了修订。RFC 3261对它进行了描述。本文中有关SIP的信息就选自RFC。对SIP存在很多扩展，这些扩展中的很多都能在SIP-related RFCs and drafts清单中找到。&lt;/p&gt;  &lt;p&gt;SIP有哪些优点呢？通常情况下，两个端点使用它来协商一次“呼叫”。这里的协商包括介质（文本、语音等）、传输（通常是RTP、Real Time Protocol）和编码（codec）。一旦协商成功，两个端点就会使用选中的方法相互交谈——这就与SIP无关了。“呼叫”完成之后，SIP用于指示断开连接。因此，SIP最好用作一种信令机制。SIP及其扩展还提供一些相关功能，比如即时消息传递、注册和到场。&lt;/p&gt;  &lt;p&gt;SIP术语中的端点叫做用户代理。它可以是“软件电话”、即时消息收发器、IP电话，甚至是手机。服务器用户代理提供集中式的服务，比如登记员、代理或应用服务器。&lt;/p&gt;  &lt;p&gt;听起来SIP非常简单，而且它也确实简单。这种简单性对于协议的稳定很重要，而且它也没有降低协议的有用性，所以该协议得到了广泛的应用。&lt;/p&gt;  &lt;p&gt;例如，考虑一下HTTP。协议本身的定义很少。但是使用它的方式多不胜数。SIP也是可以扩展的。存在大量针对SIP的扩展，它们涵盖了很多应用。现在，我们进一步来考察SIP，并分析它为什么会如此重要。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SIP的重要性&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;有人说，SIP对于通信，就像HTTP对于Web一样。&lt;/p&gt;  &lt;p&gt;SIP对通信业产生了巨大的影响。从事蜂窝技术的公司已经决定为了未来的应用，对SIP进行标准化。VoIP (Voice over IP)供应商、Internet电话和即时消息传递应用程序（例如，Microsoft MSN Messenger）都准备基于SIP进行标准化。&lt;/p&gt;  &lt;p&gt;目前已经存在一些信令协议和P2P技术。这就引发了一个问题：SIP相对于这些协议和技术有何优势？SIP具有以下的明显优点：&lt;/p&gt;  &lt;p&gt;稳定性。该协议已经使用了多年，现在十分稳定。    &lt;br /&gt;    &lt;br /&gt;速度。基于UDP的小型协议效率特别高。     &lt;br /&gt;    &lt;br /&gt;灵活性。这个基于文本的协议十分容易扩展。     &lt;br /&gt;    &lt;br /&gt;安全性。它提供像加密(SSL、S/MIME)和身份验证这样的功能。对SIP的扩展还提供其他安全性功能。     &lt;br /&gt;    &lt;br /&gt;标准化。随着整个通信行业都在向SIP靠拢，SIP已经讯速成为一种标准。其他技术可能具有SIP所没有的优势，但是它们没有得到全球范围内的采用。     &lt;br /&gt;    &lt;br /&gt;这意味着，如果您想让您的应用程序与其他工具、设备和服务器进行互操作，SIP是最佳选择。供应商对互操作性是很关注的，会定期开会对其产品进行测试。这些会议称为SIPit for SIP Interoperability Tests（以前叫做Bakeoff，是Pillsbury提出更改的）。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;剖析SIP呼叫 &lt;/strong&gt;    &lt;br /&gt;    &lt;br /&gt;现在，让我们更深入地了解这门技术。SIP通常基于UDP进行传输，但是SIP工具必须同时支持TCP。一条SIP消息由两部分组成：&lt;/p&gt;  &lt;p&gt;信封（envelope），以头字段的形式描述一个请求或请求的结果（响应）。    &lt;br /&gt;    &lt;br /&gt;有效负载（payload），即内容（可选），包含有关请求的数据。     &lt;br /&gt;    &lt;br /&gt;信封是文本格式，但是内容可以是文本，也可以是二进制格式。&lt;/p&gt;  &lt;p&gt;例如，让我们具体分析一次典型的SIP呼叫。在这个场景中，用户A想呼叫用户B。图2说明了这次呼叫：&lt;/p&gt;  &lt;table class="ln" cellspacing="0" bordercolordark="#ffffff" align="center" bgcolor="#ddddd0" bordercolorlight="#999999" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td bgcolor="#ffffff"&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041639379762.png"&gt;&lt;img title="无标题" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="593" alt="无标题" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103041639438437.png" width="389" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="it" align="center" bgcolor="#dddddd"&gt;图2. 一次典型的SIP呼叫&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;下面对所有的消息进行了解释：&lt;/p&gt;  &lt;table class="tabel-general" cellspacing="0" cellpadding="0" width="100%" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th&gt;&amp;#160;&lt;/th&gt;        &lt;th&gt;&amp;#160;&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top" width="50%"&gt;1. User Agent A发送一个SIP请求INVITE给User Agent B，表达User A想跟User B进行谈话的愿望。这个请求包含语音流协议的细节。payload中使用会话描述协议（Session Description Protocol，&lt;a href="http://www.ietf.org/rfc/rfc2327.txt"&gt;SDP&lt;/a&gt;)就是为此目的。SDP消息包含一个清单，其内容为User A支持的所有介质编码。（这些编码使用RTP进行传输。）&lt;/td&gt;        &lt;td class="right" valign="top" width="50%"&gt;INVITE         &lt;br /&gt;sip:UAB@example.com          &lt;br /&gt;SIP/2.0          &lt;br /&gt;Via: SIP/2.0/UDP 10.20.30.40:5060          &lt;br /&gt;From: UserA &amp;lt;sip:UAA@example.com&amp;gt;;tag=589304          &lt;br /&gt;To: UserB &amp;lt;sip:UAB@example.com&amp;gt;          &lt;br /&gt;Call-ID: 8204589102@example.com          &lt;br /&gt;CSeq: 1 INVITE          &lt;br /&gt;Contact: &amp;lt;sip:UserA@10.20.30.40&amp;gt;          &lt;br /&gt;Content-Type: application/sdp          &lt;br /&gt;Content-Length: 141          &lt;br /&gt;&amp;#160; &lt;br /&gt;v=0          &lt;br /&gt;o=UserA 2890844526 2890844526 IN IP4 10.20.30.40          &lt;br /&gt;s=Session SDP          &lt;br /&gt;c=IN IP4 10.20.30.40          &lt;br /&gt;t=3034423619 0          &lt;br /&gt;m=audio 49170 RTP/AVP 0          &lt;br /&gt;a=rtpmap:0 PCMU/8000          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top" width="278"&gt;2. User Agent B读取该请求，然后告诉User Agent A它已经收到请求。&lt;/td&gt;        &lt;td class="right" valign="top" width="280"&gt;SIP/2.0         &lt;br /&gt;100 Trying          &lt;br /&gt;From: UserA &amp;lt;sip:UAA@example.com&amp;gt;;tag=589304          &lt;br /&gt;To: UserB &amp;lt;sip:UAB@example.com&amp;gt;          &lt;br /&gt;Call-ID: 8204589102@example.com          &lt;br /&gt;CSeq: 1 INVITE          &lt;br /&gt;Content-Length: 0          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top" width="278"&gt;3.当电话响铃时，User Agent B发送临时消息（响铃）给User Agent A，这样它就不会超时和放弃。&lt;/td&gt;        &lt;td class="right" valign="top" width="280"&gt;SIP/2.0         &lt;br /&gt;180 Ringing          &lt;br /&gt;From: UserA &amp;lt;sip:UAA@example.com&amp;gt;;tag=589304          &lt;br /&gt;To: UserB &amp;lt;sip:UAB@example.com&amp;gt;;tag=314159          &lt;br /&gt;Call-ID: 8204589102@example.com          &lt;br /&gt;CSeq: 1 INVITE          &lt;br /&gt;Content Length: 0          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top" width="278"&gt;4.最终，User B决定接受呼叫。此时，User Agent B发送一个OK响应给User Agent A。在响应的payload中，还有另一条SDP消息。它包含一组两个用户代理都支持的介质编码。此时，双方正式处于呼叫中。使用200类型的响应可以接受所有类型的SIP请求。&lt;/td&gt;        &lt;td class="right" valign="top" width="280"&gt;SIP/2.0         &lt;br /&gt;200 OK          &lt;br /&gt;From: UserA &amp;lt;sip:UAA@example.com&amp;gt;;tag=589304          &lt;br /&gt;To: UserB &amp;lt;sip:UAB@example.com&amp;gt;;tag=314159          &lt;br /&gt;Call-ID: 8204589102@example.com          &lt;br /&gt;CSeq: 1 INVITE          &lt;br /&gt;Contact: &amp;lt;sip:UserB@10.20.30.41&amp;gt;          &lt;br /&gt;Content-Type: application/sdp          &lt;br /&gt;Content-Length: 140          &lt;br /&gt;&amp;#160; &lt;br /&gt;v=0          &lt;br /&gt;o=UserB 2890844527 2890844527 IN IP4 10.20.30.41          &lt;br /&gt;s=Session SDP          &lt;br /&gt;c=IN IP4 10.20.30.41          &lt;br /&gt;t=3034423619 0          &lt;br /&gt;m=audio 3456 RTP/AVP 0          &lt;br /&gt;a=rtpmap:0 PCMU/8000          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top" width="278"&gt;5. User Agent A最后使用一条ACK消息进行确认。对于这种请求类型来说，没有重试和响应消息，即使消息丢失。ACK只在INVITE消息中使用。&lt;/td&gt;        &lt;td class="right" valign="top" width="280"&gt;ACK         &lt;br /&gt;sip:UAB@example.com SIP/2.0          &lt;br /&gt;Via: SIP/2.0/UDP 10.20.30.41:5060          &lt;br /&gt;Route: &amp;lt;sip:UserB@10.20.30.41&amp;gt;          &lt;br /&gt;From: UserA &amp;lt;sip:UAA@example.com&amp;gt;;tag=589304          &lt;br /&gt;To: UserB &amp;lt;sip:UAB@example.com&amp;gt;;tag=314159          &lt;br /&gt;Call-ID: 8204589102@example.com          &lt;br /&gt;CSeq: 1 ACK          &lt;br /&gt;Content-Length: 0          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top" width="278"&gt;6..两个用户代理现在使用最后一条SDP消息中选定的方法进行连接。&lt;/td&gt;        &lt;td class="right" valign="top" width="280"&gt;RTP使用PCMU/8000编码对在端口49170 &amp;amp; 3456上双向传输的音频数据进行打包。         &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top" width="278"&gt;7.在通信会话结束时，其中一个用户挂断。此时，这个用户的用户代理发送一个新的请求BYE。这条消息可以由任一方发送。&lt;/td&gt;        &lt;td class="right" valign="top" width="280"&gt;BYE         &lt;br /&gt;sip:UAB@example.com SIP/2.0          &lt;br /&gt;Via: SIP/2.0/UDP 10.20.30.41:5060          &lt;br /&gt;To: UserB &amp;lt;sip:UAB@example.com&amp;gt;;tag=314159          &lt;br /&gt;From: UserA &amp;lt;sip:UAA@example.com&amp;gt;;tag=589304          &lt;br /&gt;Call-ID: 8204589102@example.com          &lt;br /&gt;CSeq: 1 BYE          &lt;br /&gt;Content-Length: 0          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top" width="278"&gt;8.另一用户的用户代理接受该请求，然后使用一条OK消息作为应答。呼叫连接至此断开。&lt;/td&gt;        &lt;td class="right" valign="top" width="280"&gt;SIP/2.0         &lt;br /&gt;200 OK          &lt;br /&gt;To: UserB &amp;lt;sip:UAB@example.com&amp;gt;;tag=314159          &lt;br /&gt;From: UserA &amp;lt;sip:UAA@example.com&amp;gt;;tag=589304          &lt;br /&gt;Call-ID: 8204589102@example.com          &lt;br /&gt;CSeq: 1 BYE          &lt;br /&gt;Content-Length: 0          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;SIP消息的第一行包含消息的类型和所使用的SIP版本（2.0）。在请求中，这一行还包含一个叫做SIP URI的地址。这代表消息的目的地。    &lt;br /&gt;    &lt;br /&gt;这个例子说明了如何使用请求消息INVITE、ACK和BYE，以及200 OK响应消息。SIP中还存在许多其他消息。下面给出一些请求：&lt;/p&gt;  &lt;table class="tabel-general" cellspacing="0" cellpadding="0" width="100%" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th class="left" valign="top" width="30%"&gt;消息&lt;/th&gt;        &lt;th class="right" valign="top" width="70%"&gt;用法&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;INVITE&lt;/td&gt;        &lt;td class="right" valign="top"&gt;呼叫一个用户代理，传送一次呼叫。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;ACK&lt;/td&gt;        &lt;td class="right" valign="top"&gt;确认呼叫。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;BYE&lt;/td&gt;        &lt;td class="right" valign="top"&gt;终止呼叫。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;CANCEL&lt;/td&gt;        &lt;td class="right" valign="top"&gt;终止还未OK的呼叫。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;REGISTER&lt;/td&gt;        &lt;td class="right" valign="top"&gt;提供一项注册服务，带有一个联系地址和可以用来代替的别名。例如，在前面的例子中，地址sip:UAA@example.com就是sip:UserA@10.20.30.40的别名。然后，注册服务器example.com就可以把呼叫转发给地址10.20.30.40。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;OPTIONS&lt;/td&gt;        &lt;td class="right" valign="top"&gt;询问一个用户代理的“能力”（例如，该用户代理能够识别的消息和编码）。&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;现在给出一些经常使用的响应消息：&lt;/p&gt;  &lt;table class="tabel-general" cellspacing="0" cellpadding="0" width="100%" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th class="left" valign="top" width="30%"&gt;消息&lt;/th&gt;        &lt;th class="right" valign="top" width="70%"&gt;用法&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;100 Trying&lt;/td&gt;        &lt;td class="right" valign="top"&gt;消息已收到，但是最终用户代理尚未进行处理。请等待。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;180 Ringing&lt;/td&gt;        &lt;td class="right" valign="top"&gt;最终用户代理已经收到消息，正在提示用户。请等待。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;200 OK&lt;/td&gt;        &lt;td class="right" valign="top"&gt;最终用户已经接受消息。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;301 Moved Permanently &amp;amp; 302 Moved Temporarily&lt;/td&gt;        &lt;td class="right" valign="top"&gt;用户代理的地址已经改变，新的永久或临时地址位于Contact字段中。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;400 Bad Request&lt;/td&gt;        &lt;td class="right" valign="top"&gt;普通错误消息。客户端不能识别消息。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;401 Unauthorized &amp;amp; 407 Proxy Authentication Required&lt;/td&gt;        &lt;td class="right" valign="top"&gt;请使用证书重试。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;404 Not Found&lt;/td&gt;        &lt;td class="right" valign="top"&gt;要联系的用户不存在或尚未注册。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;408 Request Timeout&lt;/td&gt;        &lt;td class="right" valign="top"&gt;另一方没有响应。这意味着SIP消息永远不会OK。所有重试都将被丢弃。这并不意味着电话响太长时间（电话可以永远响铃）。&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;消息使用类似的头字段类型。下面给出其中的一些：&lt;/p&gt;  &lt;table class="tabel-general" cellspacing="0" cellpadding="0" width="100%" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th class="left" valign="top" width="30%"&gt;头字段&lt;/th&gt;        &lt;th class="right" valign="top" width="70%"&gt;用法&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;From&lt;/td&gt;        &lt;td class="right" valign="top"&gt;SIP请求的发送者。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;To&lt;/td&gt;        &lt;td class="right" valign="top"&gt;SIP请求的接受者。这通常与SIP URI相同（可以是一个“别名”或一个实际地址）。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;Contact&lt;/td&gt;        &lt;td class="right" valign="top"&gt;用户代理的实际地址。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;Call-ID&lt;/td&gt;        &lt;td class="right" valign="top"&gt;这并不是呼叫者的电话号码。它惟一地代表两个用户代理之间的完整呼叫或对话。所有相关的SIP消息都使用同一个Call-ID。例如，当一个用户代理收到一条BYE消息，根据Call-ID，它就知道要挂断哪次呼叫。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;CSeq&lt;/td&gt;        &lt;td class="right" valign="top"&gt;消息的顺序编号。这在一次对话或一个Call-ID中是惟一的。这用于区别新的消息和“重试消息”。当一条初始消息没有及时OK时，重试就会进行，并会定时发送。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;Content-Type&lt;/td&gt;        &lt;td class="right" valign="top"&gt;消息内payload的MIME类型。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td class="left" valign="top"&gt;Content-Length&lt;/td&gt;        &lt;td class="right" valign="top"&gt;payload的大小，以字节为单位。信封和payload之间由一空行隔开。&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;还有一些与消息路由选择功能相关的头字段，如：Via、Route和Record-Route。许多头字段提供像Accept、User-Agent和Supported这样的功能。其他头字段则提供像Authorization、Privacy和WWW-Authenticate这样的安全性功能。还有很多其他的头字段存在。此外，这些字段中许多都有缩写语法（比如，From = f，To = t，等等）。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SIP的其他功能&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; 使用SIP及其扩展可以实现很多应用：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;VoIP &lt;/li&gt;    &lt;li&gt;视频会议 &lt;/li&gt;    &lt;li&gt;针对文本和数据的即时消息传递，比如MSN Instant Messenger &lt;/li&gt;    &lt;li&gt;注册(我在线!) &lt;/li&gt;    &lt;li&gt;到场(我的伙伴在不在?) &lt;/li&gt;    &lt;li&gt;Click-to-talk(点击通话，即点击这里便可与一个技术支持代理交谈) &lt;/li&gt;    &lt;li&gt;应答机器/互动式语音应答（Interactive Voice Response，IVR)系统(“请输入您的密码。请记录您的姓名。英文请按1，西班牙语请按2…”) &lt;/li&gt;    &lt;li&gt;网络游戏，比如Quake和一些手机游戏（甚至基于语音和IM） &lt;/li&gt;    &lt;li&gt;基于手机的应用程序 &lt;/li&gt;    &lt;li&gt;移动电子商务 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; 基本上，如果是两个端点之间进行通信，SIP就能完成。    &lt;br /&gt;但是，关于活动的Web技术支持代理的想法又如何呢？现在我们能否使用SIP来实现它？我们能否使用Java来实现它？干脆点说，可以。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Java中的SIP&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; 我经常使用SIP。我可以负责任地说，Java为SIP提供了绝佳的支持。Java技术的一个分支把与开发SIP应用程序相关的许多细节抽象出来，这对于SIP开发人员大有帮助。下面这些技术大部分位于JAIN (Java APIs for Integrated Networks)工作组中。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;JAIN SIP API (&lt;a href="http://www.jcp.org/en/jsr/detail?id=32" target="_blank"&gt;JSR 32&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;SIP Servlet API (&lt;a href="http://www.jcp.org/en/jsr/detail?id=116" target="_blank"&gt;JSR 116&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;JAIN SIP Lite (&lt;a href="http://www.jcp.org/en/jsr/detail?id=125" target="_blank"&gt;JSR 125&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;SIP API for J2ME (&lt;a href="http://www.jcp.org/en/jsr/detail?id=180" target="_blank"&gt;JSR 180&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;JAIN SIMPLE Presence (&lt;a href="http://www.jcp.org/en/jsr/detail?id=164" target="_blank"&gt;JSR 164&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;JAIN SIMPLE Instant Messaging (&lt;a href="http://www.jcp.org/en/jsr/detail?id=165" target="_blank"&gt;JSR 165&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;其他相关技术有：&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;JAIN SDP (&lt;a href="http://www.jcp.org/en/jsr/detail?id=141" target="_blank"&gt;JSR 141&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Java Media Framework for RTP (J2SE可选包，并非JAIN的) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; 如果您希望开发一个客户端应用程序，就需要一个客户端SIP引擎或者“堆栈”。&lt;a href="http://jain-sip.dev.java.net/" target="_blank"&gt;在这里&lt;/a&gt;可以找到一个优秀的开源Java SIP堆栈。它还支持SDP。如果不想自己开发SIP电话，您可以使用&lt;a href="https://sip-communicator.dev.java.net/" target="_blank"&gt;这个&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;结束语&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; 本文简要介绍了SIP、它的使用场景，以及一些SIP语法。我们还了解了各种与SIP相关的Java技术。尽管本文不够详尽，我还是希望它能够激发您的兴趣，并促使您开始使用它。SIP的时代已经到来，现在使用它可以实现很多很酷的想法。    &lt;br /&gt;在本系列文章的第2部分中，我将说明如何使用SIP Servlet API编写一个聊天室应用程序。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;参考资料&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.sipforum.com/" target="_blank"&gt;SIP Forum&lt;/a&gt;——SIP工作组的社区站点 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sipcentre.com/" target="_blank"&gt;SIP Center&lt;/a&gt;——另一个广受欢迎的社区站点 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ietf.org/rfc/rfc3261.txt" target="_blank"&gt;RFC 3261&lt;/a&gt;——SIP规范 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.cs.columbia.edu/sip/drafts.html" target="_blank"&gt;SIP的相关RFC和草案&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://jain-sip.dev.java.net/" target="_blank"&gt;开源JAIN SIP堆栈&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://sip-communicator.dev.java.net/" target="_blank"&gt;开源SIP软件电话&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/1970905.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/03/04/1970905.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mugua/archive/2011/03/02/1968792.html</id><title type="text">OPAL学习笔记 - Outgoing Call [转]</title><summary type="text">(学习理解中，文字内容以后填加)</summary><published>2011-03-02T04:33:00Z</published><updated>2011-03-02T04:33:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968792.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968792.html"/><content type="html">&lt;p&gt;(学习理解中，文字内容以后填加)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/20110302123315383.gif"&gt;&lt;img title="o_outgcall" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="1205" alt="o_outgcall" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103021233176597.gif" width="935" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/1968792.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968792.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mugua/archive/2011/03/02/1968791.html</id><title type="text">OPAL学习笔记 - Incoming Call [转]</title><summary type="text">(学习理解中，文字内容以后补充)</summary><published>2011-03-02T04:32:00Z</published><updated>2011-03-02T04:32:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968791.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968791.html"/><content type="html">&lt;p&gt;(学习理解中，文字内容以后补充)&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/20110302123135218.jpg"&gt;&lt;img title="o_incmcall" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="2639" alt="o_incmcall" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103021231396691.jpg" width="1017" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/1968791.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968791.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mugua/archive/2011/03/02/1968789.html</id><title type="text">OPAL学习笔记 - Start Listen[转]</title><summary type="text">(学习理解中，文字内容稍后补充)</summary><published>2011-03-02T04:29:00Z</published><updated>2011-03-02T04:29:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968789.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968789.html"/><content type="html">&lt;p&gt;(学习理解中，文字内容稍后补充)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/20110302122922140.jpg"&gt;&lt;img title="2" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="806" alt="2" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103021229252875.jpg" width="819" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/1968789.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968789.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mugua/archive/2011/03/02/1968787.html</id><title type="text">OPAL学习笔记 - 构架核心类静态结构[转]</title><summary type="text">OPAL - Open Phone Abstraction Library，是一套开放源码库，主要用于基于包交换网络的、基于H.323和SIP协议的多媒体通讯应用开发。在OPAL库的框架之下，你可以方便的扩展其他媒体通讯协议，使得自己公司的多媒体通讯产品能与主流的产品（如H.323终端、H.323 MCU、SIP终端等）兼容。</summary><published>2011-03-02T04:26:00Z</published><updated>2011-03-02T04:26:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968787.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968787.html"/><content type="html">&lt;p&gt;(注：由于时间关系和学习目的，本系列学习笔记主要关注呼叫管理过程，不关注媒体流的创建、转发等媒体流相关细节。）&lt;/p&gt;  &lt;p&gt;OPAL - Open Phone Abstraction Library，是一套开放源码库，主要用于基于包交换网络的、基于H.323和SIP协议的多媒体通讯应用开发。在OPAL库的框架之下，你可以方便的扩展其他媒体通讯协议，使得自己公司的多媒体通讯产品能与主流的产品（如H.323终端、H.323 MCU、SIP终端等）兼容。&lt;/p&gt;  &lt;p&gt;OPAL对多媒体通讯系统的通讯协议进行高度抽象，形成了“协议抽象构架层”，主要包括以下类：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;OpalManager     &lt;br /&gt;OPAL的核心管理类，库中所有其他组件的大部分事件都会被集中到OpalManager中，应用程序只南要通过其子类对这些接口进行重载来获得OPAL系统的大部分事件通知；另外，OpalManager还提供了呼叫管理、连接管理、媒体流管理等管理接口。      &lt;br /&gt;注意：OpalManager在OPAL中被设计为“单件”，由应用程序保证系统中只有一个该类或其子类的实例存在。 &lt;/li&gt;    &lt;li&gt;OpalCall      &lt;br /&gt;一个call（呼叫）由一个或多个connection（连接）对象组成，OpalCall类负责管理与一个call相关的多个connection以及协调它们之间行为。如：一个OpalCall管理了一个H323Connection对象和一个SIPConnection对象时，那么这个call就是两个协议之间的“网关”；在会议环境下，一个OpalCall可能会管理多个H323Connection或SIPConnection对象。 &lt;/li&gt;    &lt;li&gt;OpalConnection      &lt;br /&gt;connection表示的是一个到endpoint的连接，OpalConnection是所有connection的基类，不同的协议会有不同的子类来实现其协议相关的connection的特殊语义。      &lt;br /&gt;一个connection是一个call的一部分，它同时也与创建它的endpoint关联起来，以便进行这个connection与协议相关的一些管理。用户程序不能直接删除connection对象，它将由OpalManager指定的线程来删除。      &lt;br /&gt;根据协议相关信令和类接口，connection还负责在适当的时机创建和打开媒体流。 &lt;/li&gt;    &lt;li&gt;OpalEndPoint      &lt;br /&gt;这是endpoint的基类，每一种协议都通过继承一个OpalEndPoint的子类来管理其独自的子系统。如OPAL库中H323EndPoint表示H.323协议中的端点、而SIPEndPoint表示SIP协议中的端点等。需要注意的是，本机的声卡设备，在OPAL库中也被封装成了一个endpoint。 &lt;/li&gt;    &lt;li&gt;OpalMediaFormat      &lt;br /&gt;这个类描述了OPAL系统中使用的媒体格式。媒体格式是OPAL实体间传递的媒体数据的类型描述。如，音频编解码算法（G.723.1等）、视频编解码算法（H.263等），都称为媒体格式。 &lt;/li&gt;    &lt;li&gt;OpalMediaPatch      &lt;br /&gt;媒体流数据的“调度器件”。这个类是控制媒体数据转发的线程，它将数据从一个“source”OpalMediaStream对象，转发到一个或多个“sink”OpalMediaStream对象。 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;下图展示OPAL的“协议抽象构架层”的类结构&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103021226132941.jpg"&gt;&lt;img title="20061025001" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="603" alt="20061025001" src="http://images.cnblogs.com/cnblogs_com/mugua/201103/201103021226157726.jpg" width="596" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/1968787.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968787.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/mugua/archive/2011/03/02/1968755.html</id><title type="text">新一代开源VoIP协议栈－－OPAL(OpenH323 v2)[转]</title><summary type="text">OPAL是Open Phone Abstraction Library的字母缩写，仍然是Equivalence公司开发的开源VoIP协议栈，从2001年便开始开发了，直到现在还没有正式发布过一个版本，只能从CVS: http://cvs.sourceforge.net/viewcvs.py/openh323/opal下载最新的版本，而且现在的2.05bate版有着非常多的问题，但这些丝毫不能阻止我对OPAL的看好。</summary><published>2011-03-02T03:53:00Z</published><updated>2011-03-02T03:53:00Z</updated><author><name>木瓜脑袋</name><uri>http://www.cnblogs.com/mugua/</uri></author><link rel="alternate" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968755.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968755.html"/><content type="html">&lt;div class="postText"&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; OPAL是Open Phone Abstraction Library的字母缩写，仍然是Equivalence公司开发的开源VoIP协议栈，从2001年便开始开发了，直到现在还没有正式发布过一个版本，只能从CVS: &lt;a href="http://cvs.sourceforge.net/viewcvs.py/openh323/opal"&gt;&lt;font color="#000080"&gt;http://cvs.sourceforge.net/viewcvs.py/openh323/opal&lt;/font&gt;&lt;/a&gt;下载最新的版本，而且现在的2.05bate版有着非常多的问题，但这些丝毫不能阻止我对OPAL的看好。OPAL仍然采用PWLIB作为开发库，最新的PWLIB实际已经只剩PTLIB,Equivalence公司已经停止了对PWLIB的GUI开发了，GUI全面转向更为强大的wxWindows。OPAL作为Openh323的下一代协议栈最大的特点是加入了对SIP协议的支持，OPAL保留了Openh323大部分代码，并加入了对EndPoint，Connection等抽象描述的基类，使得添加新的协议和设备变得更加简单和方便。&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; OPAL中最重要的类是新加的:OpalManager,它跟Openh323中的H323EndPoint地位一样，它定义了OPAL系统中最基本的操作，所以每个应用程序必须从OpalManager派生一个类，然后重载虚函数实现自己的操作。     &lt;br /&gt;OpalManager::SetUpCall(partyA,partyB,token); 呼叫，partyA是会话发起人，partyB是会话接受人      &lt;br /&gt;OpalManager::OnIncomingConnection（connection); 接听，返回TRUE则接听，返回FLASH则拒绝      &lt;br /&gt;OpalManager::AdjustMediaFormats(connection,mediaFormats); 调整媒体格式      &lt;br /&gt;OpalManager::ClearCall(token,reason,sync) 清除呼叫，sync如果为NULL则不等待快速返回      &lt;br /&gt;OpalEndPoint是描述端点的基类，H323,SIP,PSTN,IVR，LID,声卡的端点都是继承于这个类，在这里值得注意的是连声卡设备也看做一种端点。      &lt;br /&gt;OpalPCSSEndPoint则是EndPoing中比较重要的一个类，毕竟打电话还是声卡用的多，OpalPCSSEndPoint的构造函数必须引用派生的OpalManager类的实例。&lt;/p&gt;    &lt;p&gt;下面具体例子SimpleOPAL来讲解：     &lt;br /&gt;opal = new MyManager;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //新建一个MyManager的实例      &lt;br /&gt;if (opal-&amp;gt;Initialise(args))&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //调用MyManager::Initialise()函数初始化      &lt;br /&gt;opal-&amp;gt;Main(args);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //等待用户输入命令      &lt;br /&gt;cout &amp;lt;&amp;lt; &amp;quot;Exiting &amp;quot; &amp;lt;&amp;lt; GetName() &amp;lt;&amp;lt; endl;      &lt;br /&gt;delete opal;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //擦pp      &lt;br /&gt;部分Initialise()函数代码：      &lt;br /&gt;SetVideoInputDevice(video);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //设置输入视频设备      &lt;br /&gt;...      &lt;br /&gt;SetVideoOutputDevice(video);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //输出视频设备      &lt;br /&gt;...      &lt;br /&gt;SetAudioJitterDelay(minJitter, maxJitter);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //声音抖动缓存的最小和最大值      &lt;br /&gt;...      &lt;br /&gt;SetMediaFormatMask(args.GetOptionString('D').Lines());&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //屏蔽的媒体格式      &lt;br /&gt;SetMediaFormatOrder(args.GetOptionString('P').Lines());&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //媒体格式的使用顺序      &lt;br /&gt;...      &lt;br /&gt;SetTranslationAddress(args.GetOptionString(&amp;quot;translate&amp;quot;));&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //设置外部IP地址      &lt;br /&gt;...      &lt;br /&gt;Set***Ports(rgs.GetOptionString(&amp;quot;tcp-base&amp;quot;).AsUnsigned(),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; args.GetOptionString(&amp;quot;tcp-max&amp;quot;).AsUnsigned());&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //设置相关的端口      &lt;br /&gt;SetSTUNServer(args.GetOptionString(&amp;quot;stun&amp;quot;));&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //使用STUN服务器      &lt;br /&gt;...      &lt;br /&gt;pcssEP = new MyPCSSEndPoint(*this);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //新建一个MyPCSSEndPoint实例      &lt;br /&gt;pcssEP-&amp;gt;SetSoundDevice(args, &amp;quot;sound&amp;quot;, PSoundChannel::Recorder)//设置相关的播放声音设备      &lt;br /&gt;...      &lt;br /&gt;h323EP = new H323EndPoint(*this);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //h323EP的初始化      &lt;br /&gt;h323EP-&amp;gt;DisableFastStart(args.HasOption('f'));&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //关闭快速拨号模式      &lt;br /&gt;h323EP-&amp;gt;DisableH245Tunneling(args.HasOption('T'));&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //关闭H245通道模式      &lt;br /&gt;h323EP-&amp;gt;AddAliasName(aliases[i]);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //添加昵称      &lt;br /&gt;h323EP-&amp;gt;SetInitialBandwidth(initialBandwidth);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //限制带宽      &lt;br /&gt;h323EP-&amp;gt;StartListeners(listeners)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //现在才开始监听，默认是TCP:1720      &lt;br /&gt;h323EP-&amp;gt;SetGatekeeperPassword(args.GetOptionString('p'));&amp;#160;&amp;#160;&amp;#160; //注册网守所需的密码      &lt;br /&gt;h323EP-&amp;gt;UseGatekeeper(gkHost, gkIdentifer, gkInterface)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //注册网守      &lt;br /&gt;...      &lt;br /&gt;sipEP = new SIPEndPoint(*this);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //SIP也来了      &lt;br /&gt;sipEP-&amp;gt;SetUserAgent(args.GetOptionString(&amp;quot;sip-user-agent&amp;quot;)); //设置用户代理,UserAgent就相当于最初openh323的endpoint      &lt;br /&gt;sipEP-&amp;gt;SetProxy(args.GetOptionString(&amp;quot;sip-proxy&amp;quot;));&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //设置SIP代理,此处proxy相当于h323里的Gatekeeper      &lt;br /&gt;sipEP-&amp;gt;SetMIMEForm(args.HasOption(&amp;quot;use-long-mime&amp;quot;));&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //MIME头的格式      &lt;br /&gt;sipEP-&amp;gt;StartListeners(listeners)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //监听开始，默认是TCP:5060和UDP:5060      &lt;br /&gt;Main()函数部分代码：      &lt;br /&gt;if (pcssEP != NULL &amp;amp;&amp;amp; !pcssEP-&amp;gt;incomingConnectionToken) {&amp;#160;&amp;#160;&amp;#160; //小心，有电话来了      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (cmd == &amp;quot;n&amp;quot;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pcssEP-&amp;gt;ClearCall(pcssEP-&amp;gt;incomingConnectionToken,&amp;#160;&amp;#160;&amp;#160;&amp;#160; //打死我都不接      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; OpalConnection::EndedByRefusal);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else if (cmd == &amp;quot;y&amp;quot;)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pcssEP-&amp;gt;AcceptIncomingConnection(pcssEP-&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //喂，小莉吗？      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; incomingConnectionToken);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;...      &lt;br /&gt;OpalCall * call = FindCallWithLock(currentCallToken);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //让我看看是那一个通话&amp;#160; &lt;br /&gt;if (call != NULL) {      &lt;br /&gt;&amp;#160; cout &amp;lt;&amp;lt; &amp;quot;Clearing call &amp;quot; &amp;lt;&amp;lt; *call &amp;lt;&amp;lt; endl;      &lt;br /&gt;&amp;#160; call-&amp;gt;Clear();&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //废话那么多，打IP电话也要钱的，挂拉      &lt;br /&gt;&amp;#160; call-&amp;gt;Unlock();      &lt;br /&gt;...      &lt;br /&gt;if (potsEP != NULL)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //是打电脑还是打座机呢？      &lt;br /&gt;&amp;#160; SetUpCall(&amp;quot;pots:*&amp;quot;, params[1], currentCallToken);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //打座机吧(PSTN)      &lt;br /&gt;else      &lt;br /&gt;&amp;#160; SetUpCall(&amp;quot;pc:*&amp;quot;, params[1], currentCallToken);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //打电脑不要钱，嘿嘿&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; OPAL中的例子MFC根本无法使用，Openphone的GUI使用了wxWindows，所以必须安装了wxWindows才能正常编译，opalgw这玩意我试过好多次根本无法让别人注册，看来OPAL要走的路还很长，不过Equivalence公司开发已经渐渐的从Openh323转向了OPAL,相信不久一个稳定的OPAL将会被发布.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/mugua/aggbug/1968755.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/mugua/archive/2011/03/02/1968755.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
