7.3. Flux de messages avec vérification STUN (cas NAT)
Dans les exemples précédents, la poignée de main DTLS est déjà terminée lorsqu'Alice reçoit le 200 OK (8) de Bob. Aucun check STUN n'est donc envoyé. En revanche, si Alice est derrière un NAT, le ClientHello de Bob peut être bloqué par ce NAT; Alice enverrait alors le check STUN décrit en section 6.7.2 à la réception du 200 OK, comme ci-dessous:
Alice Proxies Bob |(1) INVITE | | |---------------->| | | |(2) INVITE | | |----------------->| | |(3) hello | | X<-----------------| | |(4) 200 OK | |<-----------------------------------| | (5) conn-check | | |----------------------------------->| | |(6) conn-response | |<-----------------------------------| | |(7) hello (rtx) | |<-----------------------------------| |(8) hello | | |----------------------------------->| | |(9) finished | |<-----------------------------------| | |(10) media | |<-----------------------------------| |(11) finished | | |----------------------------------->| | |(11) media | |----------------------------------->| |(12) ACK | | |----------------------------------->|
Les messages reprennent le premier exemple (sans UPDATE pour simplifier), avec trois messages nouveaux:
Message (5): vérification de connectivité STUN Alice → Bob
La section 6.7.2 décrit une approche pour éviter un problème d'interaction avec les SBC lorsque les extrémités ne prennent pas en charge ICE. Alice (extrémité passive) envoie une vérification de connectivité STUN à Bob. Cela ouvre un trou de souris (pinhole) dans le NAT/pare-feu d'Alice.
Message (6): réponse à la vérification STUN Bob → Alice
Bob (extrémité active) envoie la réponse à la vérification STUN (message 3 dans la numérotation locale du texte source: ici message 6). Cela indique à Alice que la vérification a réussi et qu'elle peut arrêter la machine d'états de retransmission.
Message (7): Hello (retransmission) Bob → Alice
Bob retransmet son DTLS ClientHello, qui traverse désormais le pinhole du pare-feu d'Alice. La poignée de main DTLS se poursuit comme auparavant.