在H.323中,端点到端点消息协议如何工作?大多数示例我看到中间涉及看门人,但实际上我想使用(c / java / lua / php / d tcp / udp)制作一个简单的端点到端点H.323播放器
我应该发送的RAW消息协议是什么,例如在SIP中我发现这样的数据包被发送(https://gist.github.com/1151125)
答案 0 :(得分:4)
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协商的终点,它是找到实际媒体的地方。
答案 1 :(得分:1)
C ++中有一个开源实现:OpenH323(指向维基百科,它有更多指向OpenH323页面的链接)。
答案 2 :(得分: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一样。