title: Stun/Turn usage in WebRTC
body: <p>I am developing a small webrtc application in C. I am making a webrtc call using sip signalling. I have below queries regarding usage of stun/turn/ice.</p>
  
  <p>When I start call I send INVITE with offer (SDP).  In SDP we need to put ICE candidates.</p>
  
  <p>I have two possible cases. To explain it I will take an example. Say two endpoints are <strong>A</strong> and <strong>B</strong>. I have  a sip proxy server say <strong>P</strong>. Also I have a turn server (supports both stun and turn), say it is <strong>T</strong>.</p>
  
  <p><strong>Case 1</strong><br>
  All entities <strong>A</strong>, <strong>B</strong>, <strong>P</strong> and <strong>T</strong> are in same private network. Is STUN resolution required here? If yes then what all stun requests/responses I need to deal with?</p>
  
  <p><strong>Case 2</strong> <br>
  Here <strong>A</strong> is in private network. Other entities <strong>B</strong>, <strong>P</strong> and <strong>T</strong> are in public network. In this case I hope we need to do STUN/TURN resolution. Lets say I started with STUN, and got host and reflexive candidates. I see in some examples, <em>Permission</em> , <em>Channel Bind</em> requests are also used. If I am using just STUN (no TURN), after I get host and reflective candidates then do I need to do anything extra?</p>
  
  <p>Besides this, is there any good open source available for stun/turn client in C that uses gnutls (no openssl)?</p>