본 글에서는 JetBrains 사의 C/C++ 개발용 IDE 인 CLion 에서, 프로젝트에 파일 추가 시 자동으로 삽입되는 문구를 설정하는 방법을 설명한다. 본 글의 내용을 작성하는데 사용된 환경은 다음과 같다. 윈도우즈 10 프로 CLion 2019.3.1 기본 삽입 문구 CLion IDE에서 프로젝트 내에 특정 유형의 새로운 파일을 생성하여 추가하는 경우, 해당 파일 상단에 사전에 정의된 문구가 자동으로 삽입된다. 이는 CLion에서 제공하는 기능이다. 기본 설정 상태에서 *.h 파일을 추가하면 다음과 같은 문구가 파일에 자동 삽입된다. test-project 라는 이름의 프로젝트 내에서 test.h 파일을 생성한 결과이다. 사용자 이름과 생성 일자를 포함한 주석이 자동 삽입되며, 프로젝트명과 파일..
본 글에서는 리눅스 시스템의 네트워크 인터페이스를 C 언어로 작성된 프로그램 상에서 비활성화하는 방법을 설명한다. 반대로, 활성화하는 방법은 다음 글에 설명되어 있다. 2020/02/15 - [프로그래밍/리눅스 프로그래밍] - 리눅스 네트워크 프로그래밍 - 네트워크 인터페이스 활성화하기 리눅스 시스템에서 네트워크 인터페이스를 비활성화하기 위해 보통 ifconfig down 명령을 사용한다. 아래 내용은 ifconfig eth0 down 명령을 이용하여 eth0 라는 이름을 갖는 네트워크 인터페이스를 비활성화 하는 내용이다. root@10a25d934dda:/workspace# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02 inet addr:172..
본 글에서는 리눅스 시스템의 네트워크 인터페이스를 C 언어로 작성된 프로그램 상에서 활성화하는 방법을 설명한다. 반대로, 비활성화하는 방법은 다음 글에 설명되어 있다. 2020/02/15 - [프로그래밍/리눅스 프로그래밍] - 리눅스 네트워크 프로그래밍 - 네트워크 인터페이스 비활성화하기 리눅스 시스템에서 네트워크 인터페이스를 활성화하기 위해 보통 ifconfig up 명령을 사용한다. 아래 내용은 ifconfig eth0 up 명령을 이용하여 eth0 라는 이름을 갖는 네트워크 인터페이스를 활성화 하는 내용이다. root@10a25d934dda:/workspace# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP L..
본 글에서는 리눅스 시스템의 네트워크 인터페이스에 할당되어 있는 MAC 주소를 확인하는 프로그램을 작성하는 방법에 대해 설명한다. 프로그램 상에서 네트워크 인터페이스의 MAC 주소를 확인하는 기본 절차는 다음과 같다. socket() 함수로 네트워크 인터페이스에 대한 소켓 파일 디스크립터를 연다. struct ifreq 구조체 변수에 확인할 네트워크 인터페이스의 이름(예: eth0)을 저장한다. ioctl() 함수의 SIOCGIFHWADDR 명령을 통해 네트워크 인터페이스의 MAC 주소를 읽는다. 다음은 C 언어로 작성된 예제 프로그램의 소스 코드이다. #include #include #include #include #include #include #include #include /// MAC 주소 길이..
본 글에서는 윈도우즈 10 에서 다크 모드를 설정하는 방법을 소개한다. 윈도우 키를 누른 후 설정 아이콘(톱니바퀴 모양)을 클릭하여 설정 창을 띄운다. 설정 창에서 개인설정 메뉴를 선택한다. 개인 설정 창에서 좌측의 색 메뉴를 선택한 후, 색 선택 드롭박스에서 어둡게를 선택한다. 윈도우즈가 다크모드로 변경되며, 어플리케이션 창이 다음과 같이 검은색으로 나타난다.
본 글에서는 IETF RFC 2464 Transmission of IPv6 Packets over Ethernet Networks 표준에 기술된 이더넷 네트워크 상에서의 IPv6 패킷 전송 방법에 대해 설명한다. RFC 2464 : Transmission of IPv6 Packets over Ethernet Networks 1. 소개 본 표준은 이더넷 네트워크 상에서 전송되는 IPv6 패킷의 프레임 형식과 IPv6 링크로컬 주소를 구성하는 방법, stateless 하게 주소를 자동 설정하는 방법을 기술한다. 또한 Router Solicitation, Router Advdertisement, Neighbor Solictation, Neighbor Advertisement, Redirect 메시지가 이더넷 ..
본 글에서는 네트워크 인터페이스의 유니캐스트 IPv6 주소의 구성 요소인 인터페이스 식별자(Interface Identifier)에 대해 설명한다. 인터페이스 식별자의 소개 및 형식은 IETF RFC 4291 IP Version 6 Addressing Architecture 표준의 2.5.1 절에 정의되어 있다. RFC 4291 : IP Version 6 Addressing Architecture 2.5.1. 인터페이스 식별자(Interface Identifier) IPv6 유니캐스트 주소 내의 인터페이스 식별자는 링크 상에 연결된 네트워크 인터페이스들을 식별하는데 사용된다. 이 식별자는 동일한 서브넷 프리픽스 내에서 고유해야 한다. 동일한 인터페이스 식별자가 링크 상에 연결된 서로 다른 노드들에게 할당..
본 글에서는 리눅스 시스템의 네트워크 인터페이스에 MAC 주소를 설정하는 프로그램을 작성하는 방법에 대해 설명한다. 프로그램 상에서 네트워크 인터페이스의 MAC 주소를 설정하는 기본 절차는 다음과 같다. socket() 함수로 네트워크 인터페이스에 대한 소켓 파일 디스크립터를 연다. struct ifreq 구조체 변수에 설정할 네트워크 인터페이스의 이름(예: eth0), 주소 등을 저장한다. ioctl() 함수의 SIOCSIFHWADDR 명령을 통해 네트워크 인터페이스를 설정한다. 다음은 C 언어로 작성된 예제 프로그램의 소스 코드이다. #include #include #include #include #include #include #include #include /// MAC 주소 길이 #define ..
본 글에서는 문자열 형태로 표현된 네트워크 인터페이스 MAC 주소를 6바이트 길이의 바이트열로 변환하는 방법에 대해 설명한다. 이더넷 네트워크 인터페이스의 MAC 주소는 6바이트의 길이를 가지며, 보통 다음과 같이 표현된다. 리눅스 계열 운영체제 : 00:01:02:03:04:05 윈도우즈 운영체제 : 00-01-02-03-04-05 MAC 주소가 위와 같은 형태의 문자열로 표현되어 있을 때(예: "00:01:02:03:04:05"), 이 문자열을 6바이트 길이의 바이트열로 변환하는 간단한 함수를 다음과 같이 구현할 수 있다. #include #include #include /// MAC 주소 길이 #define MAC_ALEN 6 /// MAC 주소 문자열 길이 #define MAC_ADDR_STR_L..
본 글에서는 IPv6 애니캐스트(Anycast) 주소 형식에 대해 설명한다. IPv6 애니캐스트 주소의 공통 형식은 IETF RFC 4291 IP Version 6 Addressing Architecture 표준의 2.6 절에 정의되어 있다. 또한 예약된(공통으로 사용되는) IPv6 서브넷 애니캐스트 주소 형식은 IETF RFC 2526 Reserved IPv6 Subnet Anycast Address 표준에 정의되어 있다. RFC 4291 : IP Version 6 Addressing Architecture 2.6. 애니캐스트(Anycast) 주소 애니캐스트 주소는 하나 이상의 네트워크 인터페이스(일반적으로 서로 다른 노드에 장착된)에 할당되는 주소이다. 목적지 IPv6 주소가 애니캐스트 주소인 패킷은..
본 글에서는 IPv6 주소 바이트열을 문자열로 변환해 주는 inet_ntop() 함수에 대해 소개한다. 다음은 IPv6 주소 바이트열을 문자열로 변환하여 출력하는 예제 프로그램이다. IPv6_ALEN : IPv6 주소는 128비트, 즉 16바이트 길이를 가진다. IPv6_ADDR_STR_MAX_LEN : 최대 길이의 문자열로 표현된다고 가정하면, IPv6 주소는 16바이트 길이를 가지므로, 4비트 당 한 글자씩 총 32글자가 필요하다. 또한 4글자 마다 사이에 콜론이 들어갈 수 있으므로 최대 7개의 콜론이 들어갈 수 있다. 따라서 IPv6 주소 문자열의 최대 길이는 (16 * 2) + 7 = 39 바이트가 된다. 문자열을 저장하기 위한 배열은 마지막 종료 문자까지 고려하여 39 + 1 = 40 바이트의 ..
본 글에서는 네트워크 인터페이스의 MAC 주소 바이트열을 출력하는 구문을 간소화할 수 있는 매크로에 대해 소개한다. 보통 MAC 주소를 출력하고자 하는 경우 printf 문을 다음과 같은 형태로 작성할 수 있는데, 이 때 6 바이트 길이를 갖는 MAC 주소의 각 바이트를 출력하기 위해 작성 구문이 길어지게 된다. 출력 구문을 처음부터 끝까지 직접 작성하거나 복사-붙여넣기 후 수정할 수도 있는데, 둘 모두 편안하지는 않다. printf("MAC address - %02X:%02X:%02X:%02X:%02X:%02X\n", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]); 다음과 같이 매크로를 정의하여 출력 구문을 간소화 시킬 수가 있다. #include #i..