webrtc
2014������10·���05������
Web���«������Layer3 (IP layer) �����ҏ�������돫��¹������»��Џ��������̏��������������«������
\���\���\¹\���\���\���\��\���\���\���\�����������������Ï����������؏����ҏ�����������¼��쏢�������·���������¹��¡�Web\��\��\���½��Џ����������������������¡�����ď��\���\���\���������»��������������Ώ���������̏��«������������������������������\���\¹\���\���\¹���������¹���������\µ���¼\���\¹�����������Ѣ��������������������������«��������¡����������������я�����NW\���\���\������������������������������쏢�³�����Ï����������������������Ï�����������¡�OSI»²¾��������������������Ï�������¡�layer5 �����������ӏ�����HTTP/1.1 => SPDY, HTTP2�������돪�¹��ԏ��·���������������ޏ�������¡��½������²¼������Layer4 ( TCP )����������������������������������������쏢�«������������������µ��؏�����²������������������������������«�������������������������³���������؏�����¾��䏢돪㏢������¡�µ����������������� HTML5 Conference 2013������¹��ӡޏ�����·�����ď����������������� ����SPDY������QUIC���о�������������·�����¡�Web������ď��²½����\��\���\���\³\��������ҏ����Џ�𡯏���������������������¡�HTML5 Conference 2013��¡� ��������¡�publickey ������\���\����¼\���µ»��ӏ�����¾���²��Ï����������ď��������������������������������¹�������������«��¡�
���³�����Ï����������������ď�����·������«��������¡¹���������³�����������̏����Џ��µ���������������������������«������������SCTP����³��������Џ��µ�����������ď�������¡�SCTP������²��Џ���ޏ������¾���������̏����������������·������QUIC����½Ð��������������ď�������������¡�Web����\���\���\�̏��¼������������������������ Layer4 ������ tcp alternative ���������������½Ð������������������������������¹��¡�
���½�����я�������������¡����������я��������������¼������ WebRTC ���̏����������Ώ����� Chromium ������\½���¼\¹\³���¼\������«�����������ď��������ӏ���������¡�JS���«������Layer3������������������������\���\��\·\���\��я��̏����������쏢¡ߏ����ҏ��������«���·�����ď�����������¡����䏢�������½��������������������������������¡�\���\���\¹\���\���\���\��\���\���\���\����\«\Ð���¼���·���������ޏ��������Ð���������������������������¡돫�������¹¹������¹���̏��������½�����Ï��������¹��¡�¡�¡�
�������������������������������������¹���������«������������������������������¡�WebRTC������\���\��\·\���\��я����ď�����
��������������������¡���½µ�����Ï�����������²���¼��ҏ�����\���\���\Ð���¼����¼�����돪����¹������ WebRTC Meetup Tokyo #4 ��������¡�������LT���·�����ď��ӏ������������������������������������¹���������«���������·������������������Constraints�����ď�������¡ߏ������������������¹��¡�
googImprovedWifiBwe
���³������LT������¾���²��Ï��·�����ď�����������¡�RTCPeerConnection()������P2P������³«»������¹��������������������������Ώ��������������������������������������������������������������������������Chrome������¼«\���\��\·\���\��я�¡�����𡯏��Ð��¡�WebRTC \���\���\���\���\���\���\��������� reference demo https://apprtc.appspot.com/��������������¡�
optional: [{"googImprovedWifiBwe":true}]
���̏����Џ��������������������������¹��¡��³��������������¡�NW�����ѡ돫���ď��������\��\���\��\���\���\���������²��Џ���ޏ��µ�����������ď������������������¹������\���\��\·\���\��я��������������Ï��������¹����Bwe��������¡��ď����BandWidth Estimation������¢̏�����������»�ߏ����Ï�����¡�����ď�����¼�������������¾������̡���䏪���ԏ��µ������������������������¡������������������쏢�������������������������������������·���½�����Ï�¡����ď�������¡½��돩Ώ�����Chromium������\½���¼\¹\³���¼\������«��������������¡��³������\���\��\·\���\��я�����8·����돢����������������\���\���\������«������������������������������������������������������������¡��ď���̏��³������\��\���\��\���\���\�������\���\���\���\���\��������������������������ď������«���������폢������¡��½���������Ï�������¡�stable�����������������ġޏ�����µ�����������������я��������·�����������Ï�������¡�
googIPv6 & googDscp
����������¡��½�������돪�³�돢����µ���������������������������\���\��\·\���\��я��̏��³��������������Ï�������¡�Chrome������¼«\���\��\·\���\��я��������¹������¡�
mandatory: { "googIPv6": true, "googDscp": true }
�����¼��ԏ�������¡�P2P��������ď�����IPv6����»�����𡯏����������������Ï��������¹�������������������������·��¡���¼��ԏ����� Diffserv ������\���\���\�돢����\���\��я��������¹�������������������������¹��������Џ��������쏢������������¡�IPv4�����������������Ð IP\���\���\���������TOS\���\���¼\���\�����������¡�IPv6������¾���¹���������Class\���\���¼\���\���������\���\���\�������\»\���\������µ���������������¹��¡�IPv6������������¾��⏢�·�����ď�����0x88������\���\���\������̏��폢�������������·�����ď�����¡µNW²�돢�µ�����я��������·��������������¡��½���³\���\���¡�
���³����������������»�����𡯏��������������ӏ��������������쏢�폢¡������������؏��������¹���̏�¡½¾��؏����������������������������쏢���������������������������������»�����я�¡�����𡯏��Ð googIPv6 ��������������������������������¡�\���\���\���\���������IPv6 \���\��\·\���\��я����� enable ���������·�����ď����������쏢�·��������������¡�ISP������·Ð���³���¹���������³���������µ������\���\���\���\��������ӏ�������¡�shortest path������WebRTC P2P��������ď�����������������������«����IPv6\���\��\·\���\���ON���������·�����������������Ï��������ޏ��������������¾�����䏪������ď����ҏ����������я��������������������·�����������������Ï�����������¡�\»\\���\���\���\��\���\¹\������̏��������������������¾µ���������쏢�²¼���µ��������¡�돫�������������\³\���\·\������¼\������¼\µ���¼\���\¹���������³�����������ҏ���돪���я��������¹�������������������½¼��������쏢�������������µ���������«������������¡����������ď�¡�googDscp ��������������������������������¡��³������������TOS/Class\���\���¼\���\���������\���\���\�돢���ҏ��폢���������������쏢������������¡�\������¼\��ď��¼���������\�����������폢�������·�������������������������������������������������������������я����Ώ���������̏���ߏ�����¡�\���\���\��쏪��������������������¼���������¾���������·��ҏ��̏��������������¹��¡�\���\���\���\���\���\���\���������������WebRTC�����������������������������������¡������������������쏢�������������������¹���������«����������Internet½Ð������¹��ԏ�����»��Џ�������¡���¾������³������\���\���\��������������я�����������\���\���\���µ������������������������¡�³��������Џ������돪�������\���\���\���\���������������������������������»�ߏ��������������¹������¡�
������������������¡�������������¼���������\�ޏ��¼\¹���������������������¹���������«���������폢���������������Ï����Ώ��������������������ޏ��������¹���̏�¡�\��\���\��ď��¼\��\���\���\��돢���Џ��ޏ�����\·\¹\���\���¹½�����叢�������«��������������¡��³���������������������������������쏢�������������������¹���������«��������¡�\��\���\��\��������Џ��ޏ�����WebRTC���̏�����³��������쏢���������̏����Џ��µ�����������������������Ï����������������������������������������Ï��·���Ð���������������«���«���������������·�����������Ï��̏�¡��������ԏ�����¾��⏢�������«�����������������«������»����·�����������쏢����������³��⏢�·���������«���������·���������������»�����я���IPv6����¹������»��������������������������������Ï��������������������³��������������������������������¡��ď���� googIPv6 ������\���\��\·\���\���¼«��������\���\���\���\���\������������������������������·�����������Ï��ޏ���������
\���\���\¹\���\���\���\��\���\���\���\������������\������¼\��돢����¹¹������¹������������������«������
�����������ҏ��������������¼������»�ߏ����������ď�����������¡��³������������������\���\��\·\���\��я����������� Layer3 �����ҏ�������돫��¹�����������������������������я��������¹��������������¡�����������¡�googDscp �����������я�������¡�JS���«������IP\���\���\����������\�����������폢����������\³\���\���\������¼\������¹����������������������������������¡�Web���«������Layer3������\³\���\���\������¼\������·���������������������³���������������¾���������������������»�����я�¡����������������������я�¡��³������\���\��\·\���\��я����ҏ��������²½���¹�����������ď�������������������¡�JS�����Ï��«���������������ޏ�����������\���\�����������¡�\������¼\��ď��¼�����Ï�����\³\���\���\��\�돢��������̏���ߏ�¡�������������¡��½�����Ï�����������������¹�����𡯏�������������¡�\·\¹\���\�����돫��������������������Web²�돢�µ�����я�����NW²�돢�µ�����я��̏����폢���������·������·��������������������������������������������������������䏢�̏�¡��½���³�������������������������������������������«����������������������������������¹�����𡯏��������·���������������������·�����ď�¡�
���½�����я����������폢���������·������̏���̏���ߏ����������������������ď����������¡�½��������؏��µ�������������������������Ð����������\���\���\���\���\������¼������½����������·������\��\���\���\���\�����������я��������·�����������Ï�������¡�¡�¡�����\������������������������
��ď��µ���\���\���\��\���\���\\���\�돢����

2012������04·���25������
WebRTC»���»���������
�����䏢����\���\¹\���������WebRTC��������������������������¡�Web������\���\��\���\���\���\�����������ď��\µ���¼\���\¹������¼������½���¹�����������ď�����������API���������¹��¡�\���\���\���\����������¡�plug-in������»��������������돢����\���\���\��я�����������\µ���¼\���\¹�����ҏ�돫��������³����������½Ð�����������������������Ï��������������������������¹��¡�
WebRTC���������������������¼����������
WebRTC������\��\���\���\��\���\���\��⏢�¼\�����������������̏�������¡�WebRTC�����ҡ돪�²¼���������������Ï�����������µ������·���������������������¹��¡�
WebRTC is a free, open project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. The WebRTC components have been optimized to best serve this purpose.\���\��ď����������؏��¹����������������WebRTC������\��쏢�¼\��\��я�����\��\���\���\��\���\������������¹��¡������ޏ����������ď�ԏ����� Javascript API �����ҏ����Џ��������������³��������������¡�Web\���\���\���\��������\���\��\���\���\���\�����������ď�����²������½���������¹�������������������������¹��¡�WebRTC ������³���\³\���\����¼\���\���\�����������¡��³���������䏪���쏢�������Ð���·\���\¹\��������������������������������Ï�돪������²½���µ���������������������������¹��¡�������������������������¡�Google, Mozilla, Opera������������������\µ\����¼\������µ������������������������\��\���\���\��\���\�����������¡��³������\��⏢�¼\���¼«���������� Google Chrome \������¼\����������������������ޏ�ď����Џ��µ���������������������������¹��¡���½���²½������������������������������ WebSocket ����������ޏ�������¡�JS������API������W3C, ��������ď��\��\���\���\³\��������ԏ���̏����� IETF ����������̏�������·�������������������µ���������������������������¹��¡�(¾���������\��\���\���\��\���\���\��⏢�¼\�����������¡��½���������¾������������\���\���\���\���������������\���\���\������������������������������������������������¹)
¾���������½��ҏ����㏢���ď����������Ï�������¡�WebRTC����������ޡ돫�������API��������������������������¡�¼��������������я�����������API���«������¹½������µ���������������������������¹��¡�
- Stream API
- �ޏ�������䏢����²»���¼������������������\¹\���\������¼\���\������¼\��ď����ҡ�·������API���������¹��¡�\«\���\������«������������\���\���\��ӡޏ�������䏢�������������Ï�������¡�»��Џ��¹¹������¹�����������Џ��������������³���ޏ�����\������¼\��ď����돫�����������������������������������������\���\���\���\�������������������������������������¼�����������·�����Ï��³���������̏�������������������������Ï��������������������������¹��¡�����𡯏��Ð��¡�getUserMedia() ������»��������Ï�������¡�\«\���\���������\���\���\������«�������ޏ�������䏢����²»���¼������\¹\���\������¼\���\������¼\��ď����ҏ�������돫�������������������������Ï��������������������������¹��¡�
- Peer-to-peer connections
- \���\���\���\�����¼\���\���\���\������ӏ�����UDP�����ҏ����Џ�����\���\���\���\���\���������\������¼\��ď����ҏ����¼��؏�ď��¹�����������ď�����������API���������¹��¡�HTTP������WebSocket��������������¡�̏�����\µ���¼\Ð���¼������²��Ï��·������\���\���\���\�������������Ï��·�����ҏ����䏪�³���·���������¹���̏�¡��³������API������������\������¼\��ď����ҏ����¼��؏�ď��¹���������������������\µ���¼\Ð���¼������²��Ï��·���������»�����я���������½��ҏ�����\·\��\���\���\���\�돪���Џ�����������������\µ���¼\Ð���¼����������̏���ߏ��������¹���̏�����¡�Stream API������¼������������·������\¹\���\������¼\���\������¼\��ď����ҏ����Ώ�����������\���\���\���\������ӏ�����\���\���\���\���\��������������¼��؏�ď��·���������¹��¡�
²��ď�������������������������\���\���
������������¾���²��Ï��·������\��\���\���\��\���\���\��⏢�¼\�����������¡�\���\���\��я�����������������\µ\���\��\���\���\������̏�����³«���µ���������������������������¹��¡�Chrome������dev\���\���\���\��� or canary���������³������\���\���������»����»���������¹����chrome://flags������ ����Media Stream�����ҏ�������⏢�������¹��������¡����������ҏ����돢���������돢����������¡�https://apprtc.appspot.com/������\��\���\»\¹���¹��������������¡�²���������������²¼�����ԏ�����\���\���\��я�����������\������¼\��������Џ�����URL���̏��½¼�����µ���������������¹��¡��³������URL�����ҏ�����������\���\���\���\��������³«�����¡��·���Ð�����������������ԏ�����������\���\���\��я���������������»������������������������¹��¡������ď��������·��¡�\���\���\���\������¼\��������������������������������������������돢�«������������(������½���)���³���������̏����������������¹������������¡��½������»��Џ���������ޡ돫�\���\·\��я��������������ӏ����叢���叢���폢�¼��¡ߏ����������叢�������½¾Ð�����я�����²����������·���������������������µ��������¡�
WebSocket�����������¡돫�����������������
���µ��������¡��³������WebRTC�����������������������������²�����ď����������Ï���������Web������\���\��\���\���\���\�����������ď�����²������½���������¹��������¡�API���������¹��¡�¡�¡��������¹��������������¡�돫�������µ��ď��������̏�¡��½������������ WebSocket �����������¡돫����������������¹��¡�WebSocket ����½Ð��������������ď��³��������������¡Ð�������Џ�������ď���½Ð�����������������������Ï���������������������������\���\��\���\���\���\���Web��¡������������я����������������؏���\���\���\������¼���������������������������·�����ď�¡��½�����Ï�¡�����Web������\���\��\���\���\���\�����������ď�����²������½���������¹��������¡�����������WebSocket���̡���叢����¼������½���·�����������������������������돢�������¹��¡��������������¹��������������¡�WebRTC������������²��ď������������폢���������я���������̏���ߏ������������폢����������������µ��ď��������̏��������������������������������������ޏ��������¹��¡�
�����¼��؏�ď��¹������\������¼\��ď������������������������������������»�������������̏��ޏ�������������µ���
��¡�¡�¡�������¡��⏢𡯏�����½��Џ����������������Ώ��������·�����ď�¡����������������������я��«�����Џ��·���������������¹��������¡�������������я�����²��ҏ��������·���������·�����������Ï�¡�\������¼\��ď�������������������������������я�����������\���\���\�ߏ��̏����������������¹��¡�돫����������������돪���������̏����µ������µ������������\������¼\���������𡯏��Ð\���\\¹\���\������¼\��ď����������я��«����³��돪���ӏ��·���������¹��¡�
������𡯏��Ð��¡�\���\���\���\������������ӏ��������������¼��¡ߏ�����������������\���\���\»���¼\��������ҏ���������������ď��������·��������¡��³���������̡돫�������»��⏢�����������������ď��µ���������������������·���������¹��¡����ӏ�������¡ߏ��ӏ�������¡ߏ��ӏ��¼��¡��������������돫�������»��⏢������������¡��³���³��������¡�����𡯏��Ð���ӏ�������¡�������������������\������¼\��ď���\���\���\��ď��¼\���\���\����������������³���«���������µ������������������������������������������¾���¹���������¹�����𡯏����������Ώ��������·�����������Ï�¡��µ�����������������������ď�������������������·���������������������·�����������Ï�������¡���¼���������������
���������¼
���������������½¼�����µ���������������·���������������������¹��¡��ӏ�����¾�������ߏ��«���폪��������¹��Џ����я������������������폢¡ߏ��������«��������������������ġ������叢���ҏ��«���ޏ��������������������������¹��������¡��������Џ��������¹��¡�
������������������¡��³�����Ï�����������\������¼\��ď�����������������������\������¼\��ď��̏��µ������������������������¾���¹�����������¡��½������\������¼\��ď�������돩���������¹�����������������������Ï��³�����������ҏ��·���������¹��¡��½���������������������������������돪�����������ҏ�����¾������¹���������������ޏ��������¹��¡��½�����Ï��¹���������Ð��¡���¼���������������
���������������¼
��������������������������я��������½¼�����µ���������������¹��������������¡�돪���ġ����������¹��¡�
�����������á돫��������������������������̏����㏪���ԡ��돪���������������������������\������¼\������������¹��¡�ޏ�������䏢���������я��«���̏��µ·��ď����쏢�������¹��¡�
�����ԏ��µ³�����������������¾µ�������������������������������������������Ï�������¡�ޏ�������䏢���������������Ï���������1����������ӏ�����30\³\���������²��������䏢�̏���������������������������������¡��½�����������ҏ����Џ����������Џ�����������²������������«�����������������������������������á���������������\µ���¼\���\¹���̏����Ѣ�����µ���������������������������¹��¡��³���³������������𡯏��Ð��¡��������̏������ӏ�������¡ߏ��������������Ï�����²��������䏢�̡돫�\³\������������������ď��������·���������¹��¡��½�����Ï��¹��������������¡�¼��؏���¼��������Ï�����������²��ď��̏����쏢����������������·�����������Ï��폪���⏢𡯏��������ӏ��������������ď��³������������µ������������«��������������¡������я��������¹��¡�돫����³���������������������������������������Ï�����������¡����Џ����������Џ�����������²�����������������𡯏��Ð��¡�1������1��������������������������������Џ����������Џ��������·�����������������ď������̏�¡�������½��ӡ���ӏ��������� 2 �����������Џ��������������������·���������·�����������Ï��³�����������������������ӏ��·���������¹��¡��½�����я�����������µ������������«���������������������¹��������������¡�������������������¡�ޏ��������\������¼\��ď������������������̏����㏢���������������ď���������������������������������������������¹½���������������������������������³�����������������я��������¹��¡�
��������¡�WebSocket���������돪���������̏����µ������µ������������\������¼\��ď���������̏��·���������������������¹��¡�TCP���������������������������������ď����������������돩���������¹������\��\���\���\³\���������¾�������������돢���������������Ï�����»���������²½���µ���������������������������¹������������¡�\���\\¹\���\������¼\��ď��������������Ï�����������������������������돢�������\������¼\��ď����ҡ�·�����Ï�����������������³������������������»������������������¹��¡�
�돫�������¡�WebRTC�������������������̏����㏪���ԡ��돪���������������������������\������¼\��ď���������̏��·���������������������¹��¡�UDP���������������������������������������������叢����������������\��\���\���\³\���������¾�������������돢����������¹��¡�²¼¼�����������돩���������������«���̏��«���«��������������¡��½���������̡��돪�»���¹������������������¼��؏���¼��������Ï����������������ԏ����ď��µ�����������������������Ï����я�������¡��½�����������������������������������ď�������¡����������������ď��������������������ď��������������������«��������¡��µ���������µ������¼�������¹��ԏ�����������������������������������»��Џ�������돪�����̏����������������؏��������¹��¡�
¾���������½��Џ����������ď���������������������������������̏��«���������������¹�����������½���������\�ޏ��¼\¹���������������µ������������������������¾��������������ġ����¹�����������������¹��¡��³�����Ï����������Ï��³������������½��Џ����������������؏��̏���̏��«���������������������������������«���������·���������������»�����я��̏�¡�¼�����돪�\���\\¹\���\���\���\»���¼\��������ҏ����ҡ�¹���¹����������������UDP������»��������Ï��³�����������������������������¹��¡��³���������؏����ҏ�����������¹��Џ��������������������̏����Џ��·�����������������������������������Ï���������³����돢Ï��·���������¹���̏�¡�ߏ����������Ѣ�����¹������\������¼\��ď���\µ���¼\���\¹�������ޏ�Џ�����������WebSocket������WebRTC������¾���¼���������»�������������̏��ޏ�������������µ������������������³���������������������������������¹��¡�
��돪������������������¡��½������������NAT
��������¡�WebRTC������ Peer-to-peer connections��������������¡�UDP�����������������Ï���������������������������������������������������\��\���\���\³\���������»�����������������¡���¼���������\���\���\���\��������\���\���\���\���\����������ޏ��������\������¼\��ď����������я��«�����ҏ�������������������¹��¡��³������������¼���������\���\���\���\��������\���\���\���\���\�������������������������������������Ï������̡돫������������쏢�������������������������������������������������¹��¡�
������¾�����¡�²������«������\���\���\��������������䏪�³���¹�����������������������¡�³������¼�����ӏ�����������\��\���\���\��㏢�¼\���\��\���\���\¹���̏����؏��������������������¹��¡�������¡�\��\���\���\��㏢�¼\���\��\���\���\¹������������������������������¡�\���\���\��ď��¼\���\���\���¾���������\µ���¼\Ð���¼�����������������䏪�³���������������������������������¡����쏢���Ï�����������\���\������¼\���\Ð\���\���\������¼\��ď��¼�����������я���\���\���\��ď��¼\���\���\������������������������������������������������\��\���\���\��㏢�¼\���\��\���\���\¹������\��\������¼\Ð\���\��\���\���\¹�����������С�¹���·�����ď�������¡¾��������������𡭏�������������𡭏��������������·���������«������\µ���¼\Ð���¼�����������䏪�³���·���������������������¹��¡��³�����Ï�����������\��\���\���\¹�����С�¹����돢돫�����NAT�����������������я��������¹��¡�
��������¡�����ď��¹������������¼�������\µ���¼\Ð���¼������»��Џ��������½�������������������������������������¹���̏�¡�A���µ�����я��̏�������������B�����������я�����WebRTC������»��������������������䏪�³���¹������¾���¹�����������돢������������ď��³���������̏����쏢�³���������������¹��¡��������¼������������B�����������я�����\���\���\���\��������IP\��\���\���\¹������\��\���\���\��㏢�¼\���\��\���\���\¹���������������������������·�����������Ï����ď�������¡�\���\���\��ď��¼\���\���\������������½������\��\���\���\¹����������������������������������������������«���������������������������³���������������������������������·�����������Ï��«���������������¹�������������������������¼���«��������������������������������ޏ����������������я��������¹���̏�����¡�����������������¡�A���µ�����я�����B�����������я�����\���\������¼\���\Ð\���\���\������¼\��ď��¼���������������ޏ�����������������������������\��\������¼\Ð\���\��\���\���\¹��������������\������¼\��ď����ҏ��������������̏���ߏ��̏����������������¹��¡�
���������������������½���������������ޏ����������������������������»�����я�¡�NAT������������\��\������¼\Ð\���\��\���\���\¹���«������\��\���\���\��㏢�¼\���\��\���\���\¹�����������С�¹���¹�����������������������¡�\����¼\���������¹���������������������¼�ޏ�����»��ҏ����ҏ��«��������¡�²������������������������������¼�����ӏ��������������������������������Ï�����\��\��\���\�ޏ��¼\·\���\��я���������\������¼\��ď����ҏ�������������«������·������������������¹��¡��³������\����¼\���������¹�����������¡���¾���\���\���\��ď��¼\���\���\�����������������ď���µ������³�����������ď����я���������돪���쏢���������Ώ��������µ���������������¹��¡�����������������¡�A���µ�����я��������ӏ��³���������³�����������Џ�����������\����¼\���������¹���������\��\������¼\Ð\���IP\��\���\���\¹�����ҏ�����������������¡��½���������������Ð���·������\������¼\��ď����ҏ������������¡ߏ����������������Ï��³�����������ҏ��������������������ޏ��������Ð���������������������������������������������¹��¡��䏪���ӏ��������������������«���������������¹��¡�������������������������¡��³��������\����¼\���������¹���������\��\������¼\Ð\���\��\���\���\¹������\���\��¡ߏ����ҏ����������Ï�����������������B���µ�����я�������������𡯏��������폢���������������Ï������̏��������������������������������������¹��¡�
STUN������»��������쏢����
���³������������²���·������¹�����������ď�������������¡�"STUN\µ���¼\Ð���¼"�����������������Ï���������»������������������¹��¡����������돢¡�A���µ�����я�����STUN\µ���¼\Ð���¼���������Ð���·������UDP������\���\��\���\���(\������¼\���)�����ҏ�������������������¹��¡��½�����Ï��¹��������������¡�STUN\µ���¼\Ð���¼������������NAT����������돪���쏢����³��������������ӏ�����������������������\��\������¼\Ð\���\��\���\���\¹������\����¼\���������¹��������������С�¹���µ������������\���\��\���\������̏����������¡��³������¾��Ï����я����ҏ������������³���������̏�����������������¹��¡�\µ���¼\Ð���¼���������½������¾��Ï����я�����A���µ�����я����������ӏ��·���������������������������¹��¡��³�����Ï��¹���������³��������������¡�A���µ�����я�����¼«����̏�����³��������������ӏ�����������������������\��\������¼\Ð\���\��\���\���\¹������\����¼\���������¹���������\���\�������ҏ������������³���������̏�����������������¹��¡�(STUN�돪�³�돢����������TURN���������«��ġ����¹�����������������¹���̏�¡�����������������������������������������������������³����돢�)
\·\��\���\���\���\��
¼�������A���µ�����я�����STUN\µ���¼\Ð���¼���«������������������������\��\���\���\¹������\����¼\���������¹���������\���\��������B���µ�����я�������µ��𡯏����������²����������̏���ߏ��̏����������������¹��¡��³���������ď�������¡�\·\��\���\���\���\��\µ���¼\Ð���¼�����������������Ï���������������»������������������¹����SIP\µ���¼\Ð���¼���������«XMPP\µ���¼\Ð���¼���������«������»��������Ï������̏��������������������¹���̏�¡��½������������������������돢�������ޏ��������������³������������������\µ���¼\Ð���¼������»���������������������������������OK������¡�A���µ�����я�������¡��³������\·\��\���\���\���\��\µ���¼\Ð���¼���������Ð���·�����������½��ҏ�����\��\���\���\¹������\����¼\���������¹���¾��Ï����я����ҏ������������������¡�\·\��\���\���\���\��\µ���¼\Ð���¼���������½������¾��Ï����я�����B���µ�����я�����Push���·���������¹����������������������¡�B���µ�����я�����\·\��\���\���\���\��\µ���¼\Ð���¼������»��ӏ���돢����·��ҏ��̏���������������������������̏���ߏ��̏����������������¹��¡���������¡�\������¼\��ď�����Push���̏���̏���ߏ��������������������������¹������������¡�Comet������������������WebSocket������»��������������ď��������������������������·�����������Ï��������³���������������¹������¡��³���³���������������������������Ð���·�����������ď�����������������¡�����������������\��\���\���\¹������\����¼\���������¹���������\���\���������Ð���·��������¡�B���µ�����я�����A���µ�����я������ޏ�������䏢��²»���¼\������¼\��ď����ҏ�������������³���������̏�������������������������Ï��������������������������¹��¡�
�����������ď�¡�B���µ�����я��«������A���µ�����я��������Ð���·��������������¡���STUN������·��ҏ��������������Ï��Ï���\·\��\���\���\���\��\���\���\»���¼\��������ҏ�������������������Ï��Ï��Ï�¡ߏ����������������������ď�����������¼�����·������\���\������¼����������ޏ������������³�����������ҏ��������������Ð��¡Ð�����������ޏ�������䏢��²»���¼\������¼\��ď����ҏ�������������³����������²������½��¡��������³��������������¡�����½Ð�����㏢����\���\���\��я�����������������½Ð������¾������̏��������������¹��¡�\���\���\��я�����������������¼������½���¹������������������������ġ����¹�����������������я��������������µ���������������¹��������¡�������¡��³�����������ҡ��������ޏ�����»�����𡯏����������������Ï��������·�����ď����������������������Ï������̏���������̏�����¾������²������ WebRTC \��\���\���\��\���\���������\¹\������¼\��\��я����������������Ï��³�����������������������������я����������������Ï�����������������������»�ߏ��������������������������¹��¡������½¾���WebRTC������\³���¼\���\��\���\�돢�¹�����������������������������������������������������̏��¹�������������������¹���̏�¡��³������������¹¹���������������ޏ��������·���������������³�����Ï����������������á돪؏����Џ��������«¼��؏��ޏ��������������������¹����
STUN����»�����𡯏��������«��������������돪�������
�돫����«���·½�������������������돢�����돫������������������������¹���̏�¡�¼������������������������²����������ҏ����������������я��������������������¹��¡�\��\������¼\Ð\���\��\���\���\¹������\����¼\���������¹��������ҏ��������������ď�����������A���µ�����я�����STUN\µ���¼\Ð���¼������»��������������ď��������ޏ��������¹���̏�¡�¼�����돪�����\������¼\��ď�����B���µ�����я��̏������ď��µ��������������������������¡��³������\��\���\���\¹������\����¼\���������¹������������������������ď��·���������¹��¡�½¾��������������¡�NAT���̏��ӏ����������я�������¡��³������\������¼\��ď�¡�돪�½���\��\���\»\¹���·�����ď���STUN\µ���¼\Ð���¼����������\��\���\���\¹�������돫������Ï��������³���������«��������������������������������������������������������¼���«��¡����������·��������������𡯏�¡ߏ��������½���������·���������·�����������Ï��������³������\·\���\���\��쏢������������������������¾���·���������·�����������Ï������������¹��¡�¼�����돪�¡�¾��������������²������\·\���\���\��쏢����������������IP\��\���\���\¹���«�������������ď��µ�����������������Ï��̏�¡�½���������������\��\���\���\¹����\����¼\���\���\��돢�������\���\��\���\��������������������Ð��¡�³��돪���ӏ������¼�����ӏ��������������ޏ���������������NAT����������������������������돢����������»�����я������³���¼���������¼NAT������\���\���\³���¼\���NAT���������������������������¹��¡�����������¡¾���������������������������������¹���̏�¡��³���������؏�����\���\���\��������Џ��·������������������¡��³���³������������³����돢Ï��·���������¹��¡�����������¾��䏢�·���������������������ď�����������������¡����³������������������³���������µ���������������������������������«������������¡�
���������³������������ ����WebRTC ����������돢����¾���¹�������������돢�«������������¾���¹������̏���������¡��½���������������Ð����������\������¼\�����¼���̏��������¼���������¼NAT������»������������������������������«¼��������������������µ��¡������������������Ï��³���������������������������������¹��¡����Ï��¼���¼���¼�����я�¡��������������«��������¡�\��\���\���\��㏢�¼\���\��\���\���\¹ & NAT���̏�������������������¡���»��ӏ����������叢���я����������������Џ��·���������������������������¹��¡���������������������¡�\��\������¼\Ð\���IP\��\���\���\¹����³���\������¼\�����¼�����������؏�����������������IPv6���������叢���Ï��̏��������������������¹���������������������쏢�쏢���������������Ï�����������������������������������������¹��¡�IPv4\��\���\���\¹����������³������������������̏��������������· IPv6 ���������̏����Џ��̏��½¼��������쏢�������������������������������\���\���\���\���\�돢������¡�WebRTC����������³���¼��������؏���»���������������������\���\���\���\���\�돢�̏���ޏ�������·�����ď�����������¡����ӏ��³�����������������������������������Ï������������������������������������¹����
WebRTC������\³���¼\���\��\���\�돢�·�����������Ώ�����!!
�����������������Ï����؏�������¡�WebRTC�����ҏ����Џ�����������\³���¼\���\��\���\�돢����²��ҏ��������·�����ď�����������»�ߏ��������������¹��¡���²���»²¹������������·�����ď�����������¡���������¾���²��Ï��·������WebRTC\���\���\µ\���\���������repositry (http://code.google.com/p/webrtc-samples/����������������³«���µ������������������������ http://code.google.com/p/webrtc-samples/source/browse/trunk/apprtc/index.html���������¹��¡��³�����������ҡ���Ï����� https://github.com/KensakuKOMATSU/webrtc_test/blob/master/views/peerconnection.ejs������¼«����̏�����������������½��Џ����������������Ώ����ď�����������¡��½���³���«������\³���¼\���\��\���\�돢����\���\���\���\���������²��ҏ��������·���������¹��¡�
��������������������
WebRTC��������������������������������¡���������¾������²�����ď����������쏢�������������¹���̏�¡����������á돫������㏪��돪�����·�����������Ώ��������¹��¡�- \«\���\���������\���\���\��������������䏪�³���¹������
- STUN\µ���¼\Ð���¼�����������䏪�³���¹������
- Peer���������䏪�³������������¼«����̏��������䏪�³¾��Ï����я����ҏ�������𡯏�����
- Peer���«�����������¡ޏ�������䏢��²»���¼\¹\���\������¼\���������¼��؏�ď��¹������
\«\���\���������\���\���\��������������䏪�³���¹������
�����������돢¡�\«\���\���������\���\���\������«�������ޏ�������䏢����²»���¼\¹\���\������¼\���������¼������������·���������¹��¡��³������������¼���¹��ԏ��¹������API����getUserMedia()���������¹��¡�navigator.webkitGetUserMedia("video,audio", onGUMSuccess, onGUMError);�������돫��돫⏢ď�ԏ�������¡�ޏ�������䏢����²»���¼\���\Ð\���\¹�������½���������¾������\«\���\���������\���\���\������«����������������\��\���\»\¹���¹���������³�����������ҏ�¡��������ѡ돫⏢ď�ԏ�����������»��돫⏢ď�ԏ��������������½���������¾������\���\Ð\���\¹\��\���\»\¹��������������㏢��¼��돪���ԏ��·�����ď��������������\³���¼\���\Ð\���\����������ď�ԏ�����»������������·���������������������¹��¡�\���\Ð\���\¹\��\���\»\¹��������������㏢�¹��������������¡�ޏ�������䏢��²»���¼\¹\���\������¼\������������Ð���¹������\���\���\���\��\���\������̏����ӏ��µ���������������¹��¡�
function onGUMSuccess(stream){ var url = webkitURL.createObjectURL(stream); $("video#local")[0].src = url; localStream = stream; $("button.start").one('click', function(e){ $(this).attr("disabled", "true"); createPeerConnection(); }); }\³���¼\���\Ð\���\����������ď�ԏ����������돫��돫⏢ď�ԏ��������·��������¡�stream\���\���\���\��\���\������̏����ď�𡯏��������������������¹������������¡��³���������������Ð���·³���¼�����������돫�����¹��ԏ��������������¹��¡�돪�¾�����ԏ���̏�������¡�\������¼\«\���������²���������¾���������¼«����̏����¡ޏ�������䏢���ҏ��½¼�����¹�����������ԏ���̏�¡�webkitURL.createObjectURL()������\¹\���\������¼\���������\��\���\»\¹���¹������BlobURL������¼������������·��¡��½������������video\���\�돢����src����돪����������·������\»\���\������¹���������������ޏ�����²���������¾���������\«\���\����ޏ�������䏢�̏��½¼�����µ���������������¹��¡����������ď�¡������¹������»��������Ï����ď�������������¡�\��\������¼\Ð\��������Џ�ď�� localStream ���������³������stream�����ҏ����������Џ��·���������������������¹��¡�
���������¾��������¡���¼�������������Peer�������������������䏪�³������³«»������¹�����������ԏ���̏�¡���²��я�돫�����·������\µ\���\��\�����������������¡�\������¼\«\���������\���\������¼\��������������я�����������\���\���\���\������³«������������¾��؏����ӏ��������������Ώ���돢����������¾�����������������������돫��������������������������������������������¹������������¡��½���������؏�����������¼�������돪���폢�������������������������������\���\���\��я�����\���\���\���\������·�����ď�������������������䏪�³³«»������¹�����������������Ï��������·���������·�����ď�¡�
STUN\µ���¼\Ð���¼�����������䏪�³���¹������
������������\���\���������������䏪�³�������돪䏢�������������¹��¡�createPeerConnection()��������������¡�돪�²¼���������������Ï����� Peer-to-peer connections API�����ҏ����Џ��������������������������¹����STUN\µ���¼\Ð���¼���������·��������¡�google���̏�����³«���·������������������\µ���¼\Ð���¼�����ҏ����̏����Џ��·���������������������¹������¡�function createPeerConnection() { pc = new webkitDeprecatedPeerConnection("STUN stun.l.google.com:19302", onSignalingMessage); pc.addStream(localStream); // set handlers for peerconnection events pc.onconnecting = onSessionConnecting; pc.onopen = onSessionOpened; pc.onaddstream = onRemoteStreamAdded; pc.onremovestream = onRemoteStreamRemoved; }1¹��ԏ����䏢����webkitDeprecatedPeerConnection()��������¡�STUN\µ���¼\Ð���¼�����������䏪�³���·��¡�¼«����̏�����\��\������¼\Ð\���\��\���\���\¹������\����¼\���������¹���������¼������������·���������������������¹��¡��³���������̏�������㏢�¹��������������¡�\³���¼\���\Ð\���\����������ď�� onSignalingMessage���̏��������Ð���������������¹����������½��ҏ�����¡����������������Ώ�������¡�\���\½\���\������¾������ Deprecated �������������������������Ï�������¡��³������\���\½\���\��������������������돢����»�����𡯏��������������������������������¹��¡�𡭏������돪؏�����
���½���������������� pc.addStream() �����������������叢����¼������������·������ stream \���\���\���\��\���\���������\���\�������������ď��¹������\¹\���\������¼\������������·������»������������·���������������������¹��¡����������ď�¡�\���\���������������䏪�³������������������������������������³���¼���\���\���\���\������̏��������������·���������¹������������¡��½������\���\���\���\������������³���³������»������������·���������������������¹��¡�
Peer���������䏪�³������������¼«����̏��������䏪�³¾��Ï����я����ҏ�������𡯏�����
webkitDeprecatedPeerConnection()��������¡�STUN\µ���¼\Ð���¼���«������\��\���\���\¹����\����¼\���������¹���¾��Ï�����¼�����������������������㏢�¹��������������¡�»������������·������\³���¼\���\Ð\���\����������ď�ԏ��̏�����������½Ð���µ���������������¹��¡��³���³�������������돫��돫⏢ď�ԏ����������䏪�³�����Џ�����SDP\���\���\»���¼\�������STUN���«������¼������������·������\��\���\���\¹����\����¼\���������¹���������\���\��������¡�ޏ��������¾��Ï����я���������������µ½��ҏ��µ��������������������������������³������¼���µ���������������������������¹������������¡��³������������²��ď��������«������¼���������������\���\������\���\���\���\�����������������·���������¹�������������̏�돫�����·������\µ\���\��\�����������������¡�\·\���\��\���������WebSocket������»�����������������¡�\���\���������䏪�³���������������³������\���\���\»���¼\��������ҏ��������·���������·�����ď�¡�WebSocket������\³���¼\���\��\���\�돢����chat�����ҏ�돫�����¾���¹�������������������������ޏ�����������������¾�������ߏ��������¹)��¡�\���\������¼\������������·��������������¡�돪�²¼���������������Ï�����������������¡�function onSignalingMessage(mesg) { // WebSocket������»�����������������¡�\���\������SDP\���\���\»���¼\��������ҏ��¾��������¹������ ws.send(mesg); }\���\������SDP\���\���\»���¼\���������¼��؏�ď��·�����ď�������¡�Peer-to-peer connections API������processSignalingMessage()\���\½\���\���������»�����������������¡�SDP\���\���\»���¼\��������ҡ���Ï����������䏪�³½�������������¹��ԏ��������������¹����¼��؏��ޏ����Ï�������¡�Peer-to-peer connections ������\���\���\¹\���\���\¹���̏�����������¾���¹�����������¡�\³\���\¹\���\���\���\��ď����ҏ����������я����������쏢�������³�����������ҏ����쏪���돢�������������������쏢��)��¡�
ws.onmessage = function(e){ // Peer-to-peer connections ������\���\���\¹\���\���\¹���̏�����������¾���¹�����������¡����������돢돪�½��������� // \³\���\¹\���\���\���\��ď����ҏ����������� if(!!pc === false) { createPeerConnection(); } // SDP\���\���\»���¼\�����������������¡��䏪�³½�������������¹��ԏ����Ï�¡� pc.processSignalingMessage(e.data); }
Peer���«�����������¡ޏ�������䏢��²»���¼\¹\���\������¼\���������¼��؏�ď��¹������
�����䏪�³½�������������������¡�\���\������¼\���\���\���«�����������¡ޏ�������䏢��²»���¼\¹\���\������¼\���¼��؏�ď���²������½������������������������\���\��\³\���\���\·\���\��я�����\���\���\¹\���\���\¹���������Ð���·������ addstream \���\���\���\������̏��������������·���������¹������������¡��³���������������Ð���¹������\³���¼\���\Ð\���\������������·������¼��؏�ď��\¹\���\������¼\���������²������������������½¼�����¹������½�������������µ½��ҏ��·���������¹��¡�function onRemoteStreamAdded(e) { var url = webkitURL.createObjectURL(event.stream); $("video#remote")[0].src = url; }�돫⏢ď�ԏ����������ď�𡯏�����������������\���\���\���\���\���\���\���\��\���\��������� stream \��\���\���\���\��������¡�\���\������¼\������«������¼��؏�ď��¹�������ޏ�������䏢��²»���¼\¹\���\������¼\���������\���\���\���\��\���\�������³������¼���µ���������������������������¹������������¡�localStream������¾���¹�������������ޏ����� webkitURL.createObjectURL() ������BlobURL�����������С�¹��������¡�½��������������� video\���\�돢����src����돪�������\»\���\������·���������¹��¡������ޏ��������¹��������¡�
���������ޏ����������������������������¹���̏�¡����ď���������ޏ�����\���\���\���²���µ��������ҏ��¹���������������ޏ����������������Ð��¡��³���������돢����������������\³���¼\���\��\���\�돢����������������¹��¡����������쏢¡�https://github.com/KensakuKOMATSU/webrtc_test������\µ���¼\Ð���¼\³���¼\��������������������³«���·���������������������¹������������¡��½�������������������������³���������·�����������Ώ��������������������µ��������¡�
����²���¾���²��Ï��·�����ď�����������¡�WebRTC�����¡돫������ԏ��������¹��¡�����������������¼«��ď��\\���\��я�����������²��ҏ��·������������������������������������¡��³���³������¾���²��Ï��������µ���ޏ��������¹���̏�¡�W3C������\���\���\���\��������ҏ��«��������������¡��������«���������«�ޏ�䏢�������¼���½�����Ï��������¹��¡��³������������������������Web���������Ð���¹������¹�����𡯏��������ҡ돫������Џ��¹��������������������ӡ돫�������������������API��¡�����������ď������������³��⏢�·�����Ώ��������¹���������쏢��
��ď��µ���\���\���\��\���\���\\���\�돢����
