티스토리 뷰

728x90

WebRTC 스터디 모임을 하면서 발표를 하는데 모르는 키워드들이 나와서 하나씩 정리해보려고 블로깅을 해봅니다.


NAT (Network Address Translation)

 

라우터가 기기의 private IP 주소를 받아 public IP 주소를 기기에 할당하기 위해 사용됩니다.

 

왜?

 

아래 사진을 보면서 설명을 해보자면,

 

private IP , public IP

기기 마다 고유의 private IP를 가지고 있는데

위 그림에서 핸드폰(private IP: 192.168.1.1)을 예로들면

private IP 이기 때문에 외부에서 접근 할 수 없죠.

외부에서 접근할수 없는데 네트워크 연결을 어떻게 하나? 

 

이때 사용하는게 NAT 입니다.

 

집에서 사용하는 공유기(public IP: 82.129.80.111)를 통해 핸드폰에서 네트워크 요청을 받으면 아래와 같은 작업을 시작합니다.

 

1. 핸드폰: 내 private IP는 (192.168.1.1) 이거야, 구글 홈페이지 띄워줘

2. 공유기: (192.168.1.1 저장) ㅇㅋ 네트워크 통신하려면 public IP 필요하니까 갖고있어. 니 public IP는 (82.129.80.111) 이거야.

 

이 같은 방식으로 라우터가 단말기에게 네트워크 통신을 할 수 있게 private IP를 받아 public IP를 할당 해주는 작업을 NAT라고 합니다.

 


SDP (Session Description Protocol)

 

스트리밍을 하기 위해 비디오의 해상도, 형식, 코덱, 오디오 송 수신을 할 수 있게 해주는 멀티미디어 컨텐츠의 연결을 설명하기 위한 표준 입니다.

 


STUN (Session Traversal Utilities for NAT)

 

STUN 서버의 역할은 NAT에서 설명했듯,

'private IP를 받아 public IP를 할당해주는 공유기의 역할을 STUN서버 에서 한다'고 생각하면 됩니다.

단말기기(peer)에서 STUN서버로 요청을 보내면 STUN서버는 단말기기에 public IP를 할당합니다. (아래그림 참고)

STUN

다만, STUN서버를 통해서도 네트워크 연결이 되지 않을때가 있습니다.

  • 두 Client가 같은 네트워크에 존재하고 있을때
  • NAT 환경에서, *Symmetric NAT의 경우, 어플리케이션이 달라지면 NAT의 매핑테이블이 바뀔때

 

이때 최후의 수단으로 TURN서버 라는걸 사용합니다. 

 

*Symmetric NAT 
:  각 어플리케이션 마다 연결하는 Port, IP가 다르기 때문에 매핑정보가 계속해서 변하는 방식.

+ Symmetric : 대칭 
(시메트라 마렵ㄴ..)

 

그렇다.. 시메트라는 대칭충이었다


TURN (Traversal Using Relays around NAT)

 

TURN은 위에 언급했던 두 단말기기간의 네트워크 연결 실패 요소중 하나인 Symmetric NAT를 우회 하는 방법으로,



STUN서버의 개념을 포함하고 있으며, TURN서버와 연결한 모든 단말기기들에게 모든 패킷을 보내고 다시 보냈던 기기에게 패킷을 보내기 때문에 오버헤드가 발생할 수 있다는 단점이 있어서 다른 연결 대안이 없을 경우에만 사용하게 됩니다.

 


Signaling

 

통신 세션을 '설정 - 제어 - 종료' 하는 프로세스를 말합니다.

 

두 기기가 서로 통신을 시작하려면 아래 세 가지 정보 교환을 해야합니다.

  • 세션 제어 정보(Session control information)
    : 통신 세션을 초기화, 종료 및 수정하는 시기를 결정합니다. 추후 세션 제어 메시지가 오류 보고에도 사용됩니다.
  • 네트워크 데이터(Network Data)
    :
    두 기기가 서로 찾을 수 있도록 IP 주소, Port를 보여줍니다
  • 미디어 데이터(Media Data)
    두 기기가 공통적으로 갖고 있는 코덱과 미디어 유형  

즉, 서로 다른 네트워크에 있는 두개의 단말기기(Peer)들 연결하기 위해 기기들의 위치를 찾고, 미디어 포맷을 서로 맞추는 작업.

 


참고

NAT, STUN, TURN:

1. https://developer.mozilla.org/ko/docs/Web/API/WebRTC_API/Protocols

 

WebRTC 프로토콜 소개 - Web API | MDN

이 글은 WebRTC API에 대한 프로토콜을 소개하기 위해 작성 되었습니다.

developer.mozilla.org

2. https://web.dev/webrtc-infrastructure/#turn

 

Build the backend services needed for a WebRTC app

 

web.dev

3. https://andonekwon.tistory.com/59

 

WebRTC란? (STUN과 TURN 서버의 이해) (2)

이전 글 복습 중간에 방화벽이 존재하거나 NAT 환경에 놓여 있는 경우에는 각 Peer에 대한 직접적인 시그널링이 불가능하다고 이야기하였다. 그렇기 떄문에 시그널링을 하고 연결을 하기 위해서

andonekwon.tistory.com

Symmetric NAT:

https://tomatohj.tistory.com/42

 

NAT의 종류?

내가 네알못임을 또 크게 깨달았다... NAT에 종류가 있었구나... 그저 NAT는 Private IP/Port를 Public IP/Port로 매핑시켜준다. 이정도만 알고 있던 내가 부끄럽다... 자 그래서, 오늘 써볼 내용은 NAT의 종류

tomatohj.tistory.com

Signaling

https://www.onsip.com/voip-resources/voip-fundamentals/webrtc-signaling

 

What is WebRTC Signaling?

An overview of different signaling options for WebRTC application development.

www.onsip.com

 

728x90