WebRTC
パケットの順序列を保証する(通常のUDPはパケットの順序列を保証しない) WebRTC は P2P を利用したブラウザ同士を前提とした技術として作られている。 もちろん、WebRTC 自体はプロトコルの組み合わせでしかないため、 P2P を使わなかったり、ブラウザ以外を使ったりすることもできる。 WebRTC の通信プロトコルには TCP ではなく、 UDP が採用されている。 これは音声や映像のデータを扱う以外に、大量のデータを高速に送ることができるよう、再送を自前でコントロールできるようにするためである。 通信はデフォルトで暗号化されており、データグラム向けの TLS である DTLS が採用されている。 直接相手とやりとりをする P2P を実現する機能が含まれており、 NAT 越えを実現する仕組みが含まれる。 NAT 越えをするためのプロトコルには STUN/TURN そしてそれら2つの技術を組み合わせた ICE と呼ばれる仕組みを採用した。
実際に NAT 越えを実現するためには STUN サーバや TURN サーバが必要となる。 通常は TURN/STUN サーバとして 1 台で提供される。
WebRTCの構成図
https://scrapbox.io/files/683fd06d76dd37e0085bfca8.png https://webrtcforthecurious.com/ja/docs/01-what-why-and-how/