WebRTC is an api that is cross-browser compatible aimed at making p2p communications, be that voip,video streaming , or plain data transfer easier and seamless. This means no plugins, flash hacks , or proprietary video codecs.Essentially , the people at Google and Mozilla had a chat and said lets do this without licensing and alienating everyone from using the much needed unified set of tools to do p2p smoothly, the result is WebRTC and seen in the following
[Demo] (http://www.youtube.com/watch?feature=player_embedded&v=E8C8ouiXHHk) &[Talk] (http://www.youtube.com/watch?v=E8C8ouiXHHk)
WebRTC’s network uses several technologies that are used in Voip apps like Skype, so some I’ve included some high level breakdown of the techniques and protocols used . I’ve also included some documentation I’ve found useful in understanding what they do.
Act of mapping one or many ips to another. Typically a private network may have many internal ips and one public ip.
Allows an application to determine its public facing ip and port address , if it is behind a NAT. [2008 Talk ICE Stephen Strowes] (http://sdstrowes.co.uk/talks/20081031-ice-turn-stun-tutorial.pdf)
Turn is a protocol that allows for data to be received behind a NAT. It supports marshaling a connection to a single peer. [2008 Talk ICE Stephen Strowes] (http://sdstrowes.co.uk/talks/20081031-ice-turn-stun-tutorial.pdf)
ICE is a technique to allow for peer to peer communication behind a NAT. ICE uses STUN and TURN to generate candidates ( potential ip addresses) for receiving and sending data. [JDRosen ICE tutorial]http://www.jdrosen.net/papers/ice-basic-tutorial.pdf
multimedia sessions to enable clients join a session or gather information about a session [SDP Wiki] (https://en.wikipedia.org/wiki/Session_Description_Protocol)
I point to the PeerJS Hello Example ,because its simple enough to go over, I’m taking the approach of explaining what it does underneath the hood, at each step from creation of the RTCPeerConnection to sending data accross the data channels. .