Skip to content

๐Ÿชต 2. WebRTC์— ๋Œ€ํ•˜์—ฌ

ssum1ra edited this page Dec 5, 2024 · 1 revision

WebRTC

WebRTC๋ž€?

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‚ฌ์ดํŠธ๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ์‹ค์‹œ๊ฐ„ ์˜ค๋””์˜ค, ๋น„๋””์˜ค, ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ 
    • P2P(Peer-to-Peer) ๊ธฐ์ˆ ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ฐ„์˜ ์ง์ ‘์ ์ธ ์—ฐ๊ฒฐ์„ ์ง€์›
    • ๋น ๋ฅด๊ณ  ์ง€์—ฐ์ด ์ ์€ ํ†ต์‹ 
    • ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‚˜ ์™ธ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜ ์—†์ด ๋™์ž‘

WebRTC ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ

  • Peer Connection (ํ•„์ˆ˜)
    • ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ P2P ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  ๊ด€๋ฆฌ
    • WebRTC์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๋กœ, ๋ชจ๋“  WebRTC ํ†ต์‹ ์˜ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค.
  • Data Channel (์„ ํƒ)
    • ํ…์ŠคํŠธ, ํŒŒ์ผ ๋“ฑ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„ ์ „์†ก
  • Media Stream (์„ ํƒ)
    • ๋กœ์ปฌ ์˜ค๋””์˜ค, ๋น„๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ๊ฐ€์ ธ์˜ค๊ณ  ์ „์†ก

NAT Traversal ์ฒ˜๋ฆฌ

STUN

  • Session Traversal Utilities for NAT
  • ํด๋ผ์ด์–ธํŠธ์˜ ๊ณต์šฉ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ๋ฐœ๊ฒฌํ•˜์—ฌ, ์ƒ๋Œ€๋ฐฉ๊ณผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์„œ๋ฒ„

image (24)

  • ๋™์ž‘ ๋ฐฉ์‹
    1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ STUN ์„œ๋ฒ„์— ์ž์‹ ์˜ ๊ณต์šฉ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ์š”์ฒญํ•œ๋‹ค.
    2. STUN ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ๊ณต์šฉ IP์™€ ํฌํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    3. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์ •๋ณด๋ฅผ ๋‹ค๋ฅธ ํ”ผ์–ด์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ P2P ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

TURN

  • Traversal Using Relays around NAT
  • P2P ์—ฐ๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ณ„ํ•˜๋Š” ์„œ๋ฒ„

image (25)

  • ๋™์ž‘ ๋ฐฉ์‹
    1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ TURN ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๊ณ , TURN ์„œ๋ฒ„๋Š” ์ค‘๊ณ„ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    2. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ TURN ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ๋Š” ์ง์ ‘ ์—ฐ๊ฒฐ์ด ์•„๋‹Œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•œ ๊ฐ„์ ‘ ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

SDP

  • Session Description Protocol

  • ๋ฏธ๋””์–ด ์„ธ์…˜์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ํ…์ŠคํŠธ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ

  • ์—ญํ• 

    • WebRTC๊ฐ€ ์˜ค๋””์˜ค, ๋น„๋””์˜ค, ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์„ค์ •๊ณผ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ƒํ˜ธ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.
  • ์˜ˆ์‹œ

    v=0
    o=- 4611739099356753928 2 IN IP4 127.0.0.1
    s=-
    t=0 0
    m=audio 49170 RTP/AVP 0
    c=IN IP4 203.0.113.1
    a=rtpmap:0 PCMU/8000
    m=video 51372 RTP/AVP 31
    a=rtpmap:31 H264/90000
    
  • SDP ๊ตํ™˜

    • WebRTC ์‹œ๊ทธ๋„๋ง ๋‹จ๊ณ„์—์„œ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์—ฐ๊ฒฐ ์„ค์ • ๋ฐ ํ˜‘์ƒ ๊ณผ์ •์„ ํฌํ•จํ•œ๋‹ค.
    • ๋‘ ํด๋ผ์ด์–ธํŠธ๋Š” ๊ฐ์ž์˜ ๋ฏธ๋””์–ด ์„ค์ •๊ณผ ๋„คํŠธ์›Œํฌ ์ •๋ณด๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ƒํ˜ธ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ์„ค์ •์œผ๋กœ P2P ์—ฐ๊ฒฐ์„ ํ™•๋ฆฝํ•˜๊ฒŒ ๋œ๋‹ค.
    • ๊ตํ™˜ ๊ณผ์ •
      1. ์˜คํผ(Offer) ์ „์†ก : ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ SDP ์˜คํผ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ์ „์†กํ•œ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ๋ฏธ๋””์–ด ์ •๋ณด, ์ฝ”๋ฑ, ๋„คํŠธ์›Œํฌ ์ •๋ณด ๋“ฑ์ด ํฌํ•จ๋˜๋‹ค.
      2. ์‘๋‹ต(Answer) ์ „์†ก : ์˜คํผ๋ฅผ ๋ฐ›์€ ์ƒ๋Œ€๋ฐฉ์€ ์ด๋ฅผ ์ˆ˜๋ฝํ•˜๊ฑฐ๋‚˜ ์„ค์ •์„ ์กฐ์ •ํ•˜์—ฌ SDP ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์‹œ ์ „์†กํ•œ๋‹ค.

ICE

  • Interactive Connectivity Establishment
  • STUN๊ณผ TURN์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์ ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ
  • ๋™์ž‘ ๋ฐฉ์‹
    1. ํด๋ผ์ด์–ธํŠธ๋Š” ๋กœ์ปฌ IP ์ฃผ์†Œ, ๊ณต์šฉ IP ์ฃผ์†Œ(STUN ์„œ๋ฒ„ ์‚ฌ์šฉ), TURN ์„œ๋ฒ„ ์ค‘๊ณ„ ์ฃผ์†Œ๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•œ ICE ํ›„๋ณด(Candidate)๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    2. ์ด ํ›„๋ณด๋“ค์„ ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ๋ณด๋‚ด๊ณ , ์ƒ๋Œ€๋ฐฉ๋„ ํ›„๋ณด๋ฅผ ๋ณด๋‚ธ๋‹ค.
    3. ๋‘ ํด๋ผ์ด์–ธํŠธ๋Š” ๊ฐ€์žฅ ์ข‹์€ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„ ์ตœ์ ์˜ P2P ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ๋‹ค.

WebRTC ์—ฐ๊ฒฐ ๊ณผ์ •

image (26)

  • SDP ๊ตํ™˜ โ†’ ICE ํ›„๋ณด ๊ตํ™˜ โ†’ P2P ์—ฐ๊ฒฐ ์„ค์ •

WebRTC ๋™์ž‘ ๋ฐฉ์‹

image (27)

๐Ÿ˜Ž ์›จ๋ฒ ๋ฒ ๋ฒ ๋ฒฑ

๐Ÿ‘ฎ๐Ÿป ํŒ€ ๊ทœ์น™

๐Ÿ’ป ํ”„๋กœ์ ํŠธ

๐Ÿชต ์›จ๋ฒ ๋ฒฑ ๊ธฐ์ˆ ๋กœ๊ทธ

๐Ÿช„ ๋ฐ๋ชจ ๊ณต์œ 

๐Ÿ”„ ์Šคํ”„๋ฆฐํŠธ ๊ธฐ๋ก

๐Ÿ“— ํšŒ์˜๋ก

Clone this wiki locally