转载自:
http://hi.baidu.com/nathan2007/blog/item/0b28a3540b63e11e3b293552.html
作者:nathan
以下分析基于客户端版本Fetion 2006 beta 2.1.0.0,协议版本是SIP-C 2.0。
一位朋友留言提到飞信的手机语聊,我这里也把两个飞信用户间手机语聊的通信过程贴出来,大家一起探讨。
以下文字中:红色的表示数据的传递方向,其中221.130.45.203:8080是Fetion用TCP直连方式连接的服务器地址和端口,也就是SIP Proxy Server的IP和Port,蓝色部分是完整的SIP-C消息,就是TCP包的包体部分。
以下的过程是用户A(飞信号:123456789,IP:Port=111.111.111.111:1111)向用户B(飞信号:987654321,IP:Port=222.222.222.222:2222)发起手机语聊,我们可以看到,整个过程仍基本是一个标准的SIP会话建立过程(就是没有Ringing)。
用户A这边:
STEP 1: 通过Proxy转发,发出INVITE到用户B
111.111.111.111:1111 >>>>>>>> 221.130.45.203:8080
I fetion.com.cn SIP-C/2.0
F: 1234567890
I: 11
Q: 1 I
T: sip:987654321@fetion.com.cn;p=xxxx
L: 180
v=0
o=-0 0 IN P4111.111.111.111:1111
s=VoiceChat
c=IN IP4 111.111.111.111:1111
t=0 0
a=user:sip:987654321@fetion.com.cn;p=xxxx
m=ivr 1111 sip sip:123456789@fetion.com.cn;p=yyyy
STEP 2:收到Proxy Server返回的“正在联络B..."
111.111.111.111:1111 <<<<<<<< 221.130.45.203:8080
SIP-C/2.0 100 Trying
Q: 1 I
T: sip:987654321@fetion.com.cn;p=xxxx
I: 11
STEP 3:收到Proxy Server转来的用户B的同意消息
111.111.111.111:1111 <<<<<<<< 221.130.45.203:8080
SIP-C/2.0 200 OK
Q: 1 I
T: sip:987654321@fetion.com.cn;p=xxxx
I: 11
STEP 4:回复用户B已收到其同意的消息 (ACK)
111.111.111.111:1111 >>>>>>>> 221.130.45.203:8080
A fetion.com.cn SIP-C/2.0
I: 11
Q: 1 A
T: sip:987654321@fetion.com.cn;p=xxxx
F: 123456789
STEP 5:要求Proxy Server开始接通过手机进行语聊,所以这里发出的是S,S=Service方法,用来请求服务器提供额外的服务,这个服务就是"StartVoiceChat"。
111.111.111.111:1111 >>>>>>>> 221.130.45.203:8080
S fetion.com.cn SIP-C/2.0
F: 123456789
I: 12
Q: 1 S
N: StartVoiceChat
L: 103
<args><voice-chat begin-date="2007-00-00 00:00:00.0000" /><users><user sid="987654321" /></users></args>
到这里就跟飞信客户端无关了,我猜测下面就是飞信服务器那边在通过7号信令接通两部手机,通过IVR给两部手机放音,然后捆绑话路,然后两部手机通过飞信的话路控制平台进行话音通话。
用户B那边呢?和用户A这边是一一对应的:
STEP 1: 用户B收到INVITE
222.222.222.222:2222 <<<<<<<< 221.130.45.203:8080
I 123456789 SIP-C/2.0
Q: 1 I
F: sip:987654321@fetion.com.cn;p=xxxx
I: -1
L: 178
v=0
o=-0 0 IN P4222.222.222.222:2222
s=VoiceChat
c=IN IP4 222.222.222.222:2222
t=0 0
a=user:sip:123456789@fetion.com.cn;p=yyyy
m=ivr 3418 sip sip:987654321@fetion.com.cn;p=xxxx
收到这个后,用户B的飞信会弹出窗口,问用户B是否接受用户A发起的手机语聊。这个消息的消息体中的a=,根据SDP,这里是<attribute>:<value>的形式。
STEP 2: 用户B发出同意消息:
222.222.222.222:2222 >>>>>>>> 221.130.45.203:8080
SIP-C/2.0 200 OK
I: -1
Q: 1 I
F: sip:987654321@fetion.com.cn;p=xxxx
L: 180
v=0
o=-0 0 IN P4222.222.222.222:2222
s=VoiceChat
c=IN IP4 222.222.222.222:2222
t=0 0
a=user:sip:987654321@fetion.com.cn;p=xxxx
m=ivr 1082 sip sip:123456789@fetion.com.cn;p=yyyy
STEP 3:收到用户A的ACK确认:
222.222.222.222:2222 <<<<<<<< 221.130.45.203:8080
A 123456789 SIP-C/2.0
Q: 1 A
F: sip:987654321@fetion.com.cn;p=xxxx
I: -1
到这里用户B手机也就响了。
其实,上面这整个过程体现的是真正的SIP过程,跟即时消息不同,SIP的出发点就是建立会话,至于会话的具体过程,如语音还是数据,用什么承载,是人对人还是人对机器,这都不是SIP协议所关心的事情,它最主要的任务只是建立会话。
分享到:
相关推荐
还是用回2006版,2008版的飞信程序太臃肿了,启动得慢。建议用回2006版的!!!
飞信是一种基于TCP协议的即时通讯工具,其交互过程主要涉及SIP(Session Initiation Protocol)协议,用于建立和管理通信会话。在上述描述的飞信聊天过程中,我们可以详细分析以下几个关键知识点: 1. **SIP协议**...
// 接收人手机号、飞信内容 3. 注意事项 (1) 保证你的程序是utf-8编码(或更改飞信类文件编码,但飞信内容必须为utf-8编码); (2) send()方法是有返回值的,可以通过分析文本判断是否发送成功。考虑到wap界面会...
mobile = cons.readLine("%s", "Mobile(手机号):"); if ((passwd = cons.readPassword("%s", "Password(密码,为了安全不回显):"))!= null) { pwd = new String(passwd); java.util.Arrays.fill...
// 接收人手机号、飞信内容 3. 其他 (1) 你的程序需要是utf-8编码的。 (2) send()方法是有返回值的,可以通过分析文本判断是否发送成功。考虑到wap界面会改动,所以没有在类里写死关于发送成功的判断。 (二)...
fetion_android-3.1.1-GEN-GENERIC-1.6-release-120113-tw.apk
nokia N81手班飞信飞信(英文名:Fetion)是中国移动提供的可同时在电脑和手机上使用,能实现消息、短信、语音等多种沟通方式的综合通信服务。 飞信可通过PC客户端、手机客户端或WAP方式登录,也可用普通短信方式与...
30. **fetion_U880.apk(飞信)** - 功能:即时通讯应用。 - 是否可删除:可删除,但考虑到飞信在中国市场的普及程度,建议谨慎操作。 31. **Filer.apk(文件管理器)** - 功能:文件管理工具。 - 是否可删除...
飞信是中国移动推出的一款免费即时通讯软件,名为"Fetion",它允许用户通过手机或电脑进行文字、语音甚至视频的通信。在这个压缩包文件中,我们看到的是一个针对飞信3.0版本的修改版,名为"Fetion 3_fetion java_...
【标题】"fetion.rar_fetion_visual c" 涉及的IT知识点主要集中在飞信(Fetion)的客户端开发以及使用Visual C#编程语言实现通过Web URL发送短信的功能。 飞信是中国移动推出的一款即时通讯软件,允许用户通过网络...
private static Fetion fetion = null; public static void main(String[] args) throws Exception{ String mobile = null; String pwd = null; if(args==null || args.length){ System.out.println(...
飞信是中国移动推出的一款通信软件,全称为"Fetion",在2008年时的版本为"Fetion_2008"。这款应用旨在提供便捷、高效的即时通讯服务,尤其注重融合手机与互联网的通讯体验。下面将详细阐述飞信的主要功能、发展历程...
飞信,全名"Fetion",是一款由中国移动推出的即时通讯软件,支持通过手机和电脑进行免费短信、语音消息以及多方通话等通信服务。在本文中,我们将探讨如何在CentOS 6.x系统上安装飞信。 首先,尝试使用RPM包直接...
飞信,全称为"Fetion",是中国移动推出的一款创新通信服务应用,旨在提供便捷、高效的短信服务。作为一款强大的短信工具,飞信的最大特点就是它允许用户向中国移动的手机用户发送短信完全免费,极大地降低了通信成本...
飞信,全称为中国移动飞信,是一款由中国移动推出的融合通信服务,它允许用户通过互联网或者手机免费发送短信、语音消息,同时支持多方通话和在线聊天功能。在IT领域,飞信因其开放的API接口和SDK,成为了开发者进行...
- **sip**: 对于飞信好友,格式为 `sip:56xxxxxx@fetion.com.cn;p=2228`。 - **tel**: 对于手机好友,格式为 `tel:137xxxxx`。 - **sid**: uri中飞信号码的部分。 - **seg**: uri中的段号部分。 - **mobile**: ...
LibFetion是由邓东东主导开发的第三方飞信应用程序。该程序具有较强的跨平台性,在主流操作系统和手持设备上都有版本。 LibFetion由操作界面(GUI shell) + libfetion-core协议库两部分构成。 其中GUI shell的实现与...
"Fetion API UTF-8 发布包"是一个专为网页开发者设计的工具,它允许开发者在他们的网页上集成飞信功能。飞信是中国移动推出的一种即时通讯服务,用户可以通过网络或者短信方式与其他飞信用户进行免费的文字、语音...
//接收人手机号、飞信内容 $fetion->send('13500001111', 'Hello Fetion1!'); $fetion->send('13500002222', 'Hello Fetion2!'); $fetion->send('13500003333', 'Hello Fetion3!'); $fetion->send('13500004444', '...
使用方法: 1)进入Dos命令行 2)输入如下命令 sms -f ’您的手机号‘ -p ‘您的飞信密码’ -t ’目标手机号‘ -m ’你需要发送的消息‘ 其中您的手机号需要开通飞信服务,目标手机号需要是你的飞信好友。...