sgcWebSockets 2022.8.0 sürümünden itibaren sgcWebSockets kütüphanesine yeni bir bileşen eklendi: TsgcRTCPeerConnection.
TsgcRTCPeerConnection, UDP üzerinden P2P kullanarak eşleri bağlamanıza olanak tanıyan bir istemci bileşenidir. Akış 4 adıma ayrılabilir:- Signaling (Sinyalleşme)
- Connecting (Bağlanma)
- Securing (Güvenli hale getirme)
- Communicating (İletişim)
Bu adımları uygulamak için istemci aşağıdaki protokolleri kullanır:
- WebSocket: bu protokol sinyalleşme için kullanılır; istemciler Session Description Protocol değerini ve yerel, genel ve aktarılan IP adreslerini değiş tokuş eder.
- UDP: bu taşıma protokolüdür; istemci, eşler arasında mesaj göndermek/almak için UDP kullanır.
- DTLS: TLS'ye benzer şekilde, eşler arasındaki mesajı güvenli hale getiren ve üçüncü tarafların mesajları okumasını/yazmasını önleyen bir şifreleme spesifikasyonudur.
- STUN: genel IP adresini elde etmeye yönelik protokol.
- TURN: eşler NAT'ların arkasında olduğunda IP adresini aktarmaya yönelik protokol.
- ICE: eşler arasında hangi IP Adresi ve Bağlantı Noktalarına erişilebileceğini bulmaya yönelik protokol.
Signaling (Sinyalleşme)
İstemci başladığında kiminle ve ne hakkında iletişim kuracağı hakkında hiçbir bilgisi yoktur. Sinyalleşme, aşağıdaki gibi ayrıntıları içeren SDP (Session Description Protocol) değerini kullanır:
- Eşe ulaşılabilen IP'ler ve Bağlantı Noktaları
- İletişimi güvenli hale getirmek için kullanılan Parmak İzi Sertifikası.
- Kullanıcı ve Parola.
- ...
Sinyalleşme, verileri değiş tokuş etmek için WebSocket protokolünü kullanır; bir alt protokol aracılığıyla çalışır ve sunucu tarafında TsgcWSPServer_RTCPeerConnection bileşeninde uygulanır.
TsgcRTCPeerConnection, TsgcWSPClient_RTCPeerConnection eklenmiş bir websocket istemcisini zaten dahili olarak oluşturur.
IP'leri ve Bağlantı Noktalarını elde etmek için istemci, bu bilgiyi almak üzere STUN/TURN protokollerini kullanır. Bu nedenle bir STUN/TURN sunucusu da gereklidir.
Bağlantılar:
- RTCPeerConnection WebSocket Server
- RTCPeerConnection WebSocket Client
- RTCPeerConnection STUN TURN
- RTCPeerConnection Signaling
Connecting (Bağlanma)
2 eş artık adayları ve SDP'leri öğrendikten sonra, istemci ICE adlı başka bir standart protokol kullanır.
ICE (Interactive Connection Establishment), 2 eş arasında bir bağlantı kurulmasına olanak tanır. Eşler aynı ağda olabilir veya bir NAT'ın arkasında bulunabilir... ICE, merkezi bir sunucu olmadan doğrudan bağlantı kurmaya yönelik bir çözümdür. Bağlantı P2P olamazsa, ICE verileri bir TURN sunucusu kullanarak aktarmak için TURN'ü kullanır.
ICE, 2 eş arasında bağlantı kurabilecek geçerli bir aday bulduğunda, bir sonraki adım iletişimi şifrelemektir
Bağlantılar:
Securing (Güvenli hale getirme)
Eşler bağlandıktan sonra iletişim güvenli olmalıdır. Bu, UDP üzerindeki iletişimi güvenli hale getirmek için kullanılan kriptografik bir protokol olan DTLS kullanılarak yapılır.
DTLS el sıkışması başarıyla işlendikten sonra başka bir protokol kullanılır: SRTP (Secure Real-Time Transport Protocol); şu anda SRTP uygulanmamıştır.
Bağlantılar:
Communicating (İletişim)
2 eş güvenli bir protokol kullanmaya başladığında, iletişim 2 protokol kullanılarak gerçekleştirilir:
- RTP: Real Time Transport Protocol: SRTP ile şifrelenmiş medyayı değiş tokuş etmek için kullanılır.
- SCTP: Stream Control Transmission Protocol; dTLS ile şifrelenmiş DataChannel mesajlarını göndermek ve almak için kullanılır.
Şu anda bu protokoller uygulanmamıştır, ancak UDP üzerinden DTLS kullanarak veri gönderebilir/alabilirsiniz.
