Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- uitableview
- uiscrollview
- scrollview
- 클린 코드
- ribs
- UICollectionView
- Xcode
- 애니메이션
- 리팩토링
- SWIFT
- combine
- 리펙토링
- RxCocoa
- Observable
- clean architecture
- UITextView
- rxswift
- MVVM
- Protocol
- Refactoring
- swiftUI
- swift documentation
- ios
- 스위프트
- Clean Code
- Human interface guide
- tableView
- map
- HIG
- collectionview
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] WebRTC - 개념 (STUN, NAT, TURN, MediaStream, RTCPeerConnection, RTCDataChannel) 본문
iOS 응용 (swift)
[iOS - swift] WebRTC - 개념 (STUN, NAT, TURN, MediaStream, RTCPeerConnection, RTCDataChannel)
jake-kim 2022. 4. 18. 22:06사전 지식 1) IP 라우팅
- 라우팅: OSI(Open Systems Interconnection) 중 3계층에서 라우팅을 사용하는데, 용어 그대로 전기적 신호의 경로를 결정하는 것이 라우팅

- 라우팅에서 사용하는게 IP를 가지고 경로를 결정하는데, 인터넷을 사용하는 기기에는 고유한 IP를 부여받는 형태
(IP는 MAC주소와 다르게 고유하지 않고 변경이 가능한점에 유의) - 노트북과 폰 모두 IP주소를 가지고 있지만, 이 IP주소의 보안을 위해서 오픈하지 않고 중간 중재자 공유기를 통해 관리
- 공유기는 public IP를 가지고, 노트북과 폰은 private IP를 가지고 있는 형태

사전 지식 2) WebSocket

- 보통 서버와 클라이언트가 있을 때 Request/Response를 통해 서로 데이터를 교환하지만, 느린 방식이므로 아예 서버와 클라이언트 사이 Connection을 두어 하나의 link를 통해 데이터를 주고받는것
WebRTC 개념
- Web(or App) Real Time Communication
- WebRTC는 통신하는 동안 서버가 중간에 없이 P2P(peer to peer)가 가능한 인터넷 프로토콜
- 제 3자 소프트웨어 설치 없이 종단 간 데이터 공유 및 화상 회의를 가능하게 하는 방법
- ex) 실시간 음성, 화상 회의, 파일 교환
Signaling

- peer to peer 연결을 위해서 처음에는 서버 중개자가 존재
- A가 B와 통신하고 싶은 경우, 서버에 video인지 chat인지 결정하고 서버에 요청
- 이 서버를 Signaling Server라고 하고, A와 B가 OK하면 IP정보를 교환
- 원래 IP정보는 보안에 민감하여 서로 바로 교환하면 안되므로 Signaling Server가 관리해주는 역할
- 코드에서는 PeerConnection이라고 부르고, PeerConnection을 통해 SessionDescription을 서로 주고받아 이 다음부터는 서버 없이 connection이 되는 구조
Signaling Server - Stun, NAT, Turn
- Stun Server
- Publis IP를 저장하고 있고 Peer간의 직접 연결을 막는 등의 라우터의 제한을 결정하는 프로토콜
- 클라이언트는 Stun Server에 접근 가능한지 물어보는 요청을하는 형태
- NAT (Network Address Translation)
- 라우터는 Public IP와 각각의 단말들의 Private IP를 가지고 있는데, 이 때 단말들에 Public IP를 알려줄때 사용되는 용어
- Turn Server
- 일종의 보험용도로, Public IP를 각각 단말기가 가지고 있고 각 P2P연결을 시도하려고 하지만 실패한 경우 Turn 서버라는 곳이 중개하여 다시 연결해줄수 있도록 하는 역할
WebRTC 핵심 API
- MediaStream
- 카메라와 마이크 등의 데이터 스트림에 접근
- getUserMedia() 메소드를 통해 액세스
- RTCPeerConnection
- 암호화 및 대역폭 관리, 오디오, 비디오 연결
- getUserMedia에서 스트림을 연결하고 peer 커넥션으로 연결
- RTCPeerConnection을 이용하여 getUserMedia로 호출한 비디오를 전달
- RTCDataChannel
- WebSocket과 같은 비슷한 역할로 데이터를 P2P 통신
* 참고
https://www.imperva.com/learn/application-security/osi-model/
https://medium.com/@hyun.sang/webrtc-webrtc%EB%9E%80-43df68cbe511
https://www.html5rocks.com/ko/tutorials/webrtc/infrastructure/
'iOS 응용 (swift)' 카테고리의 다른 글
Comments