TIL: WebRTC | TCP candidate types

Lumpen·2023년 2월 9일
0

WebRTC

목록 보기
4/8

TCP candidate types

TCP candidate (프로토콜이 tcp 인 candidate) 는
다음의 유형을 가질 수 있다

active

active 전송은 아웃바운드 연결을 열려고 시도하지만
들어오는 연결 요청을 받지 않는다
이것은 가장 일반적인 유형으로
대부분 사용자 에이전트가 수집하는 유일한 유형

passive

passive 전송은
들어오는 연결 시도를 수신하지만
연결 자체를 시도하지는 않는다

so

so 전송은 피어와의 연결을 동시에 여는 시도를 한다

Choosing a candidate pair

후보 쌍 선택
ICE 계층은 controlling agent 역할을 할 두 peer 중 하나를 선택한다
controlling agent 는 연결에 사용할 후보 쌍에 대한
최종 결정을 내리는 ICE agent 다
다른 peer 는 controlled agent 라고 한다
RTCIceCandidate.transport.role 의 값을 검사하여
연결의 끝이 어느 쪽인지 식별할 수 있지만
일반적으로 어느 쪽인지는 중요하지 않다

controlling agent 는 사용할 candidate 쌍에 대한
최종 결정을 내릴 뿐 아니라 필요한 경우
STUN 및 업데이트된 Offer 를 사용하여
controlled agent 에 선택 신호를 보내기 위한 책임을
controlled agent 는 사용할 candidate pair 를 알려주길 기다린다

단일 ICE 세션으로 인해 controlling agent 가 둘 이상 (more than one) 의
candidate pair 를 선택할 수 있다는 점을 염두에 두는 것이 중요하다
controlled agent 와 그 정보를 공유할 때 마다 두 피어는 새로운 candidate 쌍이 설명하는 새로운 구성을 사용하기 위해서 그들의 연결을 재구성한다

ICE 세션이 완료되면 ICE 재설정이 발생하지 않는 한 현재 유효한 구성이 최종 구성된다

candidates 의 각 생성이 끝날 때 candidates 속성이 빈 문자열인 RTCIceCandidate 형식으로 candidate 종료 알림이 전송된다
이 candidate 는 여전히 remote peer 에 해당 알림을 전달하기 위해
평소와 같이 addIceCandidate() 메서드를 사용하여 연결에 추가해야 한다

현재 협상 교환 중에 예상되는 candidate 가 더 이상 없으면
candidate 속성이 null인 RTCIceCandidate를 전달하여
candidate 종료 알림을 보낸다
이 메시지는 remote peer 로 보낼 필요가 없다
이는 iceGatheringState가 완료로 변경되는 것을 감시하는 대신
icegatheringstatechange 이벤트를 감시하여 감지할 수 있는
상태의 레거시 알림이다

When things go wrong

협상을 하다 보면 제대로 동작하지 않는 경우가 있다
예를 들어 하드웨어 또는 네트워크 구성 변경에 적응하기 위해
연결을 재협상할 때 협상이 막다른 골목 (dead end) 에 도달하거나
협상을 방해하는 어떤 형태의 오류가 발생할 수 있다
해당 문제에 대한 권한 문제 또는 기타 문제가 있을 수 있다

ICE rollbacks

이미 활성 상태인 연결을 재협상할 때 협상이 실패하는 상황이 발생하면
이미 실행 중인 호출을 종료하고 싶지 않을 것
결국 연결을 업그레이드 또는 다운그레이드하거나
진행 중인 세션에 적응하려고 했을 가능성이 크다
통화를 중단하는 것은 그러한 상황에서 과도한 반응이 될 것이다

통화를 중단하는 대신 ICE 롤백을 시작할 수 있다
롤백은 SDP 제안(및 확장에 의한 연결 구성)을 마지막으로 연결의
signalingState가 안정적이었던 구성으로 복원한다

프로그래밍 방식으로 롤백을 시작하려면
유형이 롤백인 description을 보내면 된다
description object 의 다른 속성은 무시된다

또한 ICE agent 는 이전에 Offer 를 생성한 peer 가
remote peer 로부터 Offer 을 받으면 자동으로 롤백을 시작한다
즉, local peer 가 have-local-offer 상태에 있는 경우
local peer 가 이전에 Offer 를 보냈음을 나타내며
수신된 제안과 함께 setRemoteDescription()을 호출하면
협상이 발신자인 remote peer 에서 발신자인 local peer로
전환되도록 롤백이 트리거됩니다.

ICE restarts

https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Session_lifetime#ice_restart

The entire exchange in a complicated diagram

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글