H.323 协议端点到端点发送和接收什么来发起呼叫?
在 H.323 中,端点到端点消息协议如何工作?我见过的大多数示例都涉及中间的网守,但实际上我想使用(c/java/lua/php/d tcp/udp)制作一个简单的端点到端点 H.323 播放器
原始消息协议是什么例如,我应该在 SIP 中发送,我发现这样的数据包被发送(https://gist.github.com/1151125)
In H.323 how does the endpoint to endpoint message protocol works? Most of the example i have seen involving gatekeeper in the middle but in reality i want to make a simple Endpoint to Endpoint H.323 player using (c/java/lua/php/d tcp/udp)
What is the RAW message protocols that i should be sending for example in SIP i have found such packets gets sent (https://gist.github.com/1151125)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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 协商的终点,也是找到实际媒体的地方。
There are several layers of protocols used in H.323:
RAS, Q.931, H.245 and then RTP and RTCP
RAS messages are sent over UDP. They are the communication between an endpoint and his gatekeeper in most scenarios: you register to the gatekeeper using RRQ, you start initiating a call using ARQ, etc.
Once the admission part of the call (ARQ) is done, the gatekeeper sends an ACF - admission confirm - where he states where you need to send your Q.931 SETUP message to.
Q.931 messages are usually sent over TCP. They are used to establish a call between endpoints. They can be routed through a gatekeeper or any other mediating device or they can be sent directly between endpoints.
The initial Q.931 message sent is SETUP, followed eventually by a Q.931 CONNECT message.
Once Q.931 is established, H.245 is then signaled to deal with call control (exchanging capabilities and opening up logical channels). This can be done tunneled over Q.931 or on a separate TCP connection. And again - you might end up having this routed through a gatekeeper or done directly between endpoints.
RTP and RTCP is the end of the H.245 negotiation and it is where the actual media is found.
C++ 中有一个开源实现:OpenH323(指向维基百科,其中有更多链接)打开H323页面)。
There is an open source implementation in C++: OpenH323 (points to wikipedia which has some more links to the OpenH323 pages).
以下是 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 一样。
Here's a wireshark capture sample of a H323 call:
http://wiki.wireshark.org/SampleCaptures
http://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=view&target=rtp_example.raw.gz
Responding to the comments, the implementation complexity of SIP in a regular programming language is not a fair comparison. SIP is plain text, designed for simplicity and comprehension. The gist of the library support you need there is string manipulation.
And trust me, implementing H323 on your own without libraries is not like implementing SIP in a language without strings, it's like implementing SIP without a compiler.