sip命令与音视频rtp通话完整流程分析-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1235616
  • 博文数量: 76
  • 博客积分: 1959
  • 博客等级: 上尉
  • 技术积分: 2689
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-19 12:07
个人简介

樽中酒不空

文章分类

全部博文(76)

文章存档

2020年(4)

2019年(1)

2017年(2)

2016年(2)

2015年(7)

2014年(11)

2013年(13)

2012年(18)

2011年(2)

2010年(16)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: linux

2010-08-26 01:01:41


根据asterisk的代码,推测出sip server的工作流程如下:

1 客户端a通过sip发invite时,带的是内网ip和端口。
2 服务器收到后,转发给客户端b时,先创建两个音视频端口port1,port2,加到客户端a sdp中,然后发给b。
3 b收到后,肯定是同意了.如果拒绝,以下就不走了。

4 b本地也创建两个端口,连接port1,port2,带stun协议,返回自己的公网ip和端口。(这一步可选)
5 b向服务器回复同时,sdp上带本地的ip和端口。(这一步必须)

6 服务器收到b同意的回复后,再创建两个端口port3,port4,同时加到sdp中,返回给客户端a。

7 客户端a收到sdp后,得到其中的两个端口,然后本地也创建两个端口,分别向服务器的两个端口发数据,(也可以直接向对方的ip和端口发,但对方是内网的,可能收到,也可能收不到,稍后再讨论怎么p2p)。

8 客户端b应该也要创建两个端口,向服务器的端口发数据。(如果执行过4,这一步直接发数据就行了)。

9 因为端口是一一对应关系,服务器端根据端口号可以知道是哪个用户发来的,并发往表现哪里的。
10 用户发bye,或掉线,服务器通知对方结束会话,同时close掉这4个端口。

以上,服务器创建rtp端口的同时,还要创建rtcp端口。
上面的流程是服务器直接在两点间中转,不包括经过多服务器间流转。

如果要做到两客户端之间直接点对点,ab双方的音视频端口,应该先连stun,取到自己的外网ip和端口后,再发invite,这时sdp中带的是自己的外网ip和端口,双方直接传很大可能是收的到的。

大致流程应该是这样的,可能还有些出入,毕竟是看代码得出的结论,不是看rfc协议。
只能说发明sip和rtp的人,大脑复杂度远超普通人。当初以为http已经够麻烦的了,不过人家也不过只用了一个端口就可以传所有数据。rtp的创始人应该是电信背景,可能认为每个端口号相当于电信中的每一路通话了。

阅读(13867) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图