[개발 일기] 2025.05.06 - WebRTC 연결

2025. 5. 6. 12:13·개발 일기

💡 개요

 

SSAFY할 때 한번 써봤던 것..

 

 

하지만 너무 오래돼서 기억이 안 나기 때문에 한번 정리해 보자.

 

 

 

🛠️ WebRTC

 

WebRTC란 웹 브라우저 내부에서 따로 플러그인을 설치하지 않고 오디오, 비디오, 일반 채팅을 실시간으로 주고받을 수 있게 해주는 기술이다.

 

 

그리고 오디오나 비디오같은 데이터는 P2P(Peer-To-Peer) 방식으로 전송된다.

 

 

✨ P2P

 

P2P란 한 피어와 다른 피어가 데이터를 주고받는 통신 방식을 의미하는데, 여기서 피어는 WebRTC 통신에 참여하는 다른 사용자(브라우저)를 의미한다.

 

 

그렇기 때문에 두 사용자 사이에 중간 서버를 거치지 않고, 직접 데이터를 주고받기 때문에 속도 측면에서 더 유리하다.

 

 

하지만 처음 연결을 성립할 땐 연결 과정(시그널링), NAT 우회, 방화벽 통과와 같은 작업은 모두 서버의 도움을 받아야 한다.

 

 

하지만 SFU나 MCU를 사용하는 다자간 통신 구조는 완전한 P2P는 아니고, 중간 서버가 관여하기도 한다.

 

 

그런데 이 P2P 연결을 성립하기 위해 ICE, STUN, TURN, SDP와 같은 많은 작업이 필요하다.

 

 

 

⚙️ ICE (Interactive Connectivity Establishment)

 

두 피어 간에 가장 잘 연결되는 경로를 찾는 절차를 의미한다.

 

 

핵심 역할로는 STUN과 TURN 서버를 이용해 다양한 연결 후보(IP/Port)를 찾는다.

 

 

그리고 찾은 연결 후보들 중에서 테스트를 통해 가장 안정적이고 빠른 IP 정보를 정한다.

 

 

 

⚙️ STUN (Session Traversal Utilities for NAT)

 

 

STUN은 NAT 장비같은 공유기 뒤에 있는 클라이언트가 자신의 Public IP와 포트번호를 알 수 있게 해주는 서버이다.

 

 

보통 많은 사용자들은 공유기와 같은 장비 뒤에서 Private IP를 사용해 인터넷을 사용하기 때문에 자신의 Public IP를 알지 못한다.

 

 

그렇기 때문에 STUN 서버를 사용해 자신의 Public IP를 조회하는 것이다.

 

 

 

⚙️ TURN (Traversal Using Relays around NAT)

 

 

TURN이 사용될 때는 STUN을 사용해 피어 간 연결이 실패했을 때 이다.

 

 

TURN은 피어 중간에 끼어들어 데이터를 중계해 주는 서버를 의미한다.

 

 

P2P 연결 실패 시, 대체 중계 서버 역할을 담당한다.

 

 

 

⚙️ SDP (Session Description Protocol)

 

WebRTC에서 피어 간 영상이나 오디오를 주고 받을 때 사용할 미디어 정보를 주고받는 프로토콜이다.

 

 

 

👨🏻‍💻 참고

 

What is WebRTC and How to Setup STUN/TURN Server for WebRTC Communication?

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.05.08 - 레코드 수준의 잠금(row-level locking)  (0) 2025.05.08
[개발 일기] 2025.05.07 - WebRTC 구현 방식  (0) 2025.05.07
[개발 일기] 2025.05.05 - 비밀번호 암호화 (Feat : BCryptPasswordEncoder)  (1) 2025.05.05
[개발 일기] 2025.05.04 - JWT 페이로드 종류  (0) 2025.05.04
[개발 일기] 2025.05.03 - JWT 말고 인증에 사용할 만한 기술  (0) 2025.05.03
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.05.08 - 레코드 수준의 잠금(row-level locking)
  • [개발 일기] 2025.05.07 - WebRTC 구현 방식
  • [개발 일기] 2025.05.05 - 비밀번호 암호화 (Feat : BCryptPasswordEncoder)
  • [개발 일기] 2025.05.04 - JWT 페이로드 종류
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.05.06 - WebRTC 연결
상단으로

티스토리툴바