리눅스 네트워크 프로그래밍 - UDP6(UDP over IPv6) 송수신 본 글에서는 리눅스 시스템 상에서 IPv6 프로토콜을 통해 UDP 데이터그램(이하 UDP6)을 송수신하는 프로그램의 작성 방법을 소개한다. UDP6(UDP over IPv6) 데이터그램 송신 프로그램 C 언어로 작성된 프로그램 상에서 UDP6 데이터그램을 송신하는 절차는 다음과 같다. 소켓을 연다 - socket() 시스템콜 호출. 소켓을 송신용 네트워크 인터페이스에 연결(bind)한다 - setsockopt() 시스템콜 호출. 목적지 정보(IPv6 주소, UDP 포트번호)를 설정한다. UDP 패킷을 전송한다 - sendto() 시스템콜 호출. 다음은 UDP6 데이터그램을 송신하는 예제 프로그램의 소스 코드이다. #include #..
본 글에서는 리눅스 시스템의 네트워크 인터페이스를 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 주소 길이..
본 글에서는 리눅스 시스템의 네트워크 인터페이스에 MAC 주소를 설정하는 프로그램을 작성하는 방법에 대해 설명한다. 프로그램 상에서 네트워크 인터페이스의 MAC 주소를 설정하는 기본 절차는 다음과 같다. socket() 함수로 네트워크 인터페이스에 대한 소켓 파일 디스크립터를 연다. struct ifreq 구조체 변수에 설정할 네트워크 인터페이스의 이름(예: eth0), 주소 등을 저장한다. ioctl() 함수의 SIOCSIFHWADDR 명령을 통해 네트워크 인터페이스를 설정한다. 다음은 C 언어로 작성된 예제 프로그램의 소스 코드이다. #include #include #include #include #include #include #include #include /// MAC 주소 길이 #define ..
본 글에서는 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 바이트의 ..
본 글에서는 리눅스 시스템의 각 네트워크 인터페이스에 IPv6 주소를 할당(추가)하거나 제거하는 프로그램을 작성하는 방법에 대해 설명한다. 본 글에서 다루는 IPv6 주소 할당 관련 기능은 다음과 같으며, 각 기능 별 예제 프로그램은 C 언어로 작성되었다. 네트워크 인터페이스에 IPv6 주소 할당(추가)하기 MAC 주소로부터 EUI-64 형식 Interface ID 생성하기 링크-로컬 IPv6 주소 할당하기 글로벌 IPv6 주소 할당하기 (Stateless Address Autoconfiguration) 네트워크 인터페이스에 할당된 IPv6 주소 제거하기 네트워크 인터페이스에 할당된 IPv6 주소(들)을 확인하는 방법은 아래 글에 설명되어 있다. 2020/02/08 - [프로그래밍/리눅스 프로그래밍] -..
본 글에서는 리눅스 시스템의 각 네트워크 인터페이스에 할당되어 있는 IPv6 주소(들)을 확인하는 프로그램을 작성하는 법에 대해 설명한다. 본 글에서 다루는 IPv6 주소 확인 관련 기능은 다음과 같으며, 각 기능 별 예제 프로그램은 C 언어로 작성되었다. 네트워크 인터페이스에 할당된 모든 IPv6 주소 확인하기 네트워크 인터페이스에 할당된 링크-로컬 IPv6 주소 확인하기 네트워크 인터페이스에 할당된 사이트-로컬 IPv6 주소 확인하기 네트워크 인터페이스에 할당된 글로벌 IPv6 주소 확인하기 네트워크 인터페이스에 할당된 루프백 IPv6 주소 확인하기 네트워크 인터페이스에 IPv6 주소를 할당(추기)하거나 제거하는 방법은 아래 글에 설명되어 있다. 2020/02/08 - [프로그래밍/리눅스 프로그래밍]..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.