【发布时间】:2011-10-28 18:28:08
【问题描述】:
在 H.323 中,端点到端点消息协议如何工作?我看到的大多数示例都涉及中间的看门人,但实际上我想使用 (c/java/lua/php/d tcp/udp) 制作一个简单的 Endpoint to Endpoint H.323 播放器
我应该发送什么 RAW 消息协议,例如在 SIP 中我发现这样的数据包被发送 (https://gist.github.com/1151125)
【问题讨论】:
在 H.323 中,端点到端点消息协议如何工作?我看到的大多数示例都涉及中间的看门人,但实际上我想使用 (c/java/lua/php/d tcp/udp) 制作一个简单的 Endpoint to Endpoint H.323 播放器
我应该发送什么 RAW 消息协议,例如在 SIP 中我发现这样的数据包被发送 (https://gist.github.com/1151125)
【问题讨论】:
在 C++ 中有一个开源实现:OpenH323(指向维基百科,其中包含更多指向 OpenH323 页面的链接)。
【讨论】:
H.323 中使用了几层协议: RAS、Q.931、H.245,然后是RTP和RTCP
RAS 消息通过 UDP 发送。在大多数情况下,它们是端点与其网守之间的通信:您使用 RRQ 向网守注册,开始使用 ARQ 发起呼叫等。 呼叫的准入部分 (ARQ) 完成后,网守会发送 ACF - 准入确认 - 他会在其中说明您需要将 Q.931 SETUP 消息发送到的位置。
Q.931 消息通常通过 TCP 发送。它们用于在端点之间建立呼叫。它们可以通过网守或任何其他中介设备进行路由,也可以直接在端点之间发送。 发送的初始 Q.931 消息是 SETUP,最后是 Q.931 CONNECT 消息。
一旦建立了 Q.931,H.245 就会发出信号来处理呼叫控制(交换能力和打开逻辑信道)。这可以通过 Q.931 隧道或在单独的 TCP 连接上完成。再一次 - 您最终可能会通过网守路由或直接在端点之间完成。
RTP 和 RTCP 是 H.245 协商的结束,是找到实际媒体的地方。
【讨论】:
这是一个 H323 调用的wireshark 捕获示例: http://wiki.wireshark.org/SampleCaptures http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=view&target=rtp_example.raw.gz
回应 cmets,SIP 在常规编程语言中的实现复杂度并不是一个公平的比较。 SIP 是纯文本,旨在简化和理解。您需要的库支持的要点是字符串操作。
相信我,在没有库的情况下自行实现 H323 不像在没有字符串的语言中实现 SIP,它就像在没有编译器的情况下实现 SIP。
【讨论】: