WebRTC 간단 정리

mechaniccoder·2021년 8월 16일
0

ICE

peer와 연결을 하기 위해 사용되는 프레임 워크입니다. 내부적으로 STUN, TURN 서버로 peer들에게 public ip를 부여합니다.

STUN(Session Traversal Utilities for NAT)


peer에게 자신의 public ip를 알려주며, router에 있는 제한조건들을 알아냅니다.

NAT(Network Address Translation)

peer는 보통 NAT 뒤에서 private ip를 가집니다. NAT는 private ip를 특정 포트로 대응시켜 public ip로 변환해주는 역할을 수행합니다. STUN서버는 이를 보고 peer의 public ip를 발견하는 것이죠.

TURN(Traversal Using Relays around NAT)


router에는 제한 조건이 걸려있어서 public ip를 알아냈다고 해도 직접적인 연결을 할 수 없을 수도 있습니다. 이럴 때에 TURN서버를 활용합니다. TURN서버는 NAT의 제한조건을 우회할 수 있도록 합니다. peer간의 직접적인 연결을 구축하는 대신에 각 peer들은 TURN서버로 패킷을 보내고 TURN서버는 이를 다른 peer에게 forwarding하여 데이터를 전달합니다.

SDP(Session Description Protocol)

SDP는 peer의 멀티미디어에 관한 메타데이터를 제공합니다.(코덱, 해상도, 포맷, 암호화 등...)

Offer/Anwer

offer와 anwer는 각 peer의 멀티미디어 정보를 담고있는 session descriptio입니다. SDP를 활용해 정보를 저장하고 교환합니다.

peer중 연결을 제안하는 peer는 offer을 만들어 peer에게 전송하며, 이를 받은 peer는 answer를 만들어 다시 peer에게 전송합니다.

ICE candidates

peer들은 서로의 네트워크 연결에 관한 정보를 교환하는데, 여러 네트워크 후보들 가운데 최적의 연결을 찾아서 연결을 수행합니다. 보통 UDP가 활용되지만(빠르고 인터럽트에 대한 회복이 가능합니다.), TCP로도 사용할 수 있습니다.

ice candidate 이벤트 리스너는 setLocalDescription을 호출하기 전에 등록해야합니다. 이 함수에서 내부적으로 STUN서버로부터 public ip를 발견해 candidates를 가져오는 것 같습니다.

profile
세계 최고 수준을 향해 달려가는 개발자입니다.

0개의 댓글