0

在 H.323 中,端点到端点消息协议如何工作?我见过的大多数示例都涉及中间的看门人,但实际上我想使用 (c/java/lua/php/d tcp/udp) 制作一个简单的 Endpoint to Endpoint H.323 播放器

我应该发送的原始消息协议是什么,例如在 SIP 中我发现这样的数据包被发送(https://gist.github.com/1151125)

4

3 回答 3

3

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 协商的结束,是找到实际媒体的地方。

于 2011-08-17T15:22:40.157 回答
0

这是一个 H323 调用的 wireshark 捕获示例: http://wiki.wireshark.org/SampleCaptures http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=view&target=rtp_example.raw.gz

回应评论,SIP 在常规编程语言中的实现复杂性并不是一个公平的比较。SIP 是纯文本,旨在简化和理解。您需要的库支持的要点是字符串操作。

相信我,在没有库的情况下自己实现 H323 不像在没有字符串的语言中实现 SIP,它就像在没有编译器的情况下实现 SIP。

于 2011-08-26T12:35:46.527 回答
0

C++ 中有一个开源实现:OpenH323(指向维基百科,其中有更多指向 OpenH323 页面的链接)。

于 2011-08-17T13:07:25.457 回答