{"id":11859,"date":"2025-04-12T03:04:24","date_gmt":"2025-04-11T18:04:24","guid":{"rendered":"https:\/\/chat-messenger.com\/?p=11859"},"modified":"2025-04-12T03:23:33","modified_gmt":"2025-04-11T18:23:33","slug":"webrtc-stun-turn-turns-sfu","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/ko\/blog\/webrtc-stun-turn-turns-sfu","title":{"rendered":"WebRTC\uc758 STUN\/TURN\/TURNS\/SFU \ucca0\uc800 \ud574\uc124\uacfc \uc2e4\ucc9c"},"content":{"rendered":"<h2>WebRTC\ub780?<\/h2>\n\n\n\n<p>WebRTC(Web Real-Time Communication)\ub294 \ube0c\ub77c\uc6b0\uc800\ub07c\ub9ac \uc2e4\uc2dc\uac04 \uc74c\uc131\u00b7\uc601\uc0c1\u00b7\ub370\uc774\ud130 \ud1b5\uc2e0\uc744 \uc2e4\ud604\ud558\uae30 \uc704\ud55c \uc624\ud508 \uae30\uc220\uc785\ub2c8\ub2e4. \ucd94\uac00\uc801\uc778 \ud50c\ub7ec\uadf8\uc778\uc774\ub098 \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub97c \ud544\uc694\ub85c \ud558\uc9c0 \uc54a\uace0, JavaScript\uc758 API\ub9cc\uc73c\ub85c P2P \ud1b5\uc2e0\uc744 \uac00\ub2a5\ud558\uac8c \ud558\ub294 \uad6c\uc870\ub85c\uc11c, Google\uc744 \ube44\ub86f\ud55c \uac01\uc0ac\uc5d0 \uc758\ud574 \ud45c\uc900\ud654\uac00 \uc9c4\ud589\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>WebRTC\ub294 \ub2e4\uc74c \uc138 \uac00\uc9c0 \uc8fc\uc694 \uad6c\uc131 \uc694\uc18c\ub85c \uad6c\uc131\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<ul><li><strong>getUserMedia<\/strong>: \uce74\uba54\ub77c\ub098 \ub9c8\uc774\ud06c \ub4f1\uc758 \ub514\ubc14\uc774\uc2a4\ub85c\ubd80\ud130 \uc74c\uc131\u00b7\uc601\uc0c1\uc744 \ucde8\ub4dd\ud558\ub294 API.<\/li><li><strong>RTCPeerConnection<\/strong>: \ud53c\uc5b4\ub07c\ub9ac\uc758 \ud1b5\uc2e0\uc744 \ud655\ub9bd\ud574, \ubbf8\ub514\uc5b4\ub098 \ub370\uc774\ud130\ub97c \uad50\ud658\ud558\ub294 \ucf54\uc5b4 API.<\/li><li><strong>RTCDataChannel<\/strong>: \ud30c\uc77c \uc804\uc1a1 \ubc0f \ucc44\ud305 \ub4f1\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ub370\uc774\ud130 \ucc44\ub110.<\/li><\/ul>\n\n\n\n<p>\uc774\ub7ec\ud55c API\ub97c \ud1b5\ud574 \ud654\uc0c1 \ud1b5\ud654, \uc74c\uc131 \ud68c\uc758, \ud30c\uc77c \uacf5\uc720 \ub4f1 \ub9ce\uc740 \uc2e4\uc2dc\uac04 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc2e4\uc81c \ud1b5\uc2e0\uc5d0\uc11c\ub294 NAT \ucd08\uacfc\ub098 \ubc29\ud654\ubcbd \ubb38\uc81c\uac00 \uc788\uae30 \ub54c\ubb38\uc5d0 STUN\/TURN\/TURNS\uc640 \uac19\uc740 NAT \ud2b8\ub798\ubc84\uc124 \uae30\uc220\uc758 \uc774\ud574\uc640 \ub3c4\uc785\uc774 \ud544\uc218\uc801\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h2>STUN, TURN, TURNS\uc758 \ucc28\uc774\uc640 \uc5ed\ud560<\/h2>\n\n\n\n<p>WebRTC\uc5d0\uc11c \uc548\uc815\uc801\uc778 \ud53c\uc5b4 \ud22c \ud53c\uc5b4 \uc5f0\uacb0\uc744 \uc2e4\ud604\ud558\ub824\uba74 NAT \ucd08\uacfc(NAT traversal)\uc758 \uba54\ucee4\ub2c8\uc998\uc774 \ud544\uc218\uc801\uc785\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\uc11c\ub294 \ub300\ud45c\uc801\uc778 \uae30\uc220\uc778 STUN, TURN \ubc0f TURNS\uc5d0 \ub300\ud574 \uadf8 \uae30\uc220\uc801\uc778 \ucc28\uc774\uc640 \uc0ac\uc6a9 \uc7a5\uba74, \uc7a5\uc810 \ub2e8\uc810\uc744 \uc790\uc138\ud558\uac8c \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>STUN\uc740 \uc8fc\ub85c NAT \ud658\uacbd\uc5d0\uc11c \uc790\uc2e0\uc758 \uc678\ubd80 \uc8fc\uc18c\ub97c \uc54c\uae30 \uc704\ud55c \ud504\ub85c\ud1a0\ucf5c\uc774\uba70, TURN\uc740 \uc9c1\uc811 \uc5f0\uacb0\uc774 \ubd88\uac00\ub2a5\ud560 \ub54c \uc911\uacc4 \uc11c\ubc84 \uc5ed\ud560\uc744 \ud558\ub294 \ud504\ub85c\ud1a0\ucf5c\uc785\ub2c8\ub2e4. \ud55c\ud3b8 TURNS\ub294 TURN \ud1b5\uc2e0\uc744 TLS\ub85c \uc554\ud638\ud654\ud558\uace0 HTTPS\uc640 \uac19\uc740 443\ubc88 \ud3ec\ud2b8\uc5d0\uc11c \uc2e4\uc2dc\ud558\ub294 \ubc29\uc2dd\uc73c\ub85c \uae30\uc5c5 \ub124\ud2b8\uc6cc\ud06c \ub4f1 \uc5c4\uaca9\ud55c \ubc29\ud654\ubcbd \ud558\uc5d0\uc11c\uc758 \ud1b5\uc2e0\uc744 \uac00\ub2a5\ud558\uac8c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uac01\uac01\uc758 \ud2b9\uc131\uc744 \uc774\ud574\ud558\uace0 \uc801\uc808\ud558\uac8c \uad6c\ubd84\ud558\uc5ec WebRTC \ud1b5\uc2e0\uc758 \uc131\uacf5\ub960\uacfc \ud488\uc9c8\uc744 \ub192\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3>STUN (UDP)\uc758 \uc5ed\ud560\uacfc \ud2b9\uc9d5<\/h3>\n\n\n\n<p>STUN (Session Traversal Utilities for NAT)\uc740 \ud074\ub77c\uc774\uc5b8\ud2b8<strong>\uc678\ubd80 IP \uc8fc\uc18c \ubc0f \ud3ec\ud2b8<\/strong>\uc54c\uae30\uc704\ud55c \uac04\ub2e8\ud55c \ud504\ub85c\ud1a0\ucf5c\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 PC\uac00 NAT\ud558\uc5d0 \uc788\ub294 \uacbd\uc6b0, \uc2a4\uc2a4\ub85c\ub294 \uae00\ub85c\ubc8c IP\ub97c \ubaa8\ub985\ub2c8\ub2e4\ub9cc, STUN\uc11c\ubc84\uc5d0 \ubb38\uc758\ud558\ub294 \uac83\uc73c\ub85c \u300c\uc678\ubd80\ub85c\ubd80\ud130 \ubcf8 \uc790\uc2e0\uc758 IP:\ud3ec\ud2b8\u300d\ub97c \ucde8\ub4dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>STUN \uc11c\ubc84\ub294 \ub9d0\ud558\uba74 \uac70\uc6b8\uacfc \uac19\uc740 \uc5ed\ud560\ub85c \ubc1b\uc740 \uc694\uccad\uc758 \uc18c\uc2a4 \uc815\ubcf4\ub97c \uadf8\ub300\ub85c \ud68c\uc2e0\ud569\ub2c8\ub2e4. \uacb0\uacfc\uc801\uc73c\ub85c \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 \uc790\uc2e0\uc758 \uae00\ub85c\ubc8c IP \uc8fc\uc18c\uc640 NAT\uc5d0\uc11c \ud560\ub2f9\ud55c \ud3ec\ud2b8 \ubc88\ud638(Server Reflexive \ud6c4\ubcf4)\ub97c \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>STUN\uc758 \ud1b5\uc2e0\uc740 \ud1b5\uc0c1 UDP\ub85c \ud589\ud574\uc838, \ub514\ud3f4\ud2b8 \ud3ec\ud2b8\ub294 3478\ubc88(UDP\/3478)\uc785\ub2c8\ub2e4. UDP\uc5d0\uc11c\uc758 \uacbd\ub7c9\uc758 \ub2e8\ubc1c \ud1b5\uc2e0\uc73c\ub85c \ub05d\ub098\uae30 \ub54c\ubb38\uc5d0, \uc624\ubc84\ud5e4\ub4dc\uac00 \uc791\uace0 \uc800\uc9c0\uc5f0\uc774\uba70, \uc11c\ubc84\uce21\uc758 \ubd80\ud558\ub3c4 \uac70\uc758 \uc5c6\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c UDP \ud1b5\uc2e0\uc774 \ud5c8\uac00\ub41c \ud658\uacbd\uc5d0\uc11c\ub294 \uc6b0\uc120 STUN\uc5d0 \uc758\ud55c NAT \ucd08\uacfc\ub97c \uc2dc\ub3c4\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h4><strong>STUN \uc0ac\uc6a9 \uc7a5\uba74<\/strong><\/h4>\n\n\n\n<p>\uc790\ud0dd \ub124\ud2b8\uc6cc\ud06c\ub098 \ubaa8\ubc14\uc77c \ud68c\uc120 \ub4f1, NAT \ucd08\uacfc\ub294 \ud544\uc694\ud558\uc9c0\ub9cc UDP \ud1b5\uc2e0 \uc790\uccb4\ub294 \ucc28\ub2e8\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc740 \ud658\uacbd\uc5d0\uc11c \uc720\ud6a8\ud569\ub2c8\ub2e4. STUN\uc73c\ub85c \uc11c\ub85c\uc758 \uc678\ubd80 IP:\ud3ec\ud2b8\ub97c \ucde8\ub4dd\ud560 \uc218 \uc788\uc73c\uba74, \ud074\ub77c\uc774\uc5b8\ud2b8\ub07c\ub9ac\uac00 \uc9c1\uc811(\ud53c\uc5b4 \ud22c \ud53c\uc5b4) \ud1b5\uc2e0\uc744 \ud655\ub9bd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud1b5\uc2e0 \uacbd\ub85c\uac00 \uc9c1\uc811\ub418\ub294 \ubd84, \uc9c0\uc5f0\uc774 \uc801\uace0 \ud488\uc9c8\ub3c4 \ub192\uac8c \uc720\uc9c0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc11c\ubc84\ub294 IP \uc815\ubcf4\ub97c \uad50\ud658\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774\ub418\ubbc0\ub85c \ube44\uc6a9\ub3c4 \ub9e4\uc6b0 \ub0ae\uac8c \uc720\uc9c0\ub429\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \uc628\ub77c\uc778 \uac8c\uc784\uc774\ub098 \ud654\uc0c1 \ud1b5\ud654\uc5d0\uc11c \uc591\ucabd \uc7a5\uce58\uac00 \uc0c1\ub300\uc801\uc73c\ub85c \uac1c\ubc29\ub41c NAT\uc5d0 \uc788\ub294 \uacbd\uc6b0 STUN\uc5d0\uc11c \ucda9\ubd84\ud788 \ud53c\uc5b4 \ud22c \ud53c\uc5b4 \uc5f0\uacb0\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>STUN\uc758 \ud55c\uacc4\uc640 \ub2e8\uc810<\/h4>\n\n\n\n<p>STUN\uc740 \uc5b4\ub514\uae4c\uc9c0\ub098 \u201c\uc790\uc2e0\uc758 \uc678\ubd80 \uc8fc\uc18c\ub97c \uc54c\uae30\u201d \uc704\ud55c \uc218\ub2e8\uc73c\ub85c, NAT \ud0c0\uc785\uc774\ub098 \ubc29\ud654\ubcbd\uc758 \uc81c\uc57d\uc5d0 \ub530\ub77c\uc11c\ub294 \uc774\uac83\ub9cc\uc73c\ub85c\ub294 \uc811\uc18d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud2b9\ud788 \uc2e0\uba54\ud2b8\ub9ad NAT(\ub300\uce6d\ud615 NAT)\ub098 \uc5c4\uaca9\ud55c \ubc29\ud654\ubcbd \ud658\uacbd\uc5d0\uc11c\ub294 STUN\uc5d0\uc11c \uc5bb\uc740 \uc8fc\uc18c\ub85c\ub294 \uc0c1\ub300\ub85c\ubd80\ud130\uc758 \ud328\ud0b7\uc774 \ub2ff\uc9c0 \uc54a\uace0 \ud1b5\uc2e0\ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub610 \uae30\uc5c5 \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c\ub294 UDP \ud1b5\uc2e0 \uadf8 \uc790\uccb4\uac00 \ube14\ub85d \ub418\uace0 \uc788\ub294 \uacbd\uc6b0\ub3c4 \uc788\uc5b4, \uadf8 \uacbd\uc6b0 STUN \ub9ac\ud018\uc2a4\ud2b8 \uc790\uccb4\uac00 \ub3c4\ucc29\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc694\ucee8\ub300, STUN\uc740 &quot;\uc9c1\uc811 \ud1b5\uc2e0\uc774 \uac00\ub2a5\ud55c\uc9c0 \ud310\ub2e8\ud558\uae30&quot; \uc704\ud55c \uad6c\uc870\uc774\uba70, \uc9c1\uc811 \ud1b5\uc2e0\uc774 \ubb3c\ub9ac\uc801\uc73c\ub85c \ubd88\uac00\ub2a5\ud55c \ud658\uacbd\uc5d0\uc11c\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uadf8 \ub54c\ubb38\uc5d0 STUN\uc740 ICE(\ud6c4\uc220)\uc5d0 \uc788\uc5b4\uc11c \uc81c1\ub2e8\uacc4\uc758 \ud6c4\ubcf4 \ucde8\ub4dd\uc5d0 \uc0ac\uc6a9\ub418\uc5b4, STUN\uc73c\ub85c \ucda9\ubd84\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0\uc5d0\ub294 \ud6c4\uc220\ud558\ub294 TURN\uc5d0 \ud3f4\ubc31 \ud558\ub294 \uc124\uacc4\uac00 \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3>TURN (UDP)\uc758 \uc5ed\ud560\uacfc \ud2b9\uc9d5<\/h3>\n\n\n\n<p>TURN(Traversal Using Relays around NAT)\uc740 STUN\uc5d0\uc11c \uc9c1\uc811 \ud1b5\uc2e0\ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0 \uc911\uacc4 \ub9b4\ub808\uc774\ub85c \ub3d9\uc791\ud558\ub294 \ud504\ub85c\ud1a0\ucf5c\uc785\ub2c8\ub2e4. TURN \uc11c\ubc84\ub294 \uae00\ub85c\ubc8c \uc561\uc138\uc2a4 \uac00\ub2a5\ud55c \ub9b4\ub808\uc774 \ud3ec\uc778\ud2b8\ub85c\uc11c \ud1b5\uc2e0 \uc0c1\ub300\uc640\uc758 \uc0ac\uc774\uc5d0 \ub4e4\uc5b4\uac00 \ud328\ud0b7\uc744 \uc804\uc1a1\ud569\ub2c8\ub2e4. \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 TURN \uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud558\uace0 Relay \ud6c4\ubcf4\ub77c\ub294 \ub9b4\ub808\uc774\uc6a9 IP \uc8fc\uc18c\uc640 \ud3ec\ud2b8\ub97c \uac80\uc0c9\ud569\ub2c8\ub2e4. \uc774\ud6c4, \uadf8 TURN \uc11c\ubc84 \uacbd\uc720\ub85c \uc0c1\ub300\uc640\uc758 \ubbf8\ub514\uc5b4\ub098 \ub370\uc774\ud130\uc758 \uad50\ud658\uc744 \uc2e4\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>TURN\ub3c4 \ud1b5\uc0c1\uc740 UDP\ub85c \ud1b5\uc2e0\ud558\uae30 \ub54c\ubb38\uc5d0, UDP\ub9cc \ud1b5\uacfc\ud558\uba74 \uc9c1\uc811 \ud1b5\uc2e0\uacfc \uac00\uae4c\uc6b4 \ud615\ud0dc\ub85c \ubbf8\ub514\uc5b4 \ud328\ud0b7\uc744 \uc911\uacc4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c STUN\uacfc \ub3d9\uc77c\ud55c 3478\ubc88 \ud3ec\ud2b8(UDP)\uc5d0\uc11c TURN \ud504\ub85c\ud1a0\ucf5c\uc744 \uc218\ub77d\ud569\ub2c8\ub2e4. \ubc29\ud654\ubcbd \uc815\ucc45\uc774 UDP \ud3ec\ud2b8 \ubc88\ud638\ub97c \uc81c\ud55c\ud558\ub294 \uacbd\uc6b0\uc5d0\ub3c4 UDP\/443\ucc98\ub7fc \ud5c8\uc6a9\ub41c \ud3ec\ud2b8\uc5d0\uc11c TURN\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. UDP\ub9cc \uc0ac\uc6a9\ud558\uba74 TCP\ubcf4\ub2e4 \uc2e4\uc2dc\uac04\uc131\uc774 \ub192\uc740 \uc911\uacc4\uac00 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>TURN \uc0ac\uc6a9 \uc7a5\uba74<\/h4>\n\n\n\n<p>\uc0c1\ub300\ubc29\uacfc \uc9c1\uc811 \uc5f0\uacb0\ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0 TURN\uc740 \ud544\uc218\uc801\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uba74<span class=\"swl-marker mark_blue\">\ud558\ub098 \ub610\ub294 \ub458 \ub2e4 \uae30\uc5c5\uc758 \uc5c4\uaca9\ud55c \ubc29\ud654\ubcbd\uc5d0 \uc788\uac70\ub098 \ub300\uce6d NAT\uac00 UDP \ud640 \ud380\uce58\uc5d0 \uc2e4\ud328\ud558\ub294 \uacbd\uc6b0<\/span>. \uc774\ub7ec\ud55c \ud658\uacbd\uc5d0\uc11c\ub294 TURN \uc11c\ubc84\ub97c \ud1b5\ud55c \ub9b4\ub808\uc774 \uc5c6\uc774 \ud1b5\uc2e0\uc744 \ud560 \uc218 \uc5c6\uae30 \ub54c\ubb38\uc5d0 TURN\uc740 \ub9d0\ud558\uc790\uba74 \ub9c8\uc9c0\ub9c9 \uc694\uc0c8 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>WebRTC\uc5d0\uc11c\ub294 \ubaa8\ub4e0 \ud53c\uc5b4\uac00 \uc9c1\uc811 \ud1b5\uc2e0\ud560 \uc218 \uc788\ub294 \uac83\uc744 \ubaa9\ud45c\ub85c \ud569\ub2c8\ub2e4\ub9cc, \uadf8\uac83\uc774 \uc774\ub8e8\uc5b4\uc9c0\uc9c0 \uc54a\ub294 \uacbd\uc6b0\uc5d0\uc11c\ub3c4 TURN\uc5d0 \ud3f4\ubc31 \ud558\ub294 \uac83\uc73c\ub85c \ud1b5\uc2e0 \uc790\uccb4\ub294 \uacc4\uc18d \uac00\ub2a5\ud558\uac8c \ub429\ub2c8\ub2e4. \uc2e4\uc81c \uc6b4\uc601\uc5d0\uc11c\ub294 \uba3c\uc800 STUN\uc5d0\uc11c \uc9c1\uc811 \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud558\uace0 \uc2e4\ud328\ud55c \uacbd\uc6b0\uc5d0\ub9cc TURN \ub9b4\ub808\uc774\ub85c \uc804\ud658\ud558\ub294 \uac83\uc774 \uc77c\ubc18\uc801\uc778 \uc804\ub7b5\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \uc0ac\ub0b4 \ub124\ud2b8\uc6cc\ud06c\ub97c \ub118\ub294 \ud654\uc0c1 \ud68c\uc758\uc5d0\uc11c \uc11c\ub85c \uc9c1\uc811 \ud1b5\uc2e0\ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0 \uc790\ub3d9\uc73c\ub85c TURN \uc11c\ubc84 \uacbd\uc720\uc758 \ud1b5\uc2e0\uc73c\ub85c \uc804\ud658\ub418\uc5b4 \uc0ac\uc6a9\uc790\ub294 \uc758\uc2dd\ud558\uc9c0 \uc54a\uace0 \ub300\ud654\ub97c \uacc4\uc18d\ud560 \uc218 \uc788\uac8c \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h4><strong>TURN\uc758 \uc7a5\uc810<\/strong><\/h4>\n\n\n\n<p>\uac00\uc7a5 \ud070 \uc7a5\uc810\uc740 \ud655\uc2e4\uc131\uc785\ub2c8\ub2e4. \uc5b4\ub5a0\ud55c NAT\ub098 \ubc29\ud654\ubcbd \ud658\uacbd\uc5d0\uc11c\ub3c4 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c TURN \uc11c\ubc84\ub85c\uc758 \ud1b5\uc2e0\ub9cc \ud655\ub9bd\ud560 \uc218 \uc788\uc73c\uba74 \uad81\uadf9\uc801\uc73c\ub85c \ud53c\uc5b4\uac04 \ud1b5\uc2e0\uc744 \uc2e4\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c TURN\uc740 \ud504\ub85c\ud1a0\ucf5c\uc0c1 STUN\uc758 \ud655\uc7a5\uc774\uae30 \ub54c\ubb38\uc5d0, \ub2e8\uc77c\uc758 \uc11c\ubc84 \uad6c\ud604(\ud6c4\uc220\uc758 coturn \ub4f1)\ub85c STUN \ub9ac\ud018\uc2a4\ud2b8\uc640 TURN \ub9ac\ud018\uc2a4\ud2b8\uc758 \uc591\ucabd \ubaa8\ub450\ub97c \ucc98\ub9ac \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc77c\ub2e8 \uc811\uc18d\uc774 \ud655\ub9bd\ub418\uc5b4 \ubc84\ub9ac\uba74, \uc774\ud6c4\uc758 \ubbf8\ub514\uc5b4\ub294 \uc2a4\ud2b8\ub9bc\ub85c\uc11c \uc911\uacc4\ub418\uae30 \ub54c\ubb38\uc5d0, \uc774\uc6a9\uc790\ub85c\ubd80\ud130 \ubcf4\uba74 \ub2e4\uc18c\uc758 \uc9c0\uc5f0\uc744 \uc81c\uc678\ud558\uace0 \uc6d0\ud65c\ud55c \ud1b5\uc2e0\uc744 \uc2e4\uc2dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h4><strong>TURN\uc758 \ub2e8\uc810<\/strong><\/h4>\n\n\n\n<p> \uac00\uc7a5 \ud070 \ub2e8\uc810\uc740 \uc790\uc6d0 \uc18c\ube44\uc640 \uc9c0\uc5f0\uc785\ub2c8\ub2e4. TURN\uc5d0\uc11c\ub294 \uc74c\uc131\uacfc \uc601\uc0c1 \ub370\uc774\ud130 \ubaa8\ub450\uac00 \uc11c\ubc84\ub97c \uacbd\uc720\ud558\uae30 \ub54c\ubb38\uc5d0 \uc11c\ubc84 \uce21\uc5d0\uc11c \ub9ce\uc740 \ub300\uc5ed\ud3ed\uacfc \ucc98\ub9ac \ub2a5\ub825\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \uc77c\ub300\uc77c \ud654\uc0c1 \ud1b5\ud654\uc5d0\uc11c \ub2e8\ubc29\ud5a5 1Mbps \ub300\uc5ed\uc744 \uc18c\ube44\ud55c\ub2e4\uace0 \uac00\uc815\ud558\uba74 1000\uba85\uc758 \uc0ac\uc6a9\uc790\uac00 \ub3d9\uc2dc\uc5d0 \uc0ac\uc6a9\ud558\uba74 \ub2e8\uc21c \uacc4\uc0b0\uc5d0\uc11c 1Gbps\uc758 \uc911\uacc4 \ub300\uc5ed\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uc774 \ub54c\ubb38\uc5d0 TURN \uc11c\ubc84\uc758 \uc6b4\uc6a9 \ube44\uc6a9\uc740 \ub192\uace0, \ub300\uaddc\ubaa8 \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \ub2e4\uc218\uc758 TURN \uc911\uacc4 \uc11c\ubc84\ub97c \uc900\ube44\ud574 \uc2a4\ucf00\uc77c\uc2dc\ud0ac \ud544\uc694\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub610\ud55c \ud1b5\uc2e0 \uacbd\ub85c\uac00 \uba40\uc5b4\uc9d0\uc73c\ub85c\uc368 \uc9c0\uc5f0\uc774 \uc99d\uac00\ud558\uc5ec \uc601\uc0c1\u00b7\uc74c\uc131\uc758 \ud0c0\uc784 \ub7ec\uadf8\ub098 \ud488\uc9c8 \uc800\ud558\ub97c \ucd08\ub798\ud569\ub2c8\ub2e4. \uac8c\ub2e4\uac00 STUN\uc5d0 \uc758\ud55c \ud53c\uc5b4 \ud22c \ud53c\uc5b4 \ud1b5\uc2e0\uc5d0 \ube44\ud574 TURN \uacbd\uc720\ub294 \uc5c4\ubc00\ud558\uac8c\ub294 \ud53c\uc5b4 \ud22c \ud53c\uc5b4\uac00 \uc544\ub2c8\uae30 \ub54c\ubb38\uc5d0 \uae30\ubc00\uc131\uc758 \uad00\uc810\uc5d0\uc11c\ub3c4 \uc57d\uac04 \ub4a4\ub5a8\uc5b4\uc9d1\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc77c\ubc18\uc801\uc73c\ub85c TURN\uc740 \ud544\uc694\ud55c \uacbd\uc6b0\uc5d0\ub9cc \uc0ac\uc6a9\ud574\uc57c\ud558\ub294 \uc218\ub2e8\uc785\ub2c8\ub2e4. \uc0ac\uc2e4, \ub9ce\uc740 WebRTC \ud1b5\uc2e0\uc740 STUN\uc73c\ub85c \uc9c1\uc811 \uc5f0\uacb0\ub418\uc5b4 \uc788\uc73c\uba70 Google \ud1b5\uacc4\ub294 \uc804\uccb4 \uc57d 86% \ud1b5\ud654\uac00 \ub9b4\ub808\uc774 \ubd88\ud544\uc694(\ud53c\uc5b4 \ud22c \ud53c\uc5b4)\ub85c \uc774\ub8e8\uc5b4\uc9c4 \uac83\uc73c\ub85c \ubcf4\uace0\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub098\uba38\uc9c0 \uc57d 14%\ub9cc\uc774 TURN\uc774 \ud544\uc694\ud55c \uacbd\uc6b0\uc774\uc9c0\ub9cc, 14%\ub97c \uc704\ud574 TURN \uc778\ud504\ub77c\ub97c \uc900\ube44\ud558\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h3>TURNS(TLS over TCP\/443)\uc758 \uc5ed\ud560\uacfc \ud2b9\uc9d5<\/h3>\n\n\n\n<p>TURNS\ub294 \u300cTURN over TLS\u300d\uc758 \uc57d\uce6d\uc73c\ub85c, TURN \ud504\ub85c\ud1a0\ucf5c\uc5d0\uc11c\uc758 \uc911\uacc4 \ud1b5\uc2e0\uc744 \ud55c\uce35 \ub354 TLS(Transport Layer Security)\ub85c \uc554\ud638\ud654\ud55c \uac83\uc785\ub2c8\ub2e4. \ud3c9\ud3c9\ud558\uac8c \ub9d0\ud558\uba74<span class=\"swl-marker mark_blue\">TLS(HTTPS)\ub85c \ubcf4\ud638\ub418\ub294 TURN \ud1b5\uc2e0<\/span>\uadf8\ub9ac\uace0 \uc885\uc885 TCP 443 \ud3ec\ud2b8\uc5d0\uc11c \uc11c\ube44\uc2a4\ud569\ub2c8\ub2e4.<span class=\"swl-marker mark_blue\">\ud3ec\ud2b8 443\uc740 HTTPS\uc640 \ub3d9\uc77c\ud55c \ud3ec\ud2b8 \ubc88\ud638\uc774\ubbc0\ub85c \uae30\uc5c5 \ubc29\ud654\ubcbd\uc5d0\uc11c\ub3c4 \ud1b5\uacfc\ud558\uae30 \uc27d\uace0 \ud504\ub85d\uc2dc\uc640 \uac80\uc5f4\uc744 \ud53c\ud558\uae30 \uc27d\ub2e4\ub294 \uc774\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/span>.<\/p>\n\n\n\n<p>\uc608\ub97c \ub4e4\uba74 \uc0ac\ub0b4 \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c\ub294 \uc678\ubd80\ub85c\uc758 \ud1b5\uc2e0\uc740 80\ubc88\uacfc 443\ubc88 \ubc16\uc5d0 \ud5c8\uac00\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc740 \uacbd\uc6b0\uac00 \uc788\uc2b5\ub2c8\ub2e4\ub9cc, \uadf8 \uacbd\uc6b0\uc5d0\uc11c\ub3c4 443\ubc88\uc73c\ub85c TLS \ud1b5\uc2e0\uc744 \uc2e4\uc2dc\ud558\ub294 TURN \uc11c\ubc84\ub77c\uba74 \ud1b5\uacfc\ud560 \uac00\ub2a5\uc131\uc774 \ub192\uc2b5\ub2c8\ub2e4. \uac8c\ub2e4\uac00 TLS \uc554\ud638\ud654\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 \ud1b5\uc2e0 \ub0b4\uc6a9\uc740 \uc81c3\uc790\ub85c\ubd80\ud130 \uac00\ub85c\ucc44\uae30 \uc5b4\ub835\uace0 \uc548\uc804\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>WebRTC\uc5d0\uc11c\ub294 \uc124\uc815\uc0c1<code>&quot;urls&quot;: &quot;turns:\ud134 \uc11c\ubc84:443&quot;<\/code>\uac19\uc740 URI \uccb4\uacc4\uc5d0<code>turns:<\/code>\ub97c \uc9c0\uc815\ud558\uba74 \uc774 TLS \uc554\ud638\ud654\ub41c TURN \uc11c\ubc84\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>TURNS \uc0ac\uc6a9 \uc7a5\uba74<\/h4>\n\n\n\n<p>\uae30\uc5c5\ub0b4 \ub124\ud2b8\uc6cc\ud06c \ub4f1 \uc5c4\uaca9\ud55c \uc81c\ud55c\ud558\uc5d0\uc11c\uc758 WebRTC \ud1b5\uc2e0\uc5d0 \uc788\uc5b4\uc11c, \ub2e4\ub978 \uc218\ub2e8\uc774 \ubaa8\ub450 \ucc28\ub2e8\ub418\uc5b4 \ubc84\ub9ac\ub294 \uacbd\uc6b0\uc5d0 TURNS\uac00 \ud65c\uc57d\ud569\ub2c8\ub2e4. \ubaa8\ub4e0 UDP\ub098 TCP\uc758 \uc77c\ubc18 \ud3ec\ud2b8\uac00 \ubd09\uc1c4\ub418\uc5b4 \uc788\ub294 \ud658\uacbd\uc5d0\uc11c\ub3c4 HTTPS \ud1b5\uc2e0\uacfc \uac19\uc740 \ucde8\uae09\uc774\uba74 \ud5c8\ub77d\ud560 \ubc29\uce68\uc774 \ub9ce\uae30 \ub54c\ubb38\uc5d0 TLS 443 \ud3ec\ud2b8 \uc0c1\uc758 TURN\uc740 \uc0ac\uc2e4\uc0c1 \ub9c8\uc9c0\ub9c9 \uc218\ub2e8\uc73c\ub85c\uc11c \uc720\ud6a8\ud558\ub2e4.<\/p>\n\n\n\n<p>\ub610, \uacf5\uc911 \ubb34\uc120 LAN\ub4f1\uc5d0\uc11c \ud2b9\uc815\uc758 \ud3ec\ud2b8\uac00 \ub2eb\ud600 \uc788\ub294 \uc0c1\ud669\uc774\ub098, \ud074\ub77c\uc774\uc5b8\ud2b8\uce21\uc5d0\uc11c \uc544\ubb34\ub798\ub3c4 TLS \ud1b5\uc2e0 \ubc16\uc5d0 \ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0\uc5d0\ub3c4 \uc774\uc6a9\ub429\ub2c8\ub2e4. \uc694\ucee8\ub300,<span class=\"swl-marker mark_blue\">\uc6b0\uc120 UDP, \uadf8\uac83\uc774 \uc548\ub41c\ub2e4\uba74 TCP, \uadf8\uac83\ub3c4 \uc548\ub41c\ub2e4\uba74 TLS\ub85c 443\uc5d0<\/span>&#039;\ub77c\uace0 \ud558\ub294 \ub2e8\uacc4\uc801\uc778 \ud3f4\ubc31\uc758 \ucd5c\uc885\ub2e8\uc73c\ub85c \uc790\ub9ac\ub9e4\uae40\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h4>TURNS\uc758 \uc7a5\uc810<\/h4>\n\n\n\n<p>\ubc29\ud654\ubcbd \ub0b4\uc131\uc758 \ub192\uc774\uac00 \uac00\uc7a5 \ud070 \uc7a5\uc810\uc785\ub2c8\ub2e4. TLS\uc758 \uc554\ud638\ud654 \ud1b5\uc2e0\uc740 \uc77c\ubc18\uc801\uc778 HTTPS\uc640 \uad6c\ubcc4\ud558\uae30 \uc5b4\ub835\uae30 \ub54c\ubb38\uc5d0 \uc5c4\uaca9\ud55c \ud544\ud130\ub85c\ub3c4 \ud1b5\uacfc\ud560 \uac00\ub2a5\uc131\uc774 \ub192\uc544\uc9d1\ub2c8\ub2e4. \ud2b9\ud788 \uc6f9 \ud68c\uc758 \uc2dc\uc2a4\ud15c\uc744 \uae30\uc5c5 \ub3c4\uc785\ud558\ub294 \uacbd\uc6b0, \uc0ac\ub0b4 \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \uc678\ubd80\ub85c\uc758 \uc811\uc18d\uc744 \ud5c8\uac00\ubc1b\uc744 \ud544\uc694\uac00 \uc788\uc2b5\ub2c8\ub2e4\ub9cc, TCP\/443\uc5d0\uc11c\uc758 TLS \ud1b5\uc2e0\uc774\uba74 \ubcf4\uc548 \uc815\ucc45\uc0c1 \ubc1b\uc544\ub4e4\uc774\uae30 \uc27d\uc2b5\ub2c8\ub2e4. \ub610 \uc554\ud638\ud654\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0, \uc911\uacc4 \uc11c\ubc84\uc5d0\uc758 \ud1b5\uc2e0 \uc790\uccb4\uc758 \ube44\ubc00\uc131\ub3c4 \ud655\ubcf4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4(\u203b\ub2e4\ub9cc \uc601\uc0c1\ub4f1\uc758 \ucee8\ud150\uce20 \uadf8 \uc790\uccb4\ub294 \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 WebRTC \ub808\uc774\uc5b4\ub85c \uc774\ubbf8 \uc554\ud638\ud654\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4).<\/p>\n\n\n\n<h4>TURNS\uc758 \ub2e8\uc810<\/h4>\n\n\n\n<p>\uac00\uc7a5 \ud070 \ub2e8\uc810\uc740 \uc131\ub2a5 \uce21\uba74\uc758 \ubc8c\uce59\uc785\ub2c8\ub2e4. TURN \uc790\uccb4\uc758 \uc9c0\uc5f0 \ubc0f \ubd80\ud558 \uc678\uc5d0\ub3c4 TLS \ubc0f TCP \uc624\ubc84 \ud5e4\ub4dc\uac00 \ucd94\uac00\ub429\ub2c8\ub2e4. TCP\ub294 \uc2e0\ub8b0\uc131 \uc6b4\uc1a1\uc744 \uc704\ud574 \ud328\ud0b7 \uc190\uc2e4 \uc2dc \uc7ac\uc804\uc1a1 \uae30\uad6c\uac00 \uc791\ub3d9\ud558\uc9c0\ub9cc, \uc2e4\uc2dc\uac04 \ubbf8\ub514\uc5b4\uc5d0\ub294 \uc801\ud569\ud558\uc9c0 \uc54a\uc73c\uba70, \uc190\uc2e4\uc774 \ubc1c\uc0dd\ud558\uba74 \uc601\uc0c1\u00b7\uc74c\uc131\uc774 \uc6d0\ud65c\ud558\uac8c \uc7ac\uc0dd\ub418\uc9c0 \uc54a\uc744 \uac00\ub2a5\uc131\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub610\ud55c TCP\ub294 \ud328\ud0b7 \uc21c\uc11c \uc81c\uc5b4\ub97c \uc704\ud574 \ud5e4\ub4dc \uc624\ube0c \ub77c\uc778 \ube14\ub85c\ud0b9\uc774 \ubc1c\uc0dd\ud558\uae30 \uc27d\uace0,<span class=\"swl-marker mark_blue\">UDP\uc5d0 \ube44\ud574 \uc9c0\ud130(\ud3b8\ucc28)\ub3c4 \uc99d\ub300<\/span>. \ub610\ud55c TLS \uc554\ud638\ud654\u00b7\ubcf5\ud638 \ucc98\ub9ac\uc5d0 \uc758\ud55c CPU \ubd80\ud558\ub3c4 \ub354\ud574\uc9d1\ub2c8\ub2e4. \uadf8 \uacb0\uacfc, \uc2e4\uce21\uc73c\ub85c 50ms \uc774\uc0c1\uc758 \ucd94\uac00 \uc9c0\uc5f0\uc774 \ubc1c\uc0dd\ud574, \uc720\uc800\uc5d0\uac8c\ub3c4 \uccb4\uac10\ud560 \uc218 \uc788\ub294 \ub7ec\uadf8\uac00 \ubc1c\uc0dd\ud55c\ub2e4\uace0 \ubcf4\uace0\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud2b9\ud788 \ud654\uc0c1\ud68c\uc758\uc5d0\uc11c\ub294 \uc774 \uc9c0\uc5f0 \uc99d\uac00\uc5d0 \uc758\ud574 \ub300\ud654\uc758 \ud15c\ud3ec\uac00 \ub098\ube60\uc9c0\uac70\ub098 \ud0c0\uc774\ubc0d\uc758 \uc5b4\uae0b\ub0a8\uc774 \ud604\uc800\ud574\uc9c0\ub294 \uacbd\uc6b0\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\uc640 \uac19\uc774 TURNS\ub294 \ud488\uc9c8\uba74\uc5d0\uc11c\ub294 \u300c\ucd5c\uc885 \uc218\ub2e8\u300d\uc774\ub77c\uace0 \ud560 \uc218 \uc788\ub294 \uc218\ubc95\uc785\ub2c8\ub2e4\ub9cc, \ud1b5\uc2e0\uc744 \uc131\ub9bd\uc2dc\ud0a4\uae30 \uc704\ud574\uc11c\ub294 \ubc30\uc5d0 \ubc30\ub294 \ub300\uc2e0\ud560 \uc218 \uc5c6\ub294 \uc0c1\ud669\uc5d0\uc11c \uc758\uc9c0\uac00 \ub418\ub294 \uba85\uac15\uc774\uae30\ub3c4 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub610\ud55c, \ucd5c\uadfc\uc5d0\ub294 UDP 443\ubc88\uc73c\ub85c \ub3d9\uc791\ud574 TLS \ub300\uc2e0\uc5d0 DTLS\/QUIC\ub4f1\uc744 \uc0ac\uc6a9\ud55c \uc0c8\ub85c\uc6b4 \uc5b4\ud504\ub85c\uce58(TURN over QUIC)\ub3c4 \uac80\ud1a0\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4\ub9cc, \ud45c\uc900\ud654 \ub3c4\uc0c1\uc774\uba70 \uc77c\ubc18\uc801\uc774\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2>UDP STUN\uc744 \uc0ac\uc6a9\ud560 \uc218\uc5c6\ub294 \uacbd\uc6b0\uc758 \ud1b5\uc2e0 \ud750\ub984<\/h2>\n\n\n\n<p>UDP\uc5d0 \uc758\ud55c STUN\uc744 \uc774\uc6a9\ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0\uc5d0 WebRTC\uc758 ICE \ucc98\ub9ac\uac00 \uc5b4\ub5bb\uac8c \uc9c4\ud589\ub418\ub294\uc9c0\ub97c \ub2e8\uacc4\ubcc4\ub85c \uc124\uba85\ud569\ub2c8\ub2e4. \uae30\uc5c5 \ub124\ud2b8\uc6cc\ud06c \ub4f1\uc5d0\uc11c UDP\uac00 \uc804\uba74\uc801\uc73c\ub85c \ucc28\ub2e8\ub418\uace0 \uc788\ub294 \uc0c1\ud669\uc744 \uc0c1\uc815\ud558\uace0, ICE \ud611\uc0c1\uc774 \uc5b4\ub5bb\uac8c \ud3f4\ubc31\ud558\ub294\uc9c0\ub97c \ucd94\uad6c\ud574 \ubd05\uc2dc\ub2e4.<\/p>\n\n\n\n<ol><li><strong>\ud074\ub77c\uc774\uc5b8\ud2b8\uac00 STUN \uc11c\ubc84\uc5d0 \uc678\ubd80 IP \ucffc\ub9ac(UDP\/3478)\ub97c \ubcf4\ub0c5\ub2c8\ub2e4.<\/strong><br>WebRTC \ud074\ub77c\uc774\uc5b8\ud2b8(\ube0c\ub77c\uc6b0\uc800)\ub294<code>iceServers<\/code>\uc5d0 \uc9c0\uc815\ub41c STUN \uc11c\ubc84\uc5d0 UDP \ud3ec\ud2b8 3478\uc744 \ud1b5\ud574 Binding Request(\uc678\ubd80 \uc8fc\uc18c \ud655\uc778 \uc694\uccad)\ub97c \ubcf4\ub0c5\ub2c8\ub2e4. \uc774\uac83\uc740 ICE \ud6c4\ubcf4 \uc218\uc9d1\uc758 \uccab \ub2e8\uacc4\uc5d0\uc11c \uc774\ub8e8\uc5b4\uc9c0\uba70 \uc131\uacf5\ud558\uba74 \uc11c\ubc84\uc5d0\uc11c \uc790\uc2e0\uc758 \uae00\ub85c\ubc8c IP \uc8fc\uc18c\uc640 \ud3ec\ud2b8 \ubc88\ud638\ub97c \ubc18\ud658\ud558\uace0 Server Reflexive Candidate (srflx \ud6c4\ubcf4)\ub85c \ud6c4\ubcf4 \ubaa9\ub85d\uc5d0 \ucd94\uac00\ub429\ub2c8\ub2e4.<\/li><li><strong>UDP \ud328\ud0b7\uc774 \ubc29\ud654\ubcbd\uc5d0\uc11c \ucc28\ub2e8\ub418\uace0 \uc751\ub2f5 \uc5c6\uc74c:<\/strong><br>\uc774 \uacbd\uc6b0 \ub124\ud2b8\uc6cc\ud06c\uc758 \ubc29\ud654\ubcbd \uc124\uc815\uc73c\ub85c \uc778\ud574 UDP \ud1b5\uc2e0\uc774 \uc678\ubd80\ub85c \uc804\uc1a1\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c STUN \uc11c\ubc84\uc5d0 \ub300\ud55c \uc694\uccad\uc774 \uc11c\ubc84\uc5d0 \ub3c4\ucc29\ud558\uc9c0 \uc54a\uac70\ub098 \uc751\ub2f5\uc774 \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c \ub3cc\uc544 \uc624\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uacb0\uacfc\uc801\uc73c\ub85c \uace0\uac1d\uc740<strong>STUN \uc751\ub2f5\uc744 \uc218\uc2e0\ud560 \uc218 \uc5c6\uc74c<\/strong>, \uc678\ubd80 IP \uc8fc\uc18c\ub97c \uc54c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. ICE \uc5d0\uc774\uc804\ud2b8\ub294 \uc77c\uc815 \uc2dc\uac04 \uc751\ub2f5\uc744 \uae30\ub2e4\ub9ac\uc9c0\ub9cc \uc2dc\uac04 \ucd08\uacfc\ub97c \ub9de\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\ub85c\ubd80\ud130 \ubcf4\uba74, \uc774 \uc2dc\uc810\uc5d0\uc11c\ub294 \uc544\uc9c1 \uc811\uc18d \ucc98\ub9ac\uc911\uc774\uba70 \ud2b9\ud788 \uc5d0\ub7ec \ud45c\uc2dc\ub294 \ub098\uc624\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\ub9cc, \uc2e4\uc81c\ub85c\ub294<strong>\ud6c4\ubcf4 \uc218\uc9d1\uc5d0 \uc2e4\ud328<\/strong>\ub04a\uc784\uc5c6\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/li><li><strong>Server Reflexive \ud6c4\ubcf4\ub97c \uc5bb\uc744 \uc218 \uc5c6\uae30 \ub54c\ubb38\uc5d0 ICE\uc758 \uc9c1\uc811 \uc5f0\uacb0 \ud655\uc778 \uc2e4\ud328 :<\/strong><br>\uc77c\ubc18\uc801\uc73c\ub85c STUN\uc774 \uc131\uacf5\ud558\uba74 \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 Host \ud6c4\ubcf4(\uc790\uc2e0\uc758 \ub85c\uceec IP) \uc774\uc678\uc5d0 Server Reflexive \ud6c4\ubcf4(\uc790\uc2e0\uc758 \uae00\ub85c\ubc8c IP)\ub97c \uac16\uace0, \uc6d0\ub2e8 \ud53c\uc5b4\uc758 \ub3d9\uc885\uc758 \ud6c4\ubcf4\uc640 \uc870\ud569\ud574 \uc811\uc18d \uccb4\ud06c\ub97c \uc2e4\uc2dc\ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098 STUN \uc2e4\ud328\ub85c \uc778\ud574 \uae00\ub85c\ubc8c IP \ud6c4\ubcf4\uac00 \uc5c6\ub2e4\uba74,<strong>\uc9c1\uc811 \ud53c\uc5b4\uac04 \uc811\uc18d\uc758 \ud6c4\ubcf4\uac00 \uadf9\ub2e8\uc801\uc73c\ub85c \ud55c\uc815<\/strong>\ub429\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uc591\uc790 \ubaa8\ub450 \uc0ac\uc124 IP\ub9cc\uc744 \uac00\uc9c0\ub294 \uc0c1\ud0dc\uc5d0\uc11c\ub294, \uc11c\ub85c \uc811\uc18d \uc2dc\ub3c4\ud574\ub3c4 \ub3c4\ucc29\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uadf8 \uacb0\uacfc ICE\ub294 &quot;\uc9c1\ud1b5\uc5d0\uc11c\ub294 \ubb34\ub9ac&quot;\ub77c\uace0 \ud310\ub2e8\ud569\ub2c8\ub2e4. ICE \uc11c\ubc84(TURN)\uac00 \uc124\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc73c\uba74, \uc774 \ub2e8\uacc4\uc5d0\uc11c ICE \uc804\uccb4\uac00 \uc2e4\ud328 \ucde8\uae09\uc774 \ub418\uc5b4 WebRTC \uc811\uc18d\uc740 \uc131\ub9bd\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4(\uac1c\ubc1c\uc790 \ucf58\uc194\uc5d0\ub294<code>ICE failed<\/code>\u3084<code>ICE connection state: failed<\/code>\ub4f1\uc758 \uc624\ub958\uac00 \ub098\ud0c0\ub0a9\ub2c8\ub2e4).<\/li><li><strong>TURN \ub9b4\ub808\uc774 \ud6c4\ubcf4\ub97c \uc5bb\uc73c\ub824\uace0 \uc2dc\ub3c4 (TCP \/ TLS \/ 443 \uacbd\uc720) :<\/strong><br>STUN\uc5d0 \uc758\ud55c \uc9c1\uc811 \ud6c4\ubcf4 \ucde8\ub4dd\uc5d0 \uc2e4\ud328\ud558\ub354\ub77c\ub3c4,<code>iceServers<\/code>TURN \uc11c\ubc84\uac00 \uc9c0\uc815\ub418\uba74 ICE \uc5d0\uc774\uc804\ud2b8\ub294<strong>\ub2e4\uc74c \uc218\ub2e8<\/strong>\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. \uc774 \uac00\uc815\uc5d0\uc11c\ub294 UDP\uac00 \ud1b5\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 TURN \uc11c\ubc84\uc5d0 \ub300\ud55c \uc5f0\uacb0\uc744 TCP \ub610\ub294 TLS\ub85c \uc2dc\ub3c4\ud569\ub2c8\ub2e4 (\uc608 :<code>turns:turn.example.com:443<\/code>\uac00 \uc124\uc815\ub418\uba74 TLS \ud578\ub4dc\uc170\uc774\ud06c\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4.) \ub2e4\ud589\ud788\ub3c4 \ubc29\ud654\ubcbd\uc740 TCP 443\uc758 HTTPS \ud1b5\uc2e0\uc744 \ud5c8\uc6a9\ud588\uae30 \ub54c\ubb38\uc5d0 TLS\ub97c \ud1b5\ud55c TURN \uc5f0\uacb0\uc774 \uc131\uacf5\ud569\ub2c8\ub2e4. \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 TURN \uc11c\ubc84 \uc0c1\uc5d0 \uc911\uacc4\uc6a9\uc758 \ub9b4\ub808\uc774 \uc8fc\uc18c\ub97c \ud655\ubcf4\ud574,<strong>Relay Candidate<\/strong>(relay \ud6c4\ubcf4)\ub97c \uac00\uc838\uc635\ub2c8\ub2e4. \uc774\uac83\uc740 &quot;TURN \uc11c\ubc84\ub97c \ud1b5\ud574 \ud1b5\uc2e0\ud558\ub294 \uac00\uc0c1 \ud6c4\ubcf4\uc790&quot;\uc785\ub2c8\ub2e4. \ud55c\ud3b8, \ud1b5\uc2e0 \uc0c1\ub300\uce21(\ub9ac\ubaa8\ud2b8\uce21)\ub3c4 \ub9c8\ucc2c\uac00\uc9c0\ub85c \ub9b4\ub808\uc774 \ud6c4\ubcf4\ub97c \ucde8\ub4dd\ud558\uac70\ub098, \uc6d0\ub798 \ubb38\uc81c\uc5c6\ub294 \ub124\ud2b8\uc6cc\ud06c\ub77c\uba74 \uc9c1\uc811 \ud6c4\ubcf4\ub098 STUN \ud6c4\ubcf4\ub97c \uac00\uc9c0\uace0 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4. \uc5b4\uca0c\ub4e0, \uc801\uc5b4\ub3c4 \ud55c\ucabd\uc774 \ub9b4\ub808\uc774 \ud6c4\ubcf4\ub97c \uac00\uc9c0\uace0 \uc788\uc73c\uba74 \uc0c1\ub300\ub294 \uadf8 TURN \uc11c\ubc84\ub97c \ud5a5\ud574 \uc811\uc18d\uc744 \uc2dc\ub3c4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li><li><strong>\ub9b4\ub808\uc774\ub97c \ud1b5\ud55c ICE \uc5f0\uacb0 \uc124\uc815 (\ub610\ub294 \ucd5c\uc885 \uc2e4\ud328) :<\/strong><br>\ub450 \ud53c\uc5b4\uac00 \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ud6c4\ubcf4(\uc774 \uc608\uc5d0\uc11c\ub294 \ud55c\ucabd \ub610\ub294 \uc591\ucabd \ub9b4\ub808\uc774 \ud6c4\ubcf4)\ub97c \uc5bb\uc73c\uba74 ICE\ub294 \uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc5f0\uacb0 \ud655\uc778\uc744 \uc218\ud589\ud569\ub2c8\ub2e4. TURN \uc11c\ubc84 \uacbd\uc720\uc758 \ud1b5\uc2e0\uc740 \uc77c\ub2e8 \uc11c\ubc84\uc640\uc758 \uc0ac\uc774\uc5d0 \ud655\ub9bd\ud558\uba74 \uc911\uacc4\uac00 \uac00\ub2a5\ud558\uae30 \ub54c\ubb38\uc5d0, \ud53c\uc5b4\uac04\uc5d0 \uc9c1\uc811 UDP\uac00 \ud1b5\uacfc\ud558\uc9c0 \uc54a\uc544\ub3c4 \ubbf8\ub514\uc5b4 \ucc44\ub110\uc774 \uac1c\ud1b5\ud569\ub2c8\ub2e4. \uc774\uac83\uc5d0 \uc758\ud574 \uc720\uc800\ub07c\ub9ac\uc758 \uc601\uc0c1\u00b7\uc74c\uc131 \ud1b5\uc2e0\uc774 \uac1c\uc2dc\ub429\ub2c8\ub2e4. \uc811\uc18d \ud655\ub9bd \ud6c4\uc5d0\ub294 TLS\uc0c1\uc758 TCP\ub77c\uace0 \ud558\ub294 \uc624\ubc84\ud5e4\ub4dc\ub294 \uc788\uc9c0\ub9cc, \ub300\ud654 \uc790\uccb4\ub294 \uac00\ub2a5\ud558\uac8c \ub429\ub2c8\ub2e4. \ubc18\ub300\ub85c, \ub9cc\uc57d \uc5ec\uae30\uc5d0\uc11c\ub3c4 \uc2e4\ud328\ud55c\ub2e4(\uc608\ub97c \ub4e4\uc5b4 \uae30\uc5c5 \ud504\ub85d\uc2dc\uac00 \ube44HTTP\uc758 TLS \ud1b5\uc2e0\uc744 \uac80\uc9c0\ud574 \ucc28\ub2e8\ud55c, TURN \uc11c\ubc84\uc758 \uc778\uc99d\uc5d0 \uc2e4\ud328\ud55c \ub4f1) \uacbd\uc6b0, \ubd88\ud589\ud558\uac8c\ub3c4 ICE \uc885\ud569 \uc2e4\ud328(ICE failed)\uac00 \ub418\uc5b4 \uc811\uc18d\uc740 \ub2e8\ub150\ub429\ub2c8\ub2e4. \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uce21\uc5d0\uc11c\ub294 \uc774 \uc0c1\ud669\uc744 \uac80\uc9c0\ud574, \uc720\uc800\uc5d0\uac8c \u300c\uc811\uc18d\ud560 \uc218 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4\u300d\ub4f1\uc774\ub77c\uace0 \ud1b5\uc9c0\ud560 \ud544\uc694\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/li><\/ol>\n\n\n\n<p>\uc774\uc0c1\uc774 UDP\ub97c \uc0ac\uc6a9\ud560 \uc218\uc5c6\ub294 \uc5b4\ub824\uc6b4 \ud658\uacbd\uc5d0\uc11c ICE \ud611\uc0c1\uc758 \ud750\ub984\uc785\ub2c8\ub2e4. \uc694\uc57d\ud558\uba74, \u300c\ud638\uc2a4\ud2b8\u2192STUN\u2192TURN\u300d\uc758 \uc21c\uc11c\ub85c \ud6c4\ubcf4\ub97c \uc2dc\ud5d8\ud574, \uadf8\ub798\ub3c4 \uc548\ub41c\ub2e4\uba74 \uc811\uc18d \uc2e4\ud328\uac00 \ub429\ub2c8\ub2e4. \uac1c\ubc1c\uc790\ub294 \uc774 \uac70\ub3d9\uc744 \uc774\ud574\ud55c \ub2e4\uc74c \ucd5c\uc18c\ud55c TURN\/TURNS \uc11c\ubc84\ub97c ICE \uc11c\ubc84 \ub9ac\uc2a4\ud2b8\uc5d0 \ub123\uc5b4\ub450\uba74 \ucd5c\uc545\uc758 \uacbd\uc6b0\uc5d0\ub3c4 \ud1b5\uc2e0\uc774 \uc131\ub9bd\ub420 \uac00\ub2a5\uc131\uc744 \ub0a8\uae30\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4. \ub610, \uc720\uc800\ub85c\ubd80\ud130 \ubb38\uc758\ub97c \ubc1b\uc558\uc744 \ub54c\uc5d0\ub294 \u300cICE failed\uc640 \ub098\uc628\ub2e4\u300d\ub77c\uace0 \ud558\ub294 \uc815\ubcf4\ub85c\ubd80\ud130 \ub124\ud2b8\uc6cc\ud06c \ud658\uacbd\uc758 \ubb38\uc81c(UDP \ucc28\ub2e8\ub4f1)\ub97c \ucd94\uce21\ud574, TURN \uc11c\ubc84\uc758 \uc124\uc815 \ub204\ub77d\uc774 \uc5c6\ub294\uc9c0 \ud655\uc778\ud55c\ub2e4, \ub77c\uace0 \ud558\ub294 \ud2b8\ub7ec\ube14 \uc288\ud305\uc774 \uc694\uad6c\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h2>coturn\uc744 \uc0ac\uc6a9\ud55c STUN\/TURN\/TURNS \uc11c\ubc84 \uad6c\ucd95 \ubc0f \uc124\uc815<\/h2>\n\n\n\n<p>\uc2a4\uc2a4\ub85c STUN\/TURN \uc11c\ubc84\ub97c \uc138\uc6b0\ub294 \uacbd\uc6b0 \uc624\ud508 \uc18c\uc2a4 \uad6c\ud604\uc774\ub2e4 <strong><a href=\"https:\/\/github.com\/coturn\/coturn\" data-type=\"URL\" data-id=\"https:\/\/github.com\/coturn\/coturn\">coturn<\/a><\/strong>(\ucf54\ud134)\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc77c\ubc18\uc801\uc785\ub2c8\ub2e4. coturn\uc740 STUN\uacfc TURN \uc591\ucabd\uc5d0 \ub300\uc751\ud55c \uc11c\ubc84 \uad6c\ud604\uc73c\ub85c, \uc124\uc815\ub300\ub85c TURNS(TLS)\uc5d0\ub3c4 \ub300\uc751\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\uc11c\ub294 Linux \uc11c\ubc84\uc0c1\uc5d0 coturn\uc744 \uc778\uc2a4\ud1a8 \ud574, STUN\/TURN\/TURNS\ub97c \uc81c\uacf5\ud558\ub294 \uc11c\ubc84\ub97c \uad6c\ucd95\ud558\ub294 \uc21c\uc11c\uc640 \uc124\uc815 \ud3ec\uc778\ud2b8\ub97c \ud574\uc124\ud569\ub2c8\ub2e4. \ub610\ud55c \ub300\ud45c\uc801\uc778 \uc124\uc815 \ud30c\uc77c(<code>turnserver.conf<\/code>)\uc758 \uc608\ub3c4 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h3>\uc124\uce58 \ubc0f \uae30\ubcf8 \uc124\uc815<\/h3>\n\n\n\n<h4><strong>\uc124\uce58<\/strong><\/h4>\n\n\n\n<p>\uc6b0\ubd84\ud22c\uc640 \ub370\ube44\uc548\uc758 \uacbd\uc6b0,<code>apt<\/code>\uc5d0\uc11c coturn \ud328\ud0a4\uc9c0\ub97c \uc124\uce58\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ub2e4\uc74c \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc124\uce58 \ubc0f \uc790\ub3d9 \uc2dc\uc791 \uc124\uc815\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"hcb_wrap\" data-no-translation=\"\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code># Ubuntu\/Debian\u306e\u5834\u5408\nsudo apt-get install coturn\nsudo sed -i &#39;s\/#TURNSERVER_ENABLED=1\/TURNSERVER_ENABLED=1\/&#39; \/etc\/default\/coturn\nsudo systemctl enable --now coturn<\/code><\/pre><\/div>\n\n\n\n<p>\uc704\uc5d0\uc11c coturn \uc11c\ubc84\uac00 \ub370\ubaac\uc73c\ub85c \uc2dc\uc791\ub429\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c \uc124\uc815 \ud30c\uc77c <code>\/etc\/turnserver.conf<\/code> \uc744 \ub85c\ub4dc\ud558\ubbc0\ub85c \uacc4\uc18d\ud574\uc11c \uc774\uac83\uc744 \ud3b8\uc9d1\ud574 \uac11\ub2c8\ub2e4(\ub9cc\uc57d\uc744 \uc704\ud574 \ubc31\uc5c5\uc744 \ucde8\ud558\uace0 \ub098\uc11c \ud3b8\uc9d1\ud569\uc2dc\ub2e4).<\/p>\n\n\n\n<h4><strong>\uae30\ubcf8 \uc124\uc815<\/strong><\/h4>\n\n\n\n<p> <code>turnserver.conf<\/code>\uadf8\ub7ec\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ud56d\ubaa9\uc744 \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ul><li class=\"\"><strong>realm(\uc601\uc5ed) \ubc0f server-name:<\/strong> TURN \uc11c\ubc84\uc758 \ub3c4\uba54\uc778 \uc774\ub984\uacfc \uace0\uc720 \uc774\ub984\uc785\ub2c8\ub2e4. WebRTC \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc778\uc99d\uc2dc\uc5d0 \uc774\uc6a9\ub418\ub294 \uacbd\uc6b0\uac00 \uc788\uc2b5\ub2c8\ub2e4\ub9cc, \uae30\ubcf8\uc801\uc73c\ub85c\ub294 \uc784\uc758\uc758 \uce90\ub9ad\ud130 \ub77c\uc778\uc73c\ub85c \uc0c1\uad00\uc5c6\uc2b5\ub2c8\ub2e4. \uc608: <code>realm=example.com<\/code>,<code>server-name=example.com<\/code>.<\/li><li class=\"\"><strong>listening-port:<\/strong> TURN \ubc0f STUN\uc5d0\uc11c \ub300\uae30\ud558\ub294 UDP \ud3ec\ud2b8 \ubc88\ud638\uc785\ub2c8\ub2e4. \uae30\ubcf8\uac12\uc740 3478\uc785\ub2c8\ub2e4.<code>listening-ip<\/code>\uc5d0\uc11c \ud2b9\uc815 NIC\uc5d0 \ubc14\uc778\ub529 \ud560 \uc218 \uc788\uc9c0\ub9cc \uc77c\ubc18\uc801\uc73c\ub85c<code>0.0.0.0<\/code>\uc5d0\uc11c \ubaa8\ub450 \uc811\uc218\ud569\ub2c8\ub2e4.<\/li><li class=\"\"><strong>tls-listening-port:<\/strong> TLS\uc6a9(TURNS\uc6a9)\uc5d0 \ub300\uae30\ud558\ub294 TCP \ud3ec\ud2b8 \ubc88\ud638\uc785\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c 443\ubc88\uc774\ub098 5349\ubc88\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc608: <code>tls-listening-port=443<\/code>.<\/li><li class=\"\"><strong>external-ip:<\/strong> \uc11c\ubc84 \uc790\uccb4\uac00 NAT \ub0b4\ubd80\uc5d0 \uc788\uc73c\uba74 \uc790\uccb4 \uae00\ub85c\ubc8c IP\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4 (\uc774\uac83\uc740 \ub0b4\ubd80 IP\uc640 \uc678\ubd80 IP\uc758 \ub9e4\ud551\uc744 \uc778\uc2dd\ud569\ub2c8\ub2e4). \uc9c1\uc811 \uae00\ub85c\ubc8c IP\ub97c \uac00\uc9c4 \uc11c\ubc84\ub77c\uba74 \ubd88\ud544\uc694\ud569\ub2c8\ub2e4.<\/li><li class=\"\"><strong>\uc778\uc99d \ubc29\ubc95:<\/strong> WebRTC\uc758 TURN \uc774\uc6a9\uc5d0\ub294 \uc7a5\uae30 \uc778\uc99d(Long-Term Credential)\uc774 \uc0ac\uc6a9\ub418\ubbc0\ub85c,<code>lt-cred-mech<\/code>(Long Term Credential Mechanism)\uc744 \ud65c\uc131\ud654\ud569\ub2c8\ub2e4. \uadf8 \uc704\uc5d0<code>user=username:password<\/code>\ud615\uc2dd\uc73c\ub85c \uc0ac\uc6a9\uc790 \uc774\ub984\uacfc \ube44\ubc00\ubc88\ud638\ub97c \uc124\uc815\ud558\uac70\ub098,<code>use-auth-secret<\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uc801 \uc778\uc99d\uc744 \uc218\ud589\ud569\ub2c8\ub2e4 (\ud6c4\uc790\ub294 \ud1a0\ud070 \uae30\ubc18 \uc778\uc99d\uc73c\ub85c \ubcf4\uc548 \ud5a5\uc0c1\uc5d0 \ud6a8\uacfc\uc801\uc774\uc9c0\ub9cc \uc5ec\uae30\uc5d0\uc11c\ub294 \uac04\ub2e8\ud55c \uc815\uc801 \uc0ac\uc6a9\uc790 \uc778\uc99d\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4).<\/li><li class=\"\"><strong>\ub85c\uadf8 \uc124\uc815:<\/strong> \ud2b8\ub7ec\ube14 \uc29b\uc73c\ub85c \uc778\ud574<code>log-file<\/code>\ub85c \ub85c\uadf8 \ud30c\uc77c \uacbd\ub85c\ub97c \uc9c0\uc815\ud558\uace0,<code>verbose<\/code>\uc5d0\uc11c \uc790\uc138\ud55c \ub85c\uae45\uc744 \ud65c\uc131\ud654\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/li><\/ul>\n\n\n\n<h4><strong>\ubc29\ud654\ubcbd \uc124\uc815<\/strong><\/h4>\n\n\n\n<p>\uc11c\ubc84\uce21\uc5d0\uc11c\ub294 STUN\/TURN\uc6a9\uc73c\ub85c<strong>UDP \ud3ec\ud2b8 3478<\/strong>, \ubc0f TURN\/TLS\uc6a9<strong>TCP \ud3ec\ud2b8 443<\/strong>(\ub610\ub294 5349)\ub97c \uc5f4\uc5b4\uc57c\ud569\ub2c8\ub2e4. \ub610\ud55c TURN \ub9b4\ub808\uc774\ub294 \uae30\ubcf8\uc801\uc73c\ub85c UDP 10000-20000 \ubc88 \ubc94\uc704\ub97c \uc0ac\uc6a9\ud558\ubbc0\ub85c\uc774 \ud3ec\ud2b8 \ubc94\uc704\ub3c4 \uc11c\ubc84\uc5d0\uc11c \uc5f4\ub9bd\ub2c8\ub2e4 (\ud544\uc694\ud55c \uacbd\uc6b0<code>min-port<\/code>\uadf8\ub9ac\uace0<code>max-port<\/code>\uc5d0\uc11c \ubc94\uc704 \ubcc0\uacbd \uac00\ub2a5).<\/p>\n\n\n\n<p>\uc544\ub798\uc5d0 \uc704\uc758 \uae30\ubcf8 \uc124\uc815\uc744 \ubc18\uc601\ud569\ub2c8\ub2e4.<code>\/etc\/turnserver.conf<\/code>\uc758 \uc608\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"hcb_wrap\" data-no-translation=\"\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code># TURN\u30b5\u30fc\u30d0\u306e\u540d\u79f0\u3068\u30ec\u30eb\u30e0\uff08\u30c9\u30e1\u30a4\u30f3\uff09\nrealm=example.com\nserver-name=example.com\n\n# \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u8a2d\u5b9a\nlistening-ip=0.0.0.0           # \u3059\u3079\u3066\u306eIP\u30a2\u30c9\u30ec\u30b9\u3067\u5f85\u53d7\nexternal-ip=203.0.113.10       # \u30b5\u30fc\u30d0\u306e\u30b0\u30ed\u30fc\u30d0\u30ebIP\uff08\u5fc5\u8981\u306a\u5834\u5408\uff09\n\n# \u30dd\u30fc\u30c8\u8a2d\u5b9a\nlistening-port=3478            # STUN\/TURN\u7528 UDP\u30dd\u30fc\u30c8\ntls-listening-port=443         # TLS\u7528 TCP\u30dd\u30fc\u30c8 (443\u756a)\nmin-port=10000                 # \u4e2d\u7d99\u306b\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u7bc4\u56f2\uff08\u4e0b\u9650\uff09\nmax-port=20000                 # \u4e2d\u7d99\u306b\u4f7f\u7528\u3059\u308b\u30dd\u30fc\u30c8\u7bc4\u56f2\uff08\u4e0a\u9650\uff09\n\n# \u30ed\u30b0\u8a2d\u5b9a\nlog-file=\/var\/log\/turnserver.log\nverbose                        # \u8a73\u7d30\u30ed\u30b0\u3092\u6709\u52b9\u5316\nfingerprint                    # \u30d1\u30b1\u30c3\u30c8\u306bfingerprint\u5c5e\u6027\u3092\u4ed8\u4e0e\n\n# \u8a8d\u8a3c\u8a2d\u5b9a\uff08\u9577\u671f\u8a8d\u8a3c\u65b9\u5f0f\uff09\nlt-cred-mech                   # \u9577\u671f\u8a8d\u8a3c\u3092\u6709\u52b9\u5316\nuser=webrtcuser:secretpass123  # \u30e6\u30fc\u30b6\u540d:\u30d1\u30b9\u30ef\u30fc\u30c9 \u3092\u8a2d\u5b9a\n\n# TLS\/SSL\u8a3c\u660e\u66f8\u306e\u6307\u5b9a\ncert=\/etc\/letsencrypt\/live\/example.com\/fullchain.pem   # \u30b5\u30fc\u30d0\u8a3c\u660e\u66f8\npkey=\/etc\/letsencrypt\/live\/example.com\/privkey.pem     # \u79d8\u5bc6\u9375<\/code><\/pre><\/div>\n\n\n\n<p>\uc704\uc5d0\uc11c \ub3c4\uba54\uc778<code>example.com<\/code>\uc5d0\uc11c Let&#039;s Encrypt \uc778\uc99d\uc11c\ub97c \ucde8\ub4dd\ud558\uc5ec TLS \uc124\uc815\uc5d0 \uc774\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<code>lt-cred-mech<\/code>\uc5d0\uc11c \uc7a5\uae30 \uc778\uc99d\uc744 \ud65c\uc131\ud654\ud558\uace0,<code>\uc0ac\uc6a9\uc790<\/code>\uc5d0 \uc758\ud574 \uac04\ub2e8\ud55c \uc720\uc800\uba85\u00b7\ud328\uc2a4\uc6cc\ub4dc \uc778\uc99d\uc744 \uc124\uc815\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc2e4\uc81c \uc6b4\uc601\uc5d0\uc11c\ub294<code>use-auth-secret<\/code>\uadf8\ub9ac\uace0<code>static-auth-secret<\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud1a0\ud070 \ubc29\uc2dd\uc73c\ub85c \uc784\uc2dc \uc790\uaca9 \uc99d\uba85\uc744 \ubc1c\ud589\ud558\ub294 \ubc29\ubc95\uc744 \uad8c\uc7a5\ud558\uc9c0\ub9cc \uc5ec\uae30\uc5d0\uc11c\ub294 \uc0dd\ub7b5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h4><strong>TLS \uc774\uc6a9\uc2dc\uc758 \uc8fc\uc758<\/strong><\/h4>\n\n\n\n<p>Coturn\uc774 443\ubc88 \ud3ec\ud2b8\uc5d0\uc11c \uc791\ub3d9\ud558\ub294 \uacbd\uc6b0 Linux \ud658\uacbd\uc5d0\uc11c\ub294 \ud3ec\ud2b8 \uad8c\ud55c\uc5d0 \uc8fc\uc758\ud574\uc57c \ud569\ub2c8\ub2e4. 1024\ubc88 \ubbf8\ub9cc\uc758 \ud3ec\ud2b8\ub294 \ud2b9\uad8c \ud3ec\ud2b8\ub77c\uace0 \ubd88\ub824 \uc77c\ubc18\uc801\uc73c\ub85c root \uad8c\ud55c\uc774 \uc544\ub2c8\uba74 \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc6b0\ubd84\ud22c\uc758 coturn \ud328\ud0a4\uc9c0\uc5d0\uc11c\ub294 \uae30\ubcf8\uc801\uc73c\ub85c<code>turnserver<\/code>\uc0ac\uc6a9\uc790\uac00 \uc2e4\ud589\ud558\ubbc0\ub85c \uadf8\ub300\ub85c 443\ubc88\uc744 \ubc14\uc778\ub529\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub300\ucc98 \ubc29\ubc95\uc73c\ub85c,<code>\/etc\/default\/coturn<\/code>\uc5d0\uc11c \uc2e4\ud589 \uc0ac\uc6a9\uc790\ub97c \ub8e8\ud2b8\ub85c \ubcc0\uacbd\ud558\uac70\ub098,<code>setcap<\/code>\uba85\ub839\uc73c\ub85c<code>turnserver<\/code>\uc2e4\ud589 \ud30c\uc77c\uc5d0<code>cap_net_bind_service<\/code>\uad8c\ud55c\uc744 \ubd80\uc5ec\ud558\ub294 \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ud6c4\uc790\uc758 \uacbd\uc6b0<code>sudo setcap cap_net_bind_service=+ep \/usr\/bin\/turnserver<\/code>\ub97c \uc2e4\ud589\ud558\uba74 \ub8e8\ud2b8\uac00 \uc544\ub2cc \uacbd\uc6b0\uc5d0\ub3c4 \ub0ae\uc740 \ubc88\ud638 \ud3ec\ud2b8\ub97c \ubc14\uc778\ub529\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc778\uc99d\uc11c \ud30c\uc77c (cert \/ pkey)\uc740 \uc62c\ubc14\ub978 \uacbd\ub85c\ub97c \uc9c0\uc815\ud558\uace0 \ud30c\uc77c \uad8c\ud55c\ub3c4 coturn \uc0ac\uc6a9\uc790\uac00 \uc77d\uc744 \uc218 \uc788\ub3c4\ub85d \uc124\uc815\ud558\uc2ed\uc2dc\uc624. \uc124\uc815 \ubcc0\uacbd \ud6c4<code>sudo systemctl restart coturn<\/code>\uc5d0\uc11c \uc11c\ube44\uc2a4\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud558\uace0 \ub85c\uadf8\uc5d0 \uc624\ub958\uac00 \uc5c6\ub294\uc9c0 \ud655\uc778\ud569\uc2dc\ub2e4.<\/p>\n\n\n\n<h4><strong>\ub3d9\uc791 \ud655\uc778<\/strong><\/h4>\n\n\n\n<p>Coturn \uc11c\ubc84\ub97c \uc2dc\uc791\ud55c \ud6c4 \ub3d9\uc791 \ud655\uc778\uc73c\ub85c STUN \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \uc0ac\uc6a9\ud55c \ud14c\uc2a4\ud2b8\ub098 \uc2e4\uc81c\ub85c \ube0c\ub77c\uc6b0\uc800\uc758 WebRTC \uc571\uc5d0\uc11c ICE \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud574 \ubd05\ub2c8\ub2e4. \ub9ac\ub205\uc2a4\ub77c\uba74<code>stunclient<\/code>\uba85\ub839(<code>apt-get install stun-client<\/code>\uc5d0\uc11c \ub3c4\uc785 \uac00\ub2a5)<code>stunclient &lt;\uc11c\ubc84 IP&gt; 3478<\/code>\uc640 \uac19\uc774 \uc2e4\ud589\ud558\uba74 \uc790\uc2e0\uc758 \uc678\ubd80 IP\ub97c \uc5bb\uc744 \uc218 \uc788\ub294\uc9c0 \uc2dc\ub3c4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\ub294 \uac1c\ubc1c\uc790 \ub3c4\uad6c\uc758 \ub85c\uadf8\uc5d0 ICE \ud6c4\ubcf4\uac00 \uc5f4\uac70\ub418\ubbc0\ub85c,<code>srflx<\/code>(Server Reflexive) \ud6c4\ubcf4\ub098<code>relay<\/code>\ud6c4\ubcf4\ub97c \uc5bb\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4. \ubb38\uc81c\uac00 \ud574\uacb0\ub418\uc9c0 \uc54a\uc73c\uba74 \ub2e4\uc74c \uc0ac\ud56d\uc744 \ud2b8\ub7ec\ube14 \uc288\ud2b8\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ul><li class=\"\">\uc11c\ubc84\uc758 \ubc29\ud654\ubcbd \uc124\uc815 (iptables \ubc0f \ud074\ub77c\uc6b0\ub4dc \ubcf4\uc548 \uadf8\ub8f9)\uc5d0\uc11c \ud544\uc694\ud55c \ud3ec\ud2b8\uac00 \uc5f4\ub824 \uc788\uc2b5\ub2c8\uae4c?<\/li><li class=\"\">\ud074\ub77c\uc774\uc5b8\ud2b8\uce21\uc758 ICE \uc11c\ubc84 \uc124\uc815(\ud6c4\uc220)\uc5d0\uc11c \uc62c\ubc14\ub978 URI, \ud3ec\ud2b8, \uc790\uaca9 \uc99d\uba85\uc774 \uc124\uc815\ub418\uc5b4 \uc788\ub294\uac00.<\/li><li class=\"\"><code>turnserver.conf<\/code>\uc758<code>realm<\/code>\uc124\uc815\uc774 \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc778\uc99d\uacfc \uc77c\uce58\ud558\ub294\uc9c0(\ube0c\ub77c\uc6b0\uc800\ud310 WebRTC\uc5d0\uc11c\ub294 \uc790\ub3d9\uc801\uc73c\ub85c realm\ub97c \ubd80\uc5ec\ud558\ub294 \uad6c\ud604\uc774 \ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 \ud1b5\uc0c1 \ubb38\uc81c\ub294 \ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4\ub9cc, \ucee4\uc2a4\ud140 \uad6c\ud604\uc758 \uacbd\uc6b0 \uc8fc\uc758).<\/li><li class=\"\">coturn \ub85c\uadf8 (<code>\/var\/log\/turnserver.log<\/code>)\ub97c \ud655\uc778\ud558\uace0 \uc778\uc99d \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\uae4c?<code>WRONG USER<\/code>\ub4f1\uc758 \uc624\ub958\uac00 \uc788\uc73c\uba74 username\/password \ubd88\uc77c\uce58).<\/li><\/ul>\n\n\n\n<p>\uc774\uc0c1\uc758 \uc124\uc815\uc774 \uc801\uc808\ud558\uba74, \uc790\uc804\uc758 STUN\/TURN\/TURNS \uc11c\ubc84\uac00 \uac00\ub3d9\ud574, \ub2e4\uc591\ud55c \ub124\ud2b8\uc6cc\ud06c \ud658\uacbd\ud558\uc5d0\uc11c WebRTC \uc811\uc18d\uc744 \uc11c\ud3ec\ud2b8\ud560 \uc218 \uc788\uac8c \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h2>WebRTC \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c\uc758 ICE \uc11c\ubc84 \uc124\uc815 \uc608(JavaScript)<\/h2>\n\n\n\n<p>\uc2e4\uc81c\ub85c WebRTC \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158(\ube0c\ub77c\uc6b0\uc800) \uce21\uc5d0\uc11c \ubc29\uae08 \uad6c\ucd95\ud55c STUN\/TURN \uc11c\ubc84\ub97c \uc774\uc6a9\ud558\ub824\uba74<strong>ICE \uc11c\ubc84(ICE Servers) \uc124\uc815<\/strong>\ud569\ub2c8\ub2e4. JavaScript\uc758 WebRTC API\uc5d0\uc11c,<code>RTCPeerConnection<\/code>\ub97c \uc0dd\uc131\ud560 \ub54c STUN\/TURN \uc11c\ubc84 \ubaa9\ub85d\uc744 \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc5d0, STUN\/TURN\/TURNS \ubaa8\ub450\ub97c \uc9c0\uc815\ud55c \uad6c\uccb4\uc801\uc778 \ucf54\ub4dc\uc608\ub97c \ub098\ud0c0\ub0b4, \uadf8 \uc758\ubbf8\ub97c \ud574\uc124\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uba3c\uc800 ICE \uc11c\ubc84\uc6a9 \uad6c\uc131 \uac1c\uccb4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \uc790\uccb4 \uc11c\ubc84\uc758 \ub3c4\uba54\uc778 \uc774\ub984<code>turn.example.com<\/code>(\uc801\uc808\ud558\uac8c \ubc14\uafb8\uae30)\ub85c \ud558\uace0, STUN\uc740 \uc778\uc99d \ubd88\ud544\uc694\ud558\ubbc0\ub85c URI\ub9cc, TURN\/TURNS\ub294 \uc778\uc99d\uc774 \ud544\uc694\ud558\ubbc0\ub85c \uc720\uc800\uba85\uacfc \ud328\uc2a4\uc6cc\ub4dc\ub3c4 \ud3ec\ud568\ud574 \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<div class=\"hcb_wrap\" data-no-translation=\"\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>const iceConfig = {\n  iceServers: [\n    \/\/ 1. STUN\u30b5\u30fc\u30d0\uff08UDP\/3478\uff09\n    { urls: &#39;stun:turn.example.com:3478&#39; },\n    \/\/ 2. TURN\u30b5\u30fc\u30d0\uff08UDP\/443\u7d4c\u7531\uff09\n    { urls: &#39;turn:turn.example.com:443?transport=udp&#39;, username: &#39;webrtcuser&#39;, credential: &#39;secretpass123&#39; },\n    \/\/ 3. TURN\u30b5\u30fc\u30d0\uff08TCP\/443 + TLS = TURNS\uff09\n    { urls: &#39;turns:turn.example.com:443&#39;, username: &#39;webrtcuser&#39;, credential: &#39;secretpass123&#39; }\n  ]\n};\nconst pc = new RTCPeerConnection(iceConfig);<\/code><\/pre><\/div>\n\n\n\n<p>\uc704\uc758<code>iceServers<\/code>\ubc30\uc5f4\uc740 \uc138 \uac1c\uc758 \ud56d\ubaa9\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ol><li class=\"\"><strong>STUN:<\/strong> <code>stun:turn.example.com:3478<\/code><br>\uc790\uccb4 STUN \uc11c\ubc84\uc758 \uc8fc\uc18c\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4 (\ud3ec\ud2b8 \uc0dd\ub7b5\uc2dc 3478\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4). STUN\uc740 NAT \ucd08\uacfc \ud310\uc815\uacfc \ud6c4\ubcf4 \ucde8\ub4dd\uc5d0 \uc0ac\uc6a9\ub418\uba70, \ube0c\ub77c\uc6b0\uc800\ub294 \uc6b0\uc120 \uc774 \uc11c\ubc84\uc5d0 UDP\ub85c \ubb38\uc758\ud558\uc5ec Server Reflexive \ud6c4\ubcf4\ub97c \ucde8\ub4dd\ud558\ub824\uace0 \ud569\ub2c8\ub2e4.<\/li><li class=\"\"><strong>TURN (UDP):<\/strong> <code>turn:turn.example.com:443?transport=udp<\/code><br>\uc790\uc2e0\uc758 TURN \uc11c\ubc84<strong>UDP\uc758 443\ubc88 \ud3ec\ud2b8<\/strong>\uc5d0\uc11c \uc774\uc6a9\ud558\ub294 \uc124\uc815\uc785\ub2c8\ub2e4. \uc790\uaca9 \uc99d\uba85\uc73c\ub85c \uc774\uc804\uc5d0 coturn\uc73c\ub85c \uc124\uc815\ud55c \uc0ac\uc6a9\uc790 \uc774\ub984<code>webrtcuser<\/code>\ubc0f \ube44\ubc00\ubc88\ud638<code>secretpass123<\/code>\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4. \ucffc\ub9ac \ub9e4\uac1c\ubcc0\uc218<code>?transport=udp<\/code>\uc744 \ubd80\uc5ec\ud558\uba74 UDP\uc5d0\uc11c TURN \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud569\ub2c8\ub2e4 (\uc9c0\uc815\ub418\uc9c0 \uc54a\uc740 \uacbd\uc6b0 \ube0c\ub77c\uc6b0\uc800\ub294 \uba3c\uc800 UDP\ub97c \uc2dc\ub3c4\ud558\uace0 \uc2e4\ud328\ud558\uba74 TCP\ub3c4 \uc2dc\ub3c4\ud558\ub294 \uad6c\ud604\uc785\ub2c8\ub2e4). \uc774 \uc124\uc815\uc740 \uc77c\ubc18 STUN\uc5d0 \uc758\ud55c \uc9c1\ud1b5\uc774 \uc2e4\ud328\ud558\ub354\ub77c\ub3c4 UDP\uc758 443\ubc88 \ud3ec\ud2b8\uc5d0\uc11c TURN \ub9b4\ub808\uc774\ub97c \uc2e4\uc2dc\ud558\ub294 \ud6c4\ubcf4(relay \ud6c4\ubcf4)\ub97c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li><li class=\"\"><strong>TURN (TLS\/TCP):<\/strong> <code>turns:turn.example.com:443<\/code><br><strong>TLS\ub97c \uc774\uc6a9\ud55c TURN<\/strong>\uc989 TURNS \uc11c\ubc84 \uc124\uc815\uc785\ub2c8\ub2e4. \uc5ec\uae30\ub3c4 \ub9c8\ucc2c\uac00\uc9c0\ub85c \uc0ac\uc6a9\uc790 \uc774\ub984\uacfc \uc554\ud638\ub97c \uc9c0\uc815\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ube0c\ub77c\uc6b0\uc800\ub294 \uc774 \uc5d4\ud2b8\ub9ac\uc5d0 \ub300\ud574 TCP 443\ubc88\uc73c\ub85c TLS \uc811\uc18d\uc744 \uc2e4\uc2dc\ud574, TURN \ub9b4\ub808\uc774 \ud6c4\ubcf4\ub97c \ucde8\ub4dd\ud569\ub2c8\ub2e4. \uc774\uac83\uc740 \ucd5c\uc885 \uc218\ub2e8\uc758 \uc911\uacc4 \ud6c4\ubcf4\uc774\uba70, UDP\uc5d0 \uc758\ud55c \ud1b5\uc2e0\uc744 \uc804\ud600 \ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0\uc5d0\ub3c4 \uc774 \ud6c4\ubcf4\uac00 \uc788\uc73c\uba74 \ud1b5\uc2e0 \ud655\ub9bd\uc758 \uc18c\ub9dd\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/li><\/ol>\n\n\n\n<p><code>RTCPeerConnection<\/code>\uc0dd\uc131\ub418\uba74 \uc9c0\uc815\ub41c ICE \uc11c\ubc84\uc5d0 \uc21c\ucc28\uc801\uc73c\ub85c \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud558\uace0 \ud6c4\ubcf4\ub97c \uc218\uc9d1\ud569\ub2c8\ub2e4. ICE \uc5d0\uc774\uc804\ud2b8\ub294 \uba3c\uc800 STUN \ud6c4\ubcf4(srflx)\ub97c \ucde8\ub4dd\ud55c \ub2e4\uc74c, TURN \ud6c4\ubcf4(relay)\ub3c4 \ubcd1\ub82c\ub85c \ucde8\ub4dd\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0\ub294 ICE\uc758 \uc54c\uace0\ub9ac\uc998\uc774 \uc774\ub7ec\ud55c \ud6c4\ubcf4\ub07c\ub9ac\ub97c \uc870\ud569\ud574 \uc811\uc18d \uccb4\ud06c\ub97c \uc2e4\uc2dc\ud574, \ucd5c\uc801\uc758 \uacbd\ub85c\ub97c \uc120\ud0dd\ud574 \uc90d\ub2c8\ub2e4. \uac1c\ubc1c\uc790\ub294 \ud2b9\ud788 \ub354 \uc774\uc0c1\uc758 \uc808\ucc28\ub97c \uc758\uc2dd\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\ud3ec\uc778\ud2b8:<\/strong> \uc704\uc640 \uac19\uc774<strong>\uc5ec\ub7ec \ud6c4\ubcf4 \uc900\ube44<\/strong>\uc911\uc694\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uba74<code>stun:<\/code>\ub9cc \ubc16\uc5d0 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0, UDP\uac00 \ube14\ub85d \ub41c \ud658\uacbd\uc5d0\uc11c\ub294 \uc77c\uc808 \ud6c4\ubcf4\ub97c \uc5bb\uc744 \uc218 \uc5c6\uc5b4 \uc811\uc18d \uc2e4\ud328\uac00 \ub418\uc5b4 \ubc84\ub9bd\ub2c8\ub2e4. \ub9c8\ucc2c\uac00\uc9c0\ub85c TURN(UDP)\ub9cc\uc73c\ub85c\ub294 TCP\ub9cc \ud1b5\uacfc\ud558\ub294 \ud658\uacbd\uc5d0\uc11c \uc2e4\ud328\ud569\ub2c8\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \uac00\ub2a5\ud558\uba74<code>turn:<\/code>\uadf8\ub9ac\uace0<code>turns:<\/code>\ub458 \ub2e4 ICE \uc11c\ubc84\uc5d0 \ud3ec\ud568\ud558\uba74 \ubaa8\ub4e0 \ud658\uacbd\uc5d0\uc11c \uc801\uc5b4\ub3c4 \ud558\ub098\ub294 \uc720\ud6a8\ud55c \ud6c4\ubcf4\ub97c \ucc3e\uc744 \uc218 \uc788\ub3c4\ub85d \uc911\ubcf5\ub429\ub2c8\ub2e4 (\ubb3c\ub860 TURN \uc11c\ubc84 \uce21\uc5d0\uc11c\ub3c4 UDP\uc640 TCP \/ TLS\ub97c \ubaa8\ub450 \uc9c0\uc6d0\ud574\uc57c\ud569\ub2c8\ub2e4). \ud074\ub77c\uc774\uc5b8\ud2b8(\ube0c\ub77c\uc6b0\uc800)\ub294 \uc790\ub3d9\uc73c\ub85c \uc0ac\uc6a9 \uac00\ub2a5\ud55c \uacbd\ub85c\ub97c \uc120\ud0dd\ud558\ubbc0\ub85c \ubaa9\ub85d \uc21c\uc11c\ub294 \ud070 \ubb38\uc81c\uac00 \uc544\ub2d9\ub2c8\ub2e4. \uac15\ud558\uac8c \ub9d0\ud558\uba74,<code>iceTransportPolicy<\/code>\uc744<code>relay<\/code>\ud558\uc9c0 \uc54a\ub294 \ud55c \ube0c\ub77c\uc6b0\uc800\ub294 \uc9c1\uc811 \uc811\uc18d\uc744 \uc6b0\uc120\ud558\uae30 \ub54c\ubb38\uc5d0, STUN \uc5d4\ud2b8\ub9ac\ub97c \ub123\uc5b4 \ub450\uba74 \uc4f8\ub370\uc5c6\uc774 TURN \uc11c\ubc84\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0 \ub05d\ub0a9\ub2c8\ub2e4. \ub610, ICE \uc11c\ubc84\uc758 \ub9ac\uc2a4\ud2b8\uc5d0 \ubb34\uad00\ud55c \uc11c\ubc84(\uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \uc8fc\uc18c\ub4f1)\ub97c \ub123\uace0 \uc788\uc73c\uba74 \ud0c0\uc784\uc544\uc6c3 \ub300\uae30\ub85c \uc9c0\uc5f0\ud560 \uac00\ub2a5\uc131\uc774 \uc788\uae30 \ub54c\ubb38\uc5d0, \ud655\uc2e4\ud788 \uc774\uc6a9 \uac00\ub2a5\ud55c \uac83\ub9cc\uc744 \ub123\ub294 \uac83\uc774 \ubc14\ub78c\uc9c1\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc774 \uc124\uc815\uc744 \uc801\uc6a9\ud55c WebRTC \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud558\uc5ec \uc5f0\uacb0 \uc0c1\ud0dc\ub97c \ud655\uc778\ud574 \ubd05\uc2dc\ub2e4. \ube0c\ub77c\uc6b0\uc800 \uac1c\ubc1c\uc790 \ub3c4\uad6c\uc5d0\uc11c<code>peerConnection.getStats()<\/code>\uc0ac\uc6a9\ud558\uac70\ub098<code>chrome:\/\/webrtc-internals<\/code>(Chrome\uc758 \uacbd\uc6b0)\uc5d0\uc11c ICE Candidate \ubc0f \uc5f0\uacb0 \uc0c1\ud0dc\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\uc0c1\ub300\ub85c \ub3d9\uc791\ud558\uace0 \uc788\ub2e4\uba74, UDP\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud658\uacbd\uc5d0\uc11c\ub294 direct(P2P) \uc811\uc18d\uc5d0, \uc5b4\ub824\uc6b4 \ud658\uacbd\uc5d0\uc11c\ub294 \uc790\ub3d9\uc801\uc73c\ub85c TURN\/TLS \uacbd\uc720\uc758 \uc811\uc18d\uc5d0 \ud3f4\ubc31\ud558\uace0 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h2>SFU\uc640 TURN\uc758 \ucc28\uc774<\/h2>\n\n\n\n<p>WebRTC\uc5d0 \uc788\uc5b4\uc11c\uc758 \uc911\uacc4\uc5d0\ub294 \ud06c\uac8c \ub098\ub204\uc5b4 \u300cTURN\u300d\uacfc \u300cSFU\u300d\uac00 \uc788\uc2b5\ub2c8\ub2e4\ub9cc, \uac01\uac01\uc758 \uc5ed\ud560\u00b7\uad6c\uc131\u00b7\uc6a9\ub3c4\ub294 \ud06c\uac8c \ub2e4\ub985\ub2c8\ub2e4. \uc5ec\uae30\uc11c\ub294 \uae30\uc220\uc801 \ucc28\uc774\ub97c \uc815\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h3>TURN: \ud53c\uc5b4 \ud22c \ud53c\uc5b4\uc758 \ub300\uc548\uc73c\ub85c \uc911\uacc4<\/h3>\n\n\n\n<p>TURN(Traversal Using Relays around NAT)\uc740 WebRTC\uc758 P2P \ud1b5\uc2e0\uc774 \ubd88\uac00\ub2a5\ud55c \ud658\uacbd\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \ubcf4\uc870 \ub9b4\ub808\uc774 \uc11c\ubc84\uc785\ub2c8\ub2e4. \uc8fc\ub85c NAT \ub610\ub294 \ubc29\ud654\ubcbd\uc5d0\uc11c STUN\uc774 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc73c\uba74 TURN \uc11c\ubc84\uac00 \uac01 \ud53c\uc5b4 \uc0ac\uc774\uc5d0 \ub4e4\uc5b4\uac00\ub294 \ud328\ud0b7\uc744 \uc911\uacc4\ud569\ub2c8\ub2e4. \uac01 \ud53c\uc5b4\ub294 \uac01\uac01\uc758 \ud1b5\uc2e0 \uc0c1\ub300\uc5d0\uac8c \uac1c\ubcc4\uc801\uc73c\ub85c \uc2a4\ud2b8\ub9bc\uc744 \uc1a1\uc2e0\ud558\uae30 \ub54c\ubb38\uc5d0, \uad6c\uc131\uc740 \uc5b4\ub514\uae4c\uc9c0\ub098 \uba54\uc26c\ud615\uc774\uba70, TURN\uc740 \u300c\ub300\ud0c0\u300d\uc640 \uac19\uc740 \uc704\uce58\uc124\uc815\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<ul><li><strong>\uad6c\uc131<\/strong>: \uac01 \uc0ac\uc6a9\uc790\uac00 \ub2e4\ub978 \uc0ac\uc6a9\uc790\ubcc4\ub85c \uc911\uacc4\ub97c \ud1b5\ud574 \uc804\uc1a1(\uc2e4\uc81c \uba54\uc26c)<\/li><li><strong>\ud655\uc7a5\uc131<\/strong>: \ub0ae\uc74c(\uc778\uc6d0\uc218\uac00 \ub9ce\uc744\uc218\ub85d \ubd80\ud558 \uc99d\uac00)<\/li><li><strong>\uc911\uacc4 \ub0b4\uc6a9<\/strong>: \ub2e8\uc21c\ud55c \ud328\ud0b7 \ud3ec\uc6cc\ub529\ub9cc \ubbf8\ub514\uc5b4 \ubd84\uc11d\uc774\ub098 \ucd5c\uc801\ud654\ub294 \uc218\ud589\ud558\uc9c0 \uc54a\uc74c<\/li><\/ul>\n\n\n\n<h3>SFU: \ub2e4\uc911 \uc778\uc6d0 \ud1b5\ud654\ub97c \uc704\ud55c \ud6a8\uc728\uc801\uc778 \uc911\uacc4<\/h3>\n\n\n\n<p>SFU(Selective Forwarding Unit)\ub294 \ub2e4\uc778\uc6d0 \ucc38\uc5ec \uc6f9 \ud68c\uc758\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \uc9c0\ub2a5\uc801\uc778 \ub9b4\ub808\uc774 \uc11c\ubc84\uc785\ub2c8\ub2e4.<span class=\"swl-marker mark_blue\">\uac01 \ud074\ub77c\uc774\uc5b8\ud2b8\ub294 SFU\uc5d0 \ub300\ud574 \ud558\ub098\uc758 \uc2a4\ud2b8\ub9bc\uc744 \uc804\uc1a1\ud558\uace0 SFU\uac00 \ub2e4\ub978 \ucc38\uac00\uc790\uc5d0\uac8c \uc120\ud0dd\uc801\uc73c\ub85c \uc804\uc1a1\ud569\ub2c8\ub2e4.<\/span>. \ud654\uc790 \uac80\ucd9c\uc774\ub098 \ud654\uc9c8 \uc870\uc815, \ub808\uc774\ud134\uc2dc \ucd5c\uc801\ud654 \ub4f1\uc758 \ucc98\ub9ac\ub3c4 \uc2e4\uc2dc\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0, \uc2a4\ucf00\uc77c\ub7ec\ube14\ud558\uace0 \ud37c\ud3ec\uba3c\uc2a4\uac00 \ub6f0\uc5b4\ub09c \uc911\uacc4\uac00 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ul><li><strong>\uad6c\uc131<\/strong>: \uac01 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 SFU\uc640 1\uac1c \uc811\uc18d\ud558\ub294 \uc2a4\ud0c0\ud615<\/li><li><strong>\ud655\uc7a5\uc131<\/strong>: \ub192\uc74c(\uc778\uc6d0\uc218\uac00 \ub298\uc5b4\ub3c4 \uc804\uc1a1\uc740 1\uac1c)<\/li><li><strong>\uc911\uacc4 \ub0b4\uc6a9<\/strong>: \uc804\uc1a1\ucc98 \uc81c\uc5b4 \ubc0f \ubbf8\ub514\uc5b4 \ucd5c\uc801\ud654 \ub4f1\uc774 \uac00\ub2a5<\/li><\/ul>\n\n\n\n<h3>TURN\uacfc SFU\uc758 \ube44\uad50\ud45c<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>\ud2b9\uc9d5<\/th><th>TURN<\/th><th>SFU<\/th><\/tr><tr><td>\uc6a9\ub3c4<\/td><td>NAT \ub118\uc744 \uc218 \uc5c6\uc744 \ub54c\uc758 \ub300\uccb4 \uc218\ub2e8<\/td><td>\ub2e4\uc218\uc758 \uc2e4\uc2dc\uac04 \ud1b5\uc2e0<\/td><\/tr><tr><td>\ud1b5\uc2e0 \uad6c\uc131<\/td><td>\uba54\uc26c(\uac01 \uc0c1\ub300\ub9c8\ub2e4 \uc804\uc1a1)<\/td><td>\uc2a4\ud0c0\ud615(1\uac1c\uc758 \uc1a1\uc2e0)<\/td><\/tr><tr><td>\uc911\uacc4 \uae30\ub2a5<\/td><td>\ub2e8\uc21c\ud55c \ub9b4\ub808\uc774(\ud22c\uba85)<\/td><td>\uc120\ud0dd \uc804\uc1a1 \u00b7 \ucd5c\uc801\ud654 \uc788\uc74c<\/td><\/tr><tr><td>\ud655\uc7a5\uc131<\/td><td>\ub0ae\uc740<\/td><td>\ub192\uc740<\/td><\/tr><tr><td>\ubbf8\ub514\uc5b4 \uc81c\uc5b4<\/td><td>\uc5c6\uc74c<\/td><td>\uc608(\uc608: \uc2a4\ud53c\ucee4 \uac10\uc9c0, \ud574\uc0c1\ub3c4 \uc870\uc815)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>TURN\uc740 \uc5b4\ub514\uae4c\uc9c0\ub098 \u300cP2P \ud1b5\uc2e0\uc774 \ubd88\uac00\ub2a5\ud560 \ub54c \uc0ac\uc6a9\ud558\ub294 \ucd5c\uc885 \uc218\ub2e8\u300d\uc774\uba70, \uad6c\uc131\uc801\uc73c\ub85c\ub294 P2P \uba54\uc26c\ub97c \ubcf4\uc644\ud558\ub294 \uc911\uacc4\uc785\ub2c8\ub2e4. \ud55c\ud3b8,<span class=\"swl-marker mark_blue\">SFU\ub294 \ub2e4\uc778\uc218 \ud1b5\ud654\uc5d0\uc11c \ucc98\uc74c\ubd80\ud130 \ud6a8\uc728\uc801\uc778 \uc124\uacc4\ub97c \uc0c1\uc815\ud558\uc5ec \uc0ac\uc6a9\ub418\ub294 \uc911\uacc4 \uc544\ud0a4\ud14d\ucc98\uc785\ub2c8\ub2e4.<\/span>. \ub458 \ub2e4 \uc5ed\ud560\uc774 \uadfc\ubcf8\uc801\uc73c\ub85c \ub2e4\ub974\uae30 \ub54c\ubb38\uc5d0 \ud63c\ub3d9\ud558\uc9c0 \uc54a\uace0 \uc124\uacc4\ud558\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2>\uc694\uc57d<\/h2>\n\n\n\n<p>\ubcf8 \uae30\uc0ac\uc5d0\uc11c\ub294, WebRTC\uc758 \uc911\uae09~\uc0c1\uae09\uc790\ub97c \ud5a5\ud574 STUN\u00b7TURN\u00b7TURNS\uc758 \uae30\uc220\uc801\uc778 \ucc28\uc774\uc640 \uc0ac\uc6a9\uc18c, \ud55c\uce35 \ub354 coturn\uc5d0 \uc758\ud55c \uc11c\ubc84 \uad6c\ucd95 \ubc29\ubc95\uacfc \ucf54\ub4dc \uc608, \uadf8\ub9ac\uace0 \uc5b4\ub824\uc6b4 \ub124\ud2b8\uc6cc\ud06c \ud658\uacbd\uc5d0\uc11c\uc758 ICE \uac70\ub3d9\uc5d0 \ub300\ud574 \uc0c1\uc138\ud788 \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>STUN<\/strong>\ub294 \uacbd\ub7c9\uc774\uba74\uc11c NAT \ud658\uacbd\uc5d0\uc11c\uc758 \uc9c1\uc811 \ud1b5\uc2e0\uc744 \uac00\ub2a5\ud558\uac8c \ud574,<strong>TURN<\/strong>\ub294 \uc5b4\ub824\uc6b4 \uc0c1\ud669\uc5d0\uc11c\ub3c4 \ud1b5\uc2e0\uc744 \uc131\ub9bd\uc2dc\ud0a4\ub294 \ubd80\ud0c1\uc758 \uc904\ub2e4\ub9ac\uc785\ub2c8\ub2e4. \uadf8\ub9ac\uace0<strong>TURNS<\/strong>\uc744 \uc870\ud569\ud568\uc73c\ub85c\uc368 \uae30\uc5c5\ub0b4 \ub4f1 \ud2b9\uc218\ud55c \ud658\uacbd\uc5d0\uc11c\ub3c4 WebRTC\ub97c \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \uae38\uc744 \uc5f4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uac01\uac01 \uc7a5\uc810\uacfc \ub2e8\uc810\uc774 \uc788\uae30 \ub54c\ubb38\uc5d0, \ubcf8\ub798\ub294 \uac00\ub2a5\ud55c \ud55c STUN\uc73c\ub85c \uc9c1\uc811 \uc811\uc18d\ud574, \uc544\ubb34\ub798\ub3c4 \ud544\uc694\ud55c \uacbd\uc6b0\uc5d0\ub9cc TURN\ub9b4\ub808\uc774\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc774\uc0c1\uc801\uc785\ub2c8\ub2e4. \uc2e4\uc81c\uc758 WebRTC \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c\uc5d0\uc11c\ub294, ICE \uc11c\ubc84 \uc124\uc815\uc5d0 \uc774\ubc88 \uc18c\uac1c\ud55c \uac83 \uac19\uc740 \ubcf5\uc218 \uacbd\ub85c\ub97c \uc900\ube44\ud574, \ub610 \uc11c\ubc84\uce21\ub3c4 coturn\uc758 \uc124\uc815\uacfc \uc6b4\uc6a9\uc744 \uc801\uc808\ud788 \uc2e4\uc2dc\ud558\ub294 \uac83\uc73c\ub85c, \ub2e4\uc591\ud55c \ub124\ud2b8\uc6cc\ud06c \ud658\uacbd\ud558\uc5d0\uc11c\ub3c4 \uc548\uc815\ub41c \ub9ac\uc5bc\ud0c0\uc784 \ud1b5\uc2e0\uc744 \uc81c\uacf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>WebRTC\ub294 \ube0c\ub77c\uc6b0\uc800 API\uc640 \ub124\ud2b8\uc6cc\ud06c \uae30\uc220\uc774 \uacb0\ud569\ub41c \ubcf5\uc7a1\ud55c \uc601\uc5ed\uc785\ub2c8\ub2e4\ub9cc, STUN\/TURN\uacfc ICE\uc758 \uad6c\uc870\ub97c \uc774\ud574\ud558\ub294 \uac83\uc740 \uc2e0\ub8b0\uc131\uc774 \ub192\uc740 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4dc\ub294 \ub370 \ud53c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uaf2d \ubcf8 \uae30\uc0ac\uc758 \ub0b4\uc6a9\uc744 \uadfc\uac70\ub85c, \uc790\uc2e0\uc758 \uc81c\ud488\uc73c\ub85c NAT \ucd08\uacfc\uc758 \uacfc\uc81c\uc5d0 \ub3c4\uc804\ud574 \ubcf4\uc138\uc694. \uadf8\ub807\uac8c \ud558\uba74 \uc0ac\uc6a9\uc790\ub294 \uc758\uc2dd\ud558\uc9c0 \uc54a\uace0 \ub4b7\uba74\uc5d0\uc11c \ud604\uba85\ud558\uac8c \uace0\uc548\ub41c \uc811\uc18d \ucc98\ub9ac\uc5d0 \uc758\ud574 \uc6d0\ud65c\ud558\uac8c \ud1b5\uc2e0\uc744 \uc990\uae38 \uc218 \uc788\uac8c \ub420 \uac83\uc785\ub2c8\ub2e4.<\/p>","protected":false},"excerpt":{"rendered":"<p>WebRTC\u3068\u306f WebRTC\uff08Web Real-Time Communication\uff09\u306f\u3001\u30d6\u30e9\u30a6\u30b6\u540c\u58eb\u3067\u30ea\u30a2 [&hellip;]<\/p>","protected":false},"author":1,"featured_media":11871,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":""},"categories":[25,9,33],"tags":[],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts\/11859"}],"collection":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/comments?post=11859"}],"version-history":[{"count":8,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts\/11859\/revisions"}],"predecessor-version":[{"id":11868,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts\/11859\/revisions\/11868"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/media\/11871"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/media?parent=11859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/categories?post=11859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/tags?post=11859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}