티스토리 뷰
WebRTC 스터디 모임을 하면서 발표를 하는데 모르는 키워드들이 나와서 하나씩 정리해보려고 블로깅을 해봅니다.
NAT (Network Address Translation)
라우터가 기기의 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서버를 통해서도 네트워크 연결이 되지 않을때가 있습니다.
- 두 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
2. https://web.dev/webrtc-infrastructure/#turn
3. https://andonekwon.tistory.com/59
Symmetric NAT:
https://tomatohj.tistory.com/42
Signaling
https://www.onsip.com/voip-resources/voip-fundamentals/webrtc-signaling
'ETC' 카테고리의 다른 글
[SourceTree] Invalid username or password (0) | 2023.07.08 |
---|---|
WebRTC키워드 정리 - RTCPeerConnection, ICE, ICE Candidate (0) | 2023.01.17 |
[배포] 앱스토어 스크린샷 미리보기 (사이즈 변환해주는 사이트) (0) | 2022.04.10 |
[배포] 개인정보 처리방침 (0) | 2022.04.10 |
[CS] 컴파일 타임, 런타임 (Compile time, Run time) (0) | 2022.04.03 |
- Total
- Today
- Yesterday
- 원티드 프리온보딩
- Swift inout
- RIBs tutorial
- Swift RIBs
- ios
- 2023년 회고
- Swift Error Handling
- RTCCameraVideoCapturer
- Swift init
- swift 고차함수
- Swift 내림차순
- Swift joined
- Swift 프로그래머스
- Swift final
- removeLast()
- swift programmers
- Swift 알고리즘
- Combine: Asynchronous Programming with Swift
- CS 네트워크
- Swift 프로퍼티
- iOS error
- swift protocol
- swift reduce
- Swift Leetcode
- swift (programmers)
- Class
- Swift
- Swift ModernRIBs
- Swift joined()
- swift property
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |