开发者

H.323 protocol what does the endpoint to endpoint send and receive to initiate a call?

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 f开发者_Go百科or example in SIP i have found such packets gets sent (https://gist.github.com/1151125)


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.


There is an open source implementation in C++: OpenH323 (points to wikipedia which has some more links to the OpenH323 pages).


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜