전체 글 50

[WebRTC] Google Codelab 따라하기 - 2

Google에서 제공하는 codelab이 있습니다. 이것을 따라서 WebRTC의 기본을 구현해보려고 합니다. ** 주의: 아래 내용은 제가 따라한 내용으로 보다 정확한 내용은 codelab을 이용해 주시기 바랍니다. [WebRTC] Google Codelab 따라하기 - 1 에서는 Video와 Message 송수신에 대해 실습하였습니다. 7. Node.js 로 signaling 서버 구현 7.1. Node.js 설치 Node.js 설치 및 Helloworld 실행 페이지에 따라 설치합니다. 7.2. 프로젝트 실행 coldelab에서 다운받은 소스 중 /work/step-04 위치로 이동합니다. 이 예제는 socket을 사용하여 room을 생성합니다. npm install 실행 후 node index.js..

Media/WebRTC 2021.03.18

[WebRTC] Google Codelab 따라하기 - 1

Google에서 제공하는 codelab이 있습니다. 이것을 따라서 WebRTC의 기본을 구현해보려고 합니다. ** 주의: 아래 내용은 제가 따라한 내용으로 보다 정확한 내용은 codelab을 이용해 주시기 바랍니다. 1. 필요 환경 1) Chrome browser 47 이상 버전 2) 웹캠 ** 저는 Windows 환경에서 진행해 봤습니다. 2. 코드 다운로드 git clone을 통해 받거나 링크를 통해 다운로드 $ git clone https://github.com/googlecodelabs/webrtc-web 3. Chrome 브라우저의 확장 프로그램인 Web Server for Chrome 설치 및 설정 - chrome.google.com/webstore/detail/web-server-for-ch..

Media/WebRTC 2021.03.17

TURN (Traversal Using Relays around NAT)

TURN은 NAT 또는 방화벽의 통과를 지원하는 프로토콜이며 TURN 서버는 relay 서버입니다. STUN 기술로는 같은 NAT 내에 존재하거나 Symmetric NAT 을 사용하는 클라이언트 끼리의 통신을 지원할 수 없는 문제가 있기 때문에 이를 해결하기 위해 TURN을 사용합니다. TURN은 RFC-5766에 정의되어 있습니다. 두 클라이언트(peer)가 서로 통신을 하려고 하는데 자신의 Public IP를 통해 상대방이 통신할 수 없을 때, TURN 서버를 사용하여 relay하는 방식으로 통신을 하게 됩니다. 직접 통신하지 않고 relay 함으로 인해 오버헤드 및 지연이 발생하지만 이 방법이 아니면 통신할 수 없으므로 어쩔 수 없을 경우 사용합니다. 클라이언트와 TURN 서버 간의 통신은 UDP를..

STUN (Session Traversal Utilities for NAT)

STUN은 실시간 음성, 비디오, 메시징 및 기타 대화형 통신 애플리케이션에서 NAT(Network Address Translation)을 통과하기 위한 네트워크 프로토콜을 포함한 표준화된 방법의 모음이라고 합니다. - Wikipedia RFC 5389에 정의되어 있습니다. WebRTC 등 사용 시 상대방을 찾기 위해 사용하게 됩니다. 네트워크 상에서 모두가 공개(Public) IP를 사용하는 것이 아니라 공유기나 라우터 뒤에 개인(사설, Private) IP를 사용하여 숨어있기 때문에 '나'의 공개 IP를 상대방에게 알리기 위해 사용합니다. 작동 순서는 아래와 같습니다. 1. Private network 내의 클라이언트는 Public network의 STUN 서버에 바인딩 요청을 보냅니다. 이 때 바인..

NAT (Network Address Translation)

NAT는 네트워크 주소 변환이라고 하며 아래와 같이 정의되어 있습니다. IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술 - https://ko.wikipedia.org/wiki/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC_%EC%A3%BC%EC%86%8C_%EB%B3%80%ED%99%98 간단하게 말하면 통신사의 회선 하나(하나의 공인 IP)에 공유기를 물려놓고 여러 개의 기기(여러 개의 개인 IP)를 물려놓은 것입니다. NAT를 사용하는 제일 큰 목적은 위와 같이 하나의 IP로 여러 대의 기기를 사용하기 위함이며, 좀 더 큰 목적은 IP 주소가 한정되어 있기 때문에 기하급수적으로 늘어나는 모든 기..

Github 가입하고 첫 commit 올려보기

홈페이지가 그때그때 변경돼서 조금씩 다르긴 합니다만, 대충 sign up 누릅니다. devji, dev-ji 다 누가 쓰고있네요... devji-kr 로 가봅니다. 다음으로 나오는 설문은 별로 안 중요하니 아무거나 대충 찍고 넘어가겠습니다. 이메일을 확인하여 Vefiry email address를 해줍니다. Create a repository 로 갑니다. 다음은 새로 생성할 git 저장소에 대한 이것저것 설정입니다. 설정한 이후 Create Repository를 선택합니다. Repository name 사용할 저장소 이름입니다. Description 사용할 저장소에 대한 설명입니다. Public / Private 자신의 저장소에 올린 소스를 공개할지, 개인적으로 사용할지 정합니다. Add a README..

환경설정/GIT 2021.03.14

Ubuntu 20.40에 GIT 설치, 정보 설정 및 Github 에서 소스 가져오기

간단하게 Ubuntu 20.04에 GIT을 설치한 후 Github의 소스를 다운로드 해보겠습니다. GIT 설치는 간단합니다. $ sudo apt-get intsall git 다음으로 사용자 정보를 설정해야 합니다. $ git config --global user.name "Dev Ji" $ git config --global user.email "~~~@gmail.com" 주로 사용하는 에디터 그리고 merge 시 두 소 스의 차이점을 수정할 때 사용할 툴을 설정합니다. commit message 작성 등에 사용됩니다. 저는 vim으로 갑니다. $ git config --global core.editor vim $ git config --global merge.tool vimdiff 아직은 필요 없지만 ..

환경설정/Ubuntu 2021.03.14

Ubuntu 20.04 사용자 추가, sudo 권한 부여 (adduser, usermod, userdel)

admin 계정만으로 서버를 사용하는 것은 비밀번호의 노출 빈도를 높이게 되어 위험합니다. 별도의 계정을 생성 후 sudo 권한을 부여하여 사용할 수 있습니다. 사용자 추가 명령어는 useradd, adduser 두 가지가 있습니다. 간단한 adduser로 추가 후 sudo 권한을 부여해 보겠습니다. # adduser $ sudo adduser new_user # usermod $ sudo usermod -a -G sudo new_user adduser 로 사용자를 추가하면 여러가지 개인정보, 비밀번호 생성 및 home 디렉토리 생성을 자동으로 진행해 줍니다. cd /home 으로 이동하여 ls 명령어를 통해 new_user 디렉토리가 생성되었음을 확인할 수 있습니다. sudo 권한 추가가 제대로 됐는지..

환경설정/Ubuntu 2021.03.13

WebRTC 란? (소개, 개요)

WebRTC (Web Real-Time Communication) WebRTC는 웹 브라우저, Andoird, iOS 등에서 사용 가능한 P2P 음성, 비디오, 데이터 교환 솔루션이라고 볼 수 있습니다. 구글이 개발하여 오픈 소스화 하였고 그 뒤로 IETF(Internet Engineering Task Force, 국제 인터넷 표준화 기구)가 프로토콜 표준화 작업을 진행하고 W3C(World Wide Web Consortium)가 API 정의를 진행하였습니다. - ko.wikipedia.org/wiki/WebRTC webrtc.org/getting-started/overview 에서 기본적인 설명을 확인할 수 있으며 모질라 재단에서도 정리해둔 글타래가 있습니다. - developer.mozilla.org..

Media/WebRTC 2021.03.12

ROS2 Foxy Fitzroy 설치 (Ubuntu 20.04)

ROS2의 최신 버전인 Foxy 버전을 설치해 보겠습니다. Ubuntu 20.04가 권장됩니다. 설치 방법은 아래 페이지에 설명되어 있습니다. - docs.ros.org/en/foxy/Installation/Linux-Development-Setup.html - docs.ros.org/en/foxy/Installation/Linux-Install-Binary.html 저는 apt install 을 통한 debian 버전 설치가 잘 되지 않아서 아래와 같은 방법으로 진행했습니다. 1. Locale 설정 (UTF-8) $ locale # check for UTF-8 $ sudo apt update && sudo apt install locales $ sudo locale-gen en_US en_US.UTF-..

ROS 2021.03.12