개요 C언어에서 서로 다른 크기를 가진 자료형을 비트 연산할 때 생길 수 있는 문제와 해결 방법을 정리했다. 본 글은 이전에 작성했던 “C언어 매크로 재정의 오류 원인과 해결 방법”과 이어진다. 중제목 문제 상황 문제 원인 문제 해결 참고자료
[C언어] 매크로 재정의 오류 원인과 해결 방법 (GCC 전처리기 기준)
실행 환경 OS: Ubuntu 22.04 Architecture: x86_64 (64-bit) GCC: 11.4.0 요약 동일한 이름의 매크로를 서로 다른 방식으로 정의하면 GCC 전처리기가 두 매크로를 동일하지 않은 토큰으로 판단해 redefined 오류가 발생한다. 안전하게 프로그램을 설계하려면 #ifndef 전처리기 사용 또...
생각 많은 ISTJ 개발자가 구글 캘린더를 활용하는 방법
개요 구글 캘린더로 일정과 할 일을 관리하는 방법을 정리했다. 평소에 생각이 많다보니 생각을 정리하는 나름의 체계를 갖추고자 했다. 단순히 일정을 기록하는 것이 아니라, 머릿속을 비워두기 위한 시스템으로서의 캘린더 사용법이다. 일정 관리 구글 캘린더에서는 목적에 맞는 캘린더를 생성하는 것이 가능하다. 전체 캘린더에 표시되는 블럭을 색깔로 구분할 ...
[AWS] EC2 인스턴스 ssh 키 없이 터미널 접속하는 방법 (AWS Session Manager)
개요 AWS EC2 인스턴스에 접속할 SSH 키가 없는 경우, Session Manager를 이용해서 터미널에 접속하는 방법을 소개한다. 문제 상황 개인 목적으로 EC2 인스턴스 1대를 운영하고 있다. 평소에 SSH 키를 이용해서 터미널에 접속했다. crontab을 수정할 일이 생겼는데, 메인 PC는 물리적으로 사용할 수 없는 위치에 있었고, ...
LLR, CSF, RDI 개념 정리
LLR(Link Ross Return) LLR은 한쪽 포트에서 송신부(TX) 신호가 꺼졌을 때, 상대편 포트에도 동일하게 Link Down 상태를 반영해주는 기능이다. 한쪽 방향만 죽어있는 비대칭 링크 상태를 방지하고, 양단이 동시에 링크 다운을 인지하도록 하기 위해서 사용한다. LLCF와 다른 점은 LLCF는 수신부(RX) 장애를 반대편으로 전달...
LLCF 개념 및 장애 전파 작동 원리
LLCF 개념 LLCF(Link Loss Carry Forward)는 네트워크 장비에서 한쪽 링크에 장애가 발생할 경우, 연결된 반대편 포트에도 링크 다운 상태를 전파하여 장애를 신속하게 인지하고 대체 경로로 트래픽을 우회하도록 돕는 기능이다. 네트워크 장비는 한쪽 인터페이스의 수신부(RX)에서 Link Down을 감지하면, 같은 장비의 송신부(...
C언어 서로 다른 구조체 포인터 캐스팅의 원리
개요 C언어에서 서로 다른 구조체 포인터를 캐스팅할 때의 작동 원리를 정리한다. 이를 통해 C에서도 구조체 레이아웃을 이용해 객체 지향 언어의 ‘업캐스팅’과 유사한 동작을 구현할 수 있음을 확인할 수 있다. 분석 대상 코드 구조체 정의 서로 다른 멤버를 가진 구조체가 있다고 하자. typedef struct parent_s { str...
ARP 개념 정리
ARP란? ARP(Address Resolution Protocol)은 목적지 IP 주소의 MAC 주소를 알아내기 위한 프로토콜이다. ARP를 사용하는 이유는 로컬 네트워크(LAN)에서 단말끼리 통신을 하기 위해서는 목적지 IP 주소와 MAC 주소를 함께 이용해야 하기 때문이다. 같은 IP 대역을 공유하는 LAN에서는 L2 스위치 하나에 여러 컴퓨...
L3 IP Packet
L3 IP Packet 패킷(Packet)은 3계층에서 사용하는 단위 데이터를 의미한다. 패킷은 Header와 Payload로 구성되어 있다. 패킷의 크기는 Header와 Payload를 합친 것인데, 패킷의 최대 크기는 MTU(Maximum Transmission Unit)라고 한다. 이더넷(ethernet) 기준으로는 1500바이트(1.4kb)이...
IPv4 주소의 기본 구조
IP 주소의 구조 OSI 7계층에서 3계층에 해당하는 IP(Internet Protocol)은 32비트의 주소 체계를 갖는다. IP 주소는 3계층에서 네트워크에 연결된 수 많은 컴퓨터들 중에서 특정한 컴퓨터를 알아내기 위해 사용하는 주소이다. 32비트는 8비트 4개가 모여있는 것인데, IP 주소는 8비트 단위로 쪼개서 사용한다. 8비트는 총 $2^...