WebRTC : ICE, STUN, TURN, Candidate

ddiaeยท2024๋…„ 7์›” 22์ผ
1

WebRTC

๋ชฉ๋ก ๋ณด๊ธฐ
2/4
post-thumbnail

ICE (Interactive Connectivity Establishment)

๐Ÿ’ก 2๊ฐœ์˜ Peer๋ผ๋ฆฌ P2P ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋„๋ก ์ตœ์ ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

Interactive Connectivity Establishment(ICE) ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ, ๋‘ ํ”ผ์–ด ๊ฐ„์˜ ์ตœ์ ์˜ ์—ฐ๊ฒฐ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ICE ํ”„๋กœ์„ธ์Šค๋Š” STUN ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต์šฉ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์•„๋‚ด๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ TURN ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ณ„ํ•œ๋‹ค. ์ฆ‰, ICE ์„œ๋ฒ„ ์„ค์ •์€ STUN๊ณผ TURN ์„œ๋ฒ„ ์„ค์ •์„ ๋ชจ๋‘ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.

STUN(Session Traversal Utilities for NAT)

์ปดํ“จํ„ฐ๊ฐ€ ์ž์‹ ์˜ ๊ณต์šฉ IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์„œ๋ฒ„๋กœ ์ด ์ •๋ณด๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์™€ ์ง์ ‘ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ, ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค! ( โ†’ TURN์—์„œ ๊ณ„์†โ€ฆ )

TURN(Traversal Using Relays around NAT) ์„œ๋ฒ„๋Š” STUN ์„œ๋ฒ„๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ์ด๋Š” ์ง์ ‘ ์—ฐ๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ณ„ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด ๋‘ ์ปดํ“จํ„ฐ๊ฐ€ ์„œ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์ง€ ๋ชปํ•˜๋ฉด, TURN ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ค‘๊ฐ„ ๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•ด์„œ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ๋”ฐ๋ผ์„œ TURN ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•œ ํ†ต์‹ ์€ P2P ํ†ต์‹ ์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค.

Candidate

STUN, TURN ๋“ฑ์œผ๋กœ ์ฐพ์•„๋‚ธ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ๋ฅผ Candidate๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ICE์• ์„œ Finding Candidateํ•œ๋‹ค.

Candidate๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธ ์ข…๋ฅ˜๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

Direct Candidate

๊ฐ Peer์˜ ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋กœ ๋‹ค์ˆ˜์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค(์˜ˆ: ์ด๋”๋„ท, Wi-Fi)๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๊ฐ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์ฃผ์†Œ๊ฐ€ ํ›„๋ณด๊ฐ€ ๋œ๋‹ค. ์ด ์ฃผ์†Œ๋Š” ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ์ง์ ‘ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋Š” NAT(๋„คํŠธ์›Œํฌ ์ฃผ์†Œ ๋ณ€ํ™˜)์žฅ๋น„์— ์˜ํ•ด ์ ‘๊ทผ์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ์Œ

Server Reflexive Candidate

Peer์˜ ๊ณต๊ฐœ ์ธํ„ฐ๋„ท ์ฃผ์†Œ๋กœ NAT ์žฅ๋น„ ๋’ค์— ์žˆ๋Š” ํ”ผ์–ด์˜ ์‹ค์ œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ์ด๋‹ค. STUN ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด Peer๋Š” ์ž์‹ ์˜ NAT ๋งคํ•‘๋œ ๊ณต๊ฐœ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. STUN ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด ์ž์‹ ์„ ๋ฐ”๋ผ๋ณด๋Š” ์™ธ๋ถ€์˜ ์ฃผ์†Œ(์ฆ‰, NAT๊ฐ€ ํ• ๋‹นํ•œ ๊ณต์ธ IP์ฃผ์†Œ์™€ ํฌํŠธ)๋ฅผ ๋ฐœ๊ฒฌํ•œ๋‹ค.

TURN Relay Candidate

์ผ๋ถ€ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋Š” NAT ํŠธ๋ž˜๋ฒ„์„ค์ด๋‚˜ ๋ฐฉํ™”๋ฒฝ ์šฐํšŒ๊ฐ€ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ TURN ์„œ๋ฒ„๊ฐ€ ์ค‘๊ณ„ ์—ญํ• ์„ ํ•œ๋‹ค. TURN ์„œ๋ฒ„๋Š” Peer ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค. ์ด๋Š” ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์ด TURN์„œ๋ฒ„๋ฅผ ๊ฒฝ์œ ํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ, ๋ณต์žกํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋„ ๋‘ Peer๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•œ๋‹ค.

profile
์งฑ์งฑ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด

Powered by GraphCDN, the GraphQL CDN