반응형
반응형
엔디안(Endianness)엔디안은 컴퓨터 메모리나 다른 데이터 포맷에서 다중 바이트 데이터를 메모리에 저장하거나 전송할 때, 바이트를 배열하는 방식을 말한다. 서로 다른 엔디안을 사용하는 시스템 간의 데이터 교환 시 각각의 시스템에 맞는 네트워크 바이트 순서로 변환해줘야 한다. 1. 빅엔디안(Big-endian) 데이터를 메모리의 가장 큰 주소부터 저장하는 방식이다. (큰 단위의 바이트가 메모리의 낮은 주소에 저장됨) ex) '0x12345678' 은 메모리에 [12 34 56 78] 순서로 저장 -> 네트워크 프로토콜, 특히 TCP/IP 스택은 빅엔디안을 사용한다.주소 1 | 0x12주소 2 | 0x34주소 3 | 0x56주소 4 | 0x78 2. 리틀엔디안(Little-endian) 데이터를 메모리..
1. 러스트 변수(Rust Variables)- 변수는 기본적으로 불변(immutable)이나, 필요에 따라 변수를 가변(mutable)로 만들 수 있다. 변수가 불변일 때, 어떤 이름에 한번 값이 묶이면 그 값은 바꿀 수 없다. 이를 테스트하기 위해 workspace 안에 variables라는 프로젝트를 만들어 보자.cargo new variables // variables 라는 프로젝트 생성cd variables/src // variables 디렉토리로 이동vi main.rc // src 디렉토리 내 main.rc 파일을 열어 코드 편집 아래의 프로그램을 작성하고 cargo run 명령어로 프로그램을 실행해보자. fn main() { let x = 5; println!("The value ..
오늘은 리눅스 커널 내 pr_debug를 활용해 디버깅 메시지를 출력하는 예제에 대해 써보려고 한다. 1. pr_debug 기본 사용법기본 사용법은 아래와 같고, 출력 메시지는 일반적으로 dmesg나 /var/log/messages를 통해 확인할 수 있다. 근데 CONFIG_DYNAMIC_DEBUG 또는 CONFIG_DEBUG가 활성화되지 않으면 아무 출력도 발생하지 않는다. (pr_debug 동작은 커널 설정(.config)에 의존한다.#include pr_debug("This is a debug message: variable=%d\n", my_variable); (1) CONFIG_DYNAMIC_DEBUG해당 컨피그가 활성화되면 디버깅 메시지가 동적으로 활성화/비활성화 가능하다. 디버깅 메시지를 런..
1. 카고(Cargo)란?카고는 러스트 빌드 시스템 및 패키지 매니저로 코드 빌드나 코드 작성에 필요한 외부 라이브러리(dependency)를 다운로드할 때나, 라이브러리를 제작할 때 겪는 귀찮은 일들을 줄여주는 도구이다. 아래의 명령어로 카고가 설치되어 있는지 확인해보자.cargo --version2. 카고로 프로젝트 생성하기본인이 원하는 디렉토리에서 아래의 명령어로 cargo 디렉토리 및 파일들을 생성해보자. hello_cargo 라는 이름으로 지정했고, 카고는 동일한 이름의 디렉토리 안에 파일들을 생성한다. hello_cargo 안으로 들어가 ls 명령어로 조회해보자.$ cargo new hello_cargo$ cd hello_cargo그럼 위와 같이 hello_cargo 안에 git, Cargo...
1. Rust 설치러스트 설치는 rustup이라는 러스트 버전 및 러스트 관련 도구를 관리하는 커맨드 라인 도구를 이용해 설치할 예정이다. 인터넷 연결이 되어있어야 하며, 쉘에서 아래의 명령어를 통해 rustup을 설치해주자. * 참고: https://rust-kr.org/pages/install/& curl https://sh.rustup.rs -sSf | sh -s 그럼 위와같이 rust가 설치될 것이다. rustc --version 명령어를 통해 나오는 결과를 통해 설치된 러스트의 버전과 hash, 커밋 날짜를 확인할 수 있다. 러스트가 컴파일 결과를 하나의 파일로 묶는데 사용하는 링커(linker)도 필요하므로, 함께 설치해준다. macOS에서는 아래의 커맨드로 C 컴파일러를 설치할 수 있다. 필..
TACACS+는 네트워크 장비에서 인증(Authentication), 권한 부여(Authorization), 계정 관리(Accounting)를 처리하는 프로토콜로 네트워크 운영 엔지니어라면 자주 접할 수 있는 프로토콜이다. 오늘은 Ubuntu에 TACACS+ 서버를 구축하고systemd 서비스 매니저 작성을 해보겠다. 1) TACACS+ 설치1. 먼저 github에서 tac_plus 를 설치한다.https://github.com/facebook/tac_plus.git 2. 아래 명령어를 통해 tacacs+ 를 설치한다.- configure가 실행되지 않는 경우 build-essential, libwrap0-dev, libpam0g-dev, libssl-dev 등과 같은 패키지가 필요할 수 있으니 필요하다..