1. 개요 iperf3이라는 유틸리티를 이용하여 장치간 네트워크 트래픽에 대한 Throughput을 측정할 수 있습니다. Throughput은 보통 장치의 네트워킹 성능을 측정하거나 네트워크의 품질을 판단하는데 사용됩니다. 본 글에서는 리눅스 시스템(우분투 16.04) 상에서 iperf3 유틸리티를 이용하여 두 장치간 네트워크 Throughput을 측정하는 방법을 소개합니다. 2. 장치(PC 등) 별 네트워크 인터페이스 주소 설정 두 장치 사이에서 교환되는 네트워크 트래픽에 대한 성능을 측정하므로 2개의 리눅스 장치를 사용합니다. 장치1에서 다음 명령으로 IPv4 및 IPv6 주소를 설정합니다. 원할 경우 MAC 주소도 설정할 수 있습니다. 여기서는 네트워크 인터페이스 이름으로 eth0을 사용하고 임의의..
OBJECT IDENTIFIER 데이터 유형은 0x06의 값을 갖는 Tag 값으로 시작되는 TLV 형태로 인코딩됩니다. Object Identifier(OID) 내에서 각 점으로 구분되는 각 정수(=노드)는 다음 규칙에 따라 인코딩됩니다. OID의 첫 두 노드는 1 바이트로 함께 인코딩됩니다. 첫번째 노드에 40을 곱한 값에 두번째 노드의 값을 더합니다. 127 이하의 노드 값은 1 바이트로 인코딩됩니다. 128 이상의 노드 값은 다수의 바이트로 인코딩됩니다. leftmost 바이트의 Bit 7이 1로 인코딩되며, 각 바이트의 Bit 0~6에 인코딩된 값이 포함됩니다. 다음은 인증서 요청(Certificate request) 메시지 내에 포함된 ClientId를 인코딩하는 예제입니다. 1.3.6.1.4...
본 글에서는 윈도우즈 10(프로)에서 방화벽의 설정을 변경하여 특정 포트로 수신되는 네트워크 트래픽을 허용하는 방법에 대해 설명하고자 합니다. 1. 윈도우 키 + "I" 키를 눌러 "설정" 창을 띄운 후, "네트워크 및 인터넷"을 선택합니다. 2. "네트워크 및 인터넷" 창에서 "Windows 방화벽"을 선택합니다. 3. "방화벽 및 네트워크 보호" 창에서 "고급 설정"을 선택합니다. 4. "고급 보안이 포함된 Windows Defender 방화벽" 창의 좌측 메뉴 중 "인바운드 규칙"을 클릭합니다. 5. 우측 작업 영역에서 "새 규칙..."을 클릭하면 "새 인바운드 규칙 마법사" 창이 실행됩니다. 6. "새 인바운드 규칙 마법사" 창에서 "포트" 라디오 버튼에 체크 후 "다음" 버튼을 클릭합니다. 7...
가끔 지워지지 않는 프로그램을 삭제하는 등 어떠한 이유로 인해 안전모드로 부팅해야 하는 경우가 있습니다. 여기서는 윈도우즈 10에서 안전모드로 부팅하는 방법을 설명합니다. 1. 윈도우즈 부팅 시 "Shift" 키를 누르고 있기 말 그대로 윈도우즈를 부팅 또는 재부팅하면서 "Shift" 키를 계속 누르고 있으면, 안전모드로 부팅할 수 있는 화면으로 진입할 수 있습니다. 2. 설정 메뉴에서 선택하기 윈도우키 + "I"를 입력하여 "설정" 창을 띄우고 "업데이트 및 보안" 메뉴를 선택합니다. "윈도우즈 업데이트" 창의 좌측 메뉴에서 "복구"를 선택합니다. "복구" 창에서 "지금 다시 시작" 버튼을 클릭하면 재부팅 되면서 안전모드로 진입할 수 있는 화면으로 진입합니다. 3. 안전모드로 부팅하기 위 1번 절차나 ..
개요 TUN 과 TAP(Terminal Access Point) 은 가상 네트워크 커널 인터페이스입니다. 위키피디아(https://en.wikipedia.org/wiki/TUN/TAP)에 따르면, 운영체제가 TUN/TAP 디바이스로 전송한 패킷들은 해당 TUN/TAP 디바이스에 연결된 사용자공간 프로그램으로 전달되며, 사용자공간 프로그램이 TUN/TAP 디바이스로 전송한 패킷들은 운영체제 네트워크 스택으로 전달됩니다. TUN 디바이스는 IP 계층에서 이러한 역할을 수행하고, TAP 디바이스는 데이터링크 계층에서 이러한 역할을 수행합니다. 사용법 다음 명령으로 디바이스를 생성합니다. mkdir /dev/net (없을 경우) mknod /dev/net/tun c 10 200 다음 명령으로 디바이스 권한을 설..
개요 리눅스(및 대다수의 운영체제)에서는 시스템에서 함께 동작하는 다수의 어플리케이션 프로세스 간에 정보를 교환하도록 하기 위한 프로세스간 통신 (Inter Process Communication, IPC) 기법을 제공합니다. 본 글에서는 여러 IPC 기법 중 메시지큐를 이용하여 프로세스 간 정보 교환 기능을 구현하는 예제를 소개합니다. 메시지큐 기반 IPC 기법의 대략적인 구조 및 동작 절차는 다음과 같습니다. 임의의 프로세스에서 메시지큐를 생성합니다 - msgget() 시스템 함수 호출 그 외 프로세스에서는 해당 메시지큐를 엽니다 - msgget() 시스템 함수 호출 수신 프로세스에서는 메시지큐로부터 메시지를 수신합니다 - msgrcv() 시스템 함수 호출 송신 프로세스에서는 메시지큐로 메시지를 송신..
개요 내 PC 상에 저장되어 있는 도커 이미지를 다른 사람에게 공유하는 방법 두 가지에 대해 소개합니다. 하나는 도커 이미지를 파일로 만들어서 파일을 전달하는 방법이고, 또 하나는 도커 허브(Docker Hub)에 업로드하고 이로부터 다운로드하도록 하는 방법입니다. 도커 이미지를 파일로 공유하기 1. "save" 옵션을 통해 도커 이미지를 파일로 생성할 수 있습니다. tar 형식의 파일로 생성되므로 확장자는 "tar"로 지정합니다. docker save -o [FILE_NAME.tar] [IMAGE NAME] 2. 생성된 도커 이미지 파일을 공유 받은 쪽에서는 "load" 옵션을 이용하여 파일로부터 도커 이미지를 로딩할 수 있습니다. docker load -i [FILE_NAME.tar] 다음은 ubun..
개요 도커 허브(Docker Hub)에 가입하면, 클라우드 상에 저장소를 생성하여 도커 이미지를 저장해 둘 수 있고 필요 시 로컬 PC 상에 다운로드하여 사용할 수 있습니다. 본 글에서는 도커 허브에 가입하는 방법과 저장소를 생성하는 방법, 도커 이미지를 업로드하고 다운로드하는 방법에 대해 소개합니다. 도커 허브 가입하기 1. 도커 허브 싸이트에 접속합니다. Docker Hub Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your teams' container applications. hub.docker.com 2. 메인 페이지에서 "Sign Up" 버튼을..
개요 일반적으로 도커 컨테이너 상에서 작업한 내용(예: 인터넷으로부터 파일을 다운로드하거나 파일의 내용을 변경하는 등)들은 컨테이너가 종료되면 함께 사라집니다. 도커 컨테이너 상에서 작업한 내용을 이미지로 커밋(Commit)하여 나중에 해당 이미지로부터 다시 컨테이너를 실행함으로써 작업했던 내용을 다시 사용할 수 있습니다. 도커 이미지 커밋하기 특정 도커 컨테이너의 상태를 이미지로 커밋하는 방법은 다음과 같습니다. 1. 실행 중인 도커 컨테이너를 종료합니다. 2. 종료된 도커 컨테이너의 ID를 확인합니다. G:\>docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a0a902554ba ubuntu:16.04 "/bin/bash" 9 d..
도커 컨테이너 내에서 TUN 디바이스를 사용하기 위해서는, 도커 컨테이너 실행 시에 "--device" 옵션을 함께 입력한다. docker run --device /dev/net/tun [IMAGE NAME] [OTHER OPTIONS...] 해당 옵션과 함께 실행 시, 도커 컨테이너 내에 다음과 같이 /dev/net/tun 디바이스가 생성된 것을 확인할 수 있다.
본 글에서는 C 언어로 작성된 특정 라이브러리의 기능에 대해, google test를 이용한 단위테스트를 수행하는 샘플 프로젝트를 소개한다. 사용된 환경은 다음과 같다. 빌드 및 테스트 실행 환경: Ubuntu 리눅스 16.04 (도커 컨테이너) 단위테스트 툴: google test v1.10.0 빌드 툴: cmake v3.19.2 리눅스에 google test(v1.10.0)을 설치하는 방법은 아래 글에서 확인할 수 있다. 2020/12/31 - [프로그래밍/Google Test] - Google test 설치하기 리눅스에 CMake(v3.19.2)를 설치하는 방법은 아래 글에서 확인할 수 있다. 2020/12/31 - [개발환경/CMake] - 리눅스에 CMake 설치하기 - 3.19.2 버전 개요 ..
본 글에서는 글 작성 시점의 최신 안정 버전인 3.19.2 버전의 cmake를 리눅스에 설치하는 방법을 소개한다. 본 글에서 사용된 리눅스 환경은 다음과 같다. Ubuntu 16.04 0. 만약 기존에 설치되어 있는 과거 버전의 cmake가 이미 있을 경우 다음 명령으로 제거한다. sudo apt purge cmake 1. CMake를 빌드하는데 필요한 패키지를 설치한다. sudo apt update sudo apt install wget build-essential sudo 2. CMake 3.19.2 버전을 다운로드하고 압축을 해제한다. wget https://github.com/Kitware/CMake/releases/download/v3.19.2/cmake-3.19.2.tar.gz tar zxf ..