WebRTC utilise-t-il TCP ou UDP?

Cela ressemble à une question très simple, mais j’ai besoin d’une confirmation

  1. WebRTC utilise-t-il TCP ou UDP comme transport d’égal à égal? Comment puis-je savoir ?
  2. J’ai lu qu’il existe un mode de fiabilité et un accord DTLS, comment sont-ils affectés?
  3. Ce transport est-il identique pour Media et DataChannel?
  4. Comment basculer entre TCP et UDP?

Je demande cela parce que je sais que les navigateurs ont une limite sur le nombre de connexions parallèles (je pense qu’ils parlent de TCP), et peut-être que la connexion UDP n’est pas limitée.

  1. Il peut utiliser soit. Par défaut, la préférence est donnée à UDP, mais en fonction du ou des pare-feu entre les homologues se connectant, il est possible que seule la connexion à TCP soit possible. Vous pouvez utiliser Wireshark pour capturer des paquets et vérifier si TCP ou UDP est utilisé. Dans Chrome, vous pouvez également voir les détails sur le candidat sélectionné ( googActiveConnection ) en accédant à chrome://webrtc-internals .

  2. Le “mode de fiabilité” fait probablement référence au mode de fiabilité du DataChannel , qui peut être configuré pour s’exécuter en mode fiable ou non fiable. DTLS fait référence à la méthode d’échange de clés de chiffrement actuellement facultative, mais bientôt par défaut (l’autre mode obsolète est SDES). Firefox ne supporte que DTLS, donc pour le navigateur interop, vous devrez l’ activer dans Chrome .

  3. RTCPeerConnection (media) utilisera TCP ou UDP, tandis que DataChannel utilisera SCTP. L’implémentation SCTP utilisée par Firefox est implémentée au-dessus de UDP: https://code.google.com/p/sctp-refimpl/ .

  4. Il est possible de filtrer les candidats TCP ou UDP ICE avant de les append avec addIceCandidate . En règle générale, vous ne devez pas essayer de forcer le transport utilisé, car WebRTC ne fera que “faire ce qui est bien”. Le navigateur ne limite pas le nombre de connexions TCP utilisées par WebRTC au-delà de toute limite sur RTCPeerConnection ou DataChannel (par exemple, si vous pouvez avoir 10 PeerConnections, chacun peut utiliser TCP sans aucun problème).