문제

브라우저에서 피어 투 피어 연결에 관심이 있습니다. 이것이 Webrtc에서 가능할 것으로 보이기 때문에 나는 그것이 어떻게 작동하는지 궁금합니다.

나는 그 설명을 읽고 그것에 관한 다이어그램을 보았고 이제는 연결 시설이 서버를 통해 작동한다는 것이 분명합니다. 서버는 서로 연결하려는 클라이언트간에 일부 데이터를 교환하여 서버와 독립적 인 직접 연결을 시작할 수 있습니다.

그러나 그게 내가 이해하지 못하는 것입니다. 지금까지 연결을 만드는 유일한 방법은 컴퓨터 A의 포트를 듣고 컴퓨터 B에서 해당 포트에 연결하는 것입니다. 그러나 이것은 WEBRTC의 경우가 아닙니다. 나는 클라이언트가 포트에서 듣기 시작하지 않는다고 생각합니다. 어떻게 든, 포트를 듣고 연결을 수락하지 않고 연결을 만들 수 있습니다. 클라이언트 A, 아니, 클라이언트 B는 서버로 작동하기 시작하지 않습니다.

하지만 방법? WEBRTC 서버에서 어떤 데이터가 교환되는 데이터가 클라이언트가 서로 연결하는 데 사용할 수 있습니까?

이 항목에 대한 설명을 주셔서 감사합니다.)

편집

이 < "Noreferrer">이 < / A> 기사. 그것은 webrtc와 관련이 없지만, 나는 그것이 제 질문의 일부에 답변한다고 생각합니다. 나는 잘 모르겠다, 힘들지 않아. 누군가가 나에게 그것을 설명하고 나에게 추가 링크를 알려줄 수 있다면 여전히 시원 할 것입니다.

도움이 되었습니까?

해결책

WebRTC는 SDP 답변을 생성하는 데 사용되는 다른 장치에 클라이언트 JS 앱에 SDP 제안을 제공합니다.

SDP에는 ICE 후보자가 (효과적으로 "이 IP 주소와이 포트에서 나에게 이야기하려고 노력하십시오). 얼음은 방화벽에서 열린 포트를 펀치하기 위해 작동합니다. 양면이 대칭적인 NAT 인 경우 일반적으로 불가능하지 않으며 대체 후보 (턴 서버에서)를 사용할 수 있습니다.

일단 직접 이야기하면 (또는 패킷 미러가 효과적으로) DTLS 연결을 열고 SRTP-DTLS 미디어 스트림을 키로 사용하고 DTLS를 통해 DataChannels를 보낼 수 있습니다.

편집 : 약어이저 : http://blog.1click.io/10-jargons-Abbibations-for- Webrtc-fans / 나머지는 Google이 있습니다. 이 대부분은 IETF에 의해 정의됩니다 ( http:////IETF.ORG/ "

편집 2 : Firefox와 Chrome (그리고 Spec)은 얼음 후보 물질을 위해 "물방울"을 사용하여 빙원 가시원이 일반적으로 PeerConnection에 이후의 얼굴을 첨가하고 초기 SDP와 독립적으로 교환됩니다 (초기 후보자까지 기다릴 수 있지만) 제안을 보내기 전에 준비하고 함께 묶여 있습니다). https:///webrtcglossary.com/trickle-ice/"> https://datatracker.ietf.org/doc/draft-iet-trickle/

다른 팁

이 책에서 매우 좋은 설명을 찾을 수 있습니다 http : / /chimera.labs.oreilly.com/books/1230000000545/ch03.html#stun_turn_ice WEBRTC가 어떻게 제빙 기술을 사용하는지에 대한 펀더멘탈을 제공합니다.

여기에 이미지 설명을 입력하십시오 >>

특히 STUN 서버의 IP 주소가 알려진 경우 WEBRTC 응용 프로그램은 먼저 바인딩 요청을 STUN 서버로 보냅니다. STUN 서버는 공용 네트워크에서 본 클라이언트의 공용 IP 주소와 포트를 포함하는 응답으로 응답합니다.

이제 응용 프로그램은 SDP를 통해 다른 피어로 보낼 수있는 공용 IP 및 포트 튜플을 발견합니다. (SDP는 외부 시그널링 채널을 통해 전송됩니다. 웹 서비스를 통해 설정된 WebSocket)

이 메커니즘을 제자리에두면 UDP를 통해 두 명의 동료가 서로 이야기하고 싶을 때마다 확립 된 공용 IP 및 포트 튜플을 사용하여 데이터를 교환 할 수 있습니다.

불행히도, 경우에 따라 UDP는 방화벽에 의해 차단 될 수 있습니다. 이 문제를 해결하기 위해 STUN이 실패 할 때마다 NAT (Turn) 프로토콜 주위의 릴레이를 대체로 사용하여 UDP를 통해 실행하고 다른 모든 것이 실패하면 TCP로 전환 할 수 있습니다.

P2P WebRTC 연결을 설정하면 3 단계 (10.000 피트 개요) :

  1. 단계 1 : 시그널링 : 두 피어 모두 시그널링 서버 (80/443 이상, 혜성, SIP 등의 웨스함 사용) 및 정보를 교환합니다 (미디어 기능 정보 공개 IP : 포트 쌍이 가능할 때 사용할 수 있습니다.)

  2. 2 단계 : 발견 : LAN 또는 모바일 네트워크에 연결된 장치는 공용 IP (및 포트)를 알 수 없으므로 STUN / TURN 서버를 사용하여 공공 인터넷에서 그들의 IP를 발견하기 위해서 : 포트 쌍 (얼음 후보). 이 과정에서 그들은 3 단계에서 사용되는 NAT / 라우터를 통해 구멍을 뚫습니다.

  3. 3 단계 : p2p 연결 : 초기 시그널링 채널을 통해 얼음 후보가 교환되면 각 피어는 서로의 IP를 알고 있습니다 : 포트 (그리고 구멍은 Nats / Routers에서 구멍이 뚫리지 않았습니다. 따라서 피어 투 피어 연결이 설정 될 수 있습니다.

  4. 여기에 이미지 설명을 입력하십시오 >>

    위의 구성표는 로컬 네트워크에 연결된 2 개의 장치가있는 프로세스를 설명합니다. 그것은 "nofollow noreferrrer"> 문제 해결 문제 해결 에서 거래를 썼는 기사의 일부입니다. WEBRTC가 어떻게 작동하는지 설명하는 좋은 일을합니까?

Webrtc가 작동하는 방법

이 문서는 WEBRTC에 대한 빠르고 추상적 인 소개를 제공합니다. WEBRTC에 대한 자세한 정보를 얻으려면이 문서의 끝에있는 추가 읽기 섹션을 살펴보십시오.

webrtc

WebRTC (Web Real-Time Communication)는 브라우저 간의 피어 듀플렉스 실시간 통신을 피어로 개발 한 일련의 기술입니다. 이름이 언급하기 때문에 웹과 호환되며 표준 W3C 의 표준입니다. WebRTC의 중요한 기능은 NAT 주소 뒤에도 작동한다는 것입니다.

WebRTC 피어 투 피어

WebRTC는 여러 기술을 사용하여 브라우저 간의 피어 통신에 실시간 피어를 제공합니다. 이러한 기술은 * SDP (세션 설명 프로토콜) * ICE (상호 작용 연결 설정) * RTP (실시간 프로토콜)

serving server 은 WEBRTC를 실행하기 위해 필요합니다. 그러나 시그널링 서버를 구현하는 데 정의 된 Standart는 없습니다. 각 구현은 자체 스타일을 만듭니다. 이 섹션의 뒷부분의 시그널링 서버에 대한 자세한 정보는 몇 가지 더 많은 정보를 제공 할 것입니다.

위의 기술에 대한 빠른 정보를 제공해 봅시다.

SDP (세션 설명 프로토콜)

SDP는 간단한 프로토콜이며 브라우저에서 지원되는 코덱이 지원되는 것에 사용됩니다. 예를 들어, WEBRTC를 통해 연결될 두 명의 피어 ( 클라이언트 A 클라이언트 B )가 있다고 가정합니다. 클라이언트 A 클라이언트 B 지원하는 코덱을 정의하는 SDP 문자열을 만듭니다. 예를 들어, 클라이언트 A 은 오디오 용 비디오, OPUS 및 PCM 코덱 용 H264, VP8 및 VP9 코덱을 지원할 수 있습니다. 클라이언트 B 은 비디오 용 H264 만 지원하고 오디오 용 OPUS 코덱만을 지원할 수 있습니다. 이 경우, 클라이언트 A 및 클라이언트 B 사이에서 사용될 코덱은 H264 및 OPUS이다. 피어간에 공통 코덱이없는 경우 피어 피어 통신을 확립 할 수 없습니다.

이 SDP 문자열이 서로 어떻게 보내는지에 대한 질문이있을 수 있습니다. 이것은 시그널링 서버가 일어나는 곳입니다.

얼음 (상호 작용 연결 설정)

얼음은 NAT 뒤에있는 경우에도 동료 간의 연결을 설정하는 마술입니다. 다시 클라이언트 A 클라이언트 B 을 연결하고 ICE가 어떻게 사용되는지 살펴볼 것입니다.

  • 클라이언트 A 은 STUN 서버를 사용하여 로컬 주소 및 공용 인터넷 주소를 찾아서 신호 서버를 통해 클라이언트 B 로 보냅니다. STUN 서버에서 수신 한 각 주소는 아이스 후보

    라고합니다.

위의 이미지에서 두 개의 서버가 있습니다. 그 중 하나는 기절이며 그 중 다른 사람이 서버가 돌아 왔습니다.

STUN 서버는 클라이언트 A 을 모든 주소를 배우게하는 데 사용됩니다. 이를위한 예를 들어, 우리의 컴퓨터는 일반적으로 192.168.0.0 네트워크에서 하나의 로컬 주소가 있으며 www.whatismyip.com ,이 IP 주소는 실제로 인터넷 게이트웨이 (모뎀, 라우터 등)의 공용 IP 주소이므로 Stun Server를 정의합니다. STUN 서버를 사용하면 동료가 공개 및 로컬 IP 주소를 알 수 있습니다. BTW, Google은 무료 Stoun Server를 제공합니다 (stun.l.google.com:19302).

하나의 서버, 이미지에서 서버를 돌리십시오. 턴 서버는 피어간에 피어 투 피어 연결을 설정할 수 없을 때 사용됩니다. 서버를 돌리면 피어 간 데이터가 릴레이됩니다.

  • 클라이언트 B 은 동일한 작업 서버에서 로컬 및 공용 IP 주소를 가져 와서이 주소를 시그널링 서버를 통해 으로 보냅니다.

  • 클라이언트 A 클라이언트 B 의 주소를 수신하고 클라이언트 B와의 연결을 생성하기 위해 특수 핑을 전송하여 각 IP 주소를 시도합니다. . 클라이언트 a 이 모든 IP 주소로부터 응답을 받으면 해당 주소를 응답 시간 및 기타 성능 자격 증명으로 지정합니다. 마지막 클라이언트 A 성능에 따라 최상의 주소를 선택하십시오.

  • 클라이언트 B 클라이언트 A에 연결하기 위해 다음을 수행합니다

RTP (실시간 프로토콜)

RTP는 실시간 데이터를 전송하기위한 성숙한 프로토콜입니다. UDP를 기반으로합니다. 오디오 및 비디오는 WEBRTC에서 RTP로 전송됩니다. RTP의 자매 프로토콜이 있습니다. 이름은 RTCP입니다.

(실시간 제어 프로토콜)은 RTP 통신에서 QoS를 제공합니다. RTP는 RTSP (실시간 스트리밍 프로토콜)

에도 사용됩니다.

시그널링 서버

마지막 부분은 WEBRTC에서 정의되지 않은 시그널링 서버입니다. 전술 한 바와 같이, 시그널링 서버는 클라이언트 A 및 클라이언트 B 사이의 SDP 문자열 및 아이스 후보를 전송하는데 사용된다. 신호 서버는 또한 어떤 피어가 서로 연결되는지 결정합니다. WebSocket 기술은 일반적으로 통신을 위해 신호 서버에서 사용됩니다.

호환성

지난 1 년 동안 Safari를 포함한 모든 브라우저 인 Edge는 WebRTC를 지원하는 새로운 버전을 출시했습니다. Chrome, Firefox 및 Opera는 이미 WeBRTC를 잠시 동안 지원했습니다. 브라우저에 공통적 인 비디오 코덱은 H264입니다. 오디오의 경우 OPUS는 브라우저에서 공통적입니다. PCM은 또한 오디오 코덱에 사용할 수 있지만 라이센스 문제로 인해 AAC가 모든 브라우저에서 지원되는 경우에도 AAC가 사용되지 않습니다. IP 카메라는 일반적으로 오디오 코덱 용 비디오 코덱 및 PCM 또는 AAC 용 H264를 지원합니다.

추가 읽기 및 참조

btw, 저는 "Nofollow Noreferrer"> Ant Media Server를 지원하는 Ant Media Server


연결

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top