我目前使用访客 WiFi,其中除用于上网(80、443、8080)和邮件(25、110、143、465、587、993、995)的端口之外的所有端口均被阻止(3128 似乎也能正常工作)。
我尝试在 iPhone 上拨打 Facetime 电话,但没有成功,这让我认为 UDP 也被阻止了。
但是,Viber 应用程序能够成功连接并开始视频通话,并且质量/延迟还不错。
我现在的问题是,Viber 是否使用 TCP 进行 VoIP 或者这是如何可能的?
答案1
Viber 是否使用 TCP 进行 VoIP?
Viber 使用 UPD 而不是 TCP 进行 VoIP 通信。TCP 用于文本消息传递。
Viber 用途实时协议(和安全传输协议加密时)。RTP 主要在 UDP 上实现,因为它是一种实时协议。
音频或音视频通话的RTP流转换为SRTP,并使用会话密钥通过Salsa20算法加密。
TCP 和 UDP 的使用已得到确认Viber 通讯安全解密加密内容,用于tcpdump
生成.pcap
文件来分析Viber数据流量:
这似乎是获得一些结果的一个很好的起点,因此我们使用以下命令过滤数据以获取单向语音流:
tshark -r long-call.pcap -w long-call-oneway.pcap udp.dstport == 5243
这里我们只选择具有 Viber 服务目标端口的 UDP 数据包,因此它只发起语音流量。
...
Viber 除了允许用户拨打语音电话外,还允许用户发送和接收短信。此功能使用了一些专门的基于 TCP 的协议,用于连接服务器并交换消息。解码该流并不是该项目的优先事项,而且也没有时间对此进行进一步研究。
Viber 使用哪些端口?
为了使 Viber Desktop 能够在您的计算机上运行,必须为所有地址打开以下 TCP 和 UDP 端口:
- 5242
- 4244
- 5243
- 9785
- 80
- 443