WebRTC - 개념- 1편

김재형_LittleTale·2025년 11월 30일

WEB-RTC

목록 보기
1/1

OSI 7 Layer

네트워크 구조를 학습하신 분이라면 지겨운 계층인
OSI 7계층입니다.

이중에서 3번째 계층인 네트워크 계층에 집중해보도록 하겠습니다.

Network Layer

물리계층부터 간단히 올라가 보죠

  • 물리계층

    리피터, 같은 장비들의 물리적인 계층
    전기적인, 빛 등의 선로

  • 데이터 링크 계층

    브릿지 같은 ( 물리적이긴 해요 )
    Mac 주소할당, 약간 허브라고 생각하시면 됩니다.

대망의 네트워크 계층
쉽게 라우터 계층이라고 전 부르기도 하는데요
아래서부터 회선 깔고 주소, 오류 잡고, 그 신호들이 결국
멀리 멀리 중계가 가야 합니다.

문제는 뭐냐? 회선들을 여러개 깔았을때 어디가 최단 루트인지,
멀리 신호를 보낼때 손실을 어떻게 해결하는지 알아야 겠죠?

이때 라운터가 중폭(신호)도 하고, 어디 어디 라우터를 찍어야 최단 루트이다.
같은 작업을 합니다. 이정도 아시면 사실 개념은 완벅합니다.
즉, 라우팅이 핵심이다.

라우팅

전기적 신호를 결정하는것이 라우팅

  • IP를 가지고 경로를 결정하는데, IP는 MAC주소와는 다르게 변경이 가능
    -> 즉 고유한 IP를 부여해서 고정해야 함
  • 다만 보안에 있어서, 유출되면 위험해지기 때문에 이를 숨겨서 관리해야함 - private
  • 공유기같은 것들은 public IP를 통해 관리를 하지만,
  • 폰, 컴퓨터같은 경우 고유의 IP를 가지게됨.

WebSocket

  • 서버와, 클라이언트가 있을때 3-way-handshaking 을 통해 소통하는 HTTP의 TCP 통신 방식에선
    • 요청 → 요청확인 → 전송준비(받을 수 있는 상태인지 체크) → 전송 → 받음을 확인하게 flag 과정
    • UDP: 요청 → 전송
  • TCP vs UDP
    • 서버 상태 체크, 받을수 있는 상태인지 체크 등의 체크 과정이 있는걸 TCP
    • 없는걸 UDP
  • TCP 기반으로 웹소켓을 만듬
    • 매번 요청/응답의 대한 방식을 매번 하는 것이 아닌 한번만 이루어 지도록 함
    • HTTP 헤더가 여러번 생기는 방식이 아니다보니, 즉 포장이 여러개가 아니니 무게가 줌
    • 요청할때만 보낼 수 있는게 아닌 서버에서 먼저 푸시가 가능한 형태

포장이 가벼워 짐이 이해가 안갈 수도 있기에 보충설명
HTTP 는 무상태성이죠 즉, 매번 상태를 달아서 요청을 보냅니다.

  • 누가 보낸 건지 → Cookie, Authorization
  • 어떤 형식으로 받고 싶은지 → Accept, Accept-Language
  • 이 리소스가 어디인지 → Host, 요청 라인(GET /something)
  • 캐시, 압축, 인코딩 등 옵션 → Cache-Control, Content-Encoding …
  • 브라우저 정보 → User-Agent

즉:

  • 일반 HTTP 방식
    -> 매 요청마다: HTTP 헤더 + TCP 헤더 + IP 헤더 + ...

WebSocket 방식

  • 처음 1번: HTTP 헤더 + TCP 헤더 + IP 헤더
    -> 이후 계속: WebSocket 프레임 헤더(작음) + TCP 헤더 + IP 헤더

WebRTC 개념

  • 중간에 존재하는 서버가 없는 개념
  • peer - to - peer 통신 방식 ( 단말간 통신 )
  • 클라이언트 쪽에서 어떤 통신을 원하는지 서버에 알려줘야함 ex) VoiceCall, Video
  • 처음에는 서버 중개자가 존재
    • 서로다른 공유기, 통신망(유플,kt 등), 사내망 등에 의해 직접적인 IP를 모름
    • NAT 를 뚫어야 함
    • 외의 네트워크는 밖에서 못 들어오도록 막음
    • 서로의 IP를 직접 교환하면 보안에 취약함으로, signaling Server 가 관리해야함
    • PeerConnection 이라고 함 이를 → 끝나면 진짜 서버없이 연결되는 구조

NAT (Network Address Translation)

  • Router 는 퍼블릭 IP와 각각의 단말 Private IP를 가짐
  • 단말들에게 Public IP를 알려주는 것을 말하는 용어

Stun Server

  • Stun Server
    • Public IP 를 저장하고 있고, Peer간 직접 연결을 막는 등의 라우터의 제한을 결정하는 프로토콜
    • 클라 → StunServer 에게 접근 가능한지 요청하는 구조

Turn Server

  • 돌려주는 서버
  • P2P연결 시도후 실패한 경우 Turn 서버에서 중개하여 다시 연결할 수 있도록 하는 역활

signaling Server

  • 누가 누구랑 어떻게 연결할지에 대한 정보(offer/answer/ICE 등)를 전달해주는 중간 서버
  • 단순 시작전 매칭 연결 도와주는 서버

마치면서

이번편은 개념적인 부분을 다루었습니다.
다음편은 핵심 API들 간단히 살펴보고
그 다음편은 WebRTC 를 통해 통신하는 작업을 해보도록 하겠습니다.
감사합니다.

profile
IOS 개발자 새싹이, 작은 이야기로부터

0개의 댓글