728x90 반응형 네트워크 프로그래밍7 리눅스 IPC(프로세스 간 통신) 기법: Pipe, FIFO, 메시지 큐, 공유 메모리, 소켓의 원리와 활용 리눅스에서 IPC(Inter-Process Communication, 프로세스 간 통신)은 서로 다른 프로세스가 데이터를 주고받고 협력할 수 있도록 하는 기술입니다.운영체제에서 프로세스는 독립적인 주소 공간을 가지므로, 기본적으로 하나의 프로세스에서 다른 프로세스의 메모리에 접근할 수 없습니다. 따라서 파이프, 공유 메모리, 메시지 큐, 소켓 등의 IPC 기법을 활용하여 데이터를 교환해야 합니다.이번 글에서는 리눅스에서 제공하는 주요 IPC 기법을 개념부터 코드 예제까지 자세히 다뤄보겠습니다.1. IPC(프로세스 간 통신)의 필요성운영체제에서 멀티프로세스 환경은 일반적이며, 개별 프로세스 간 협업이 필요할 때 IPC를 사용합니다.✅ IPC의 주요 사용 사례부모-자식 프로세스 간 데이터 공유독립적인 프로세.. 리눅스 시스템 및 네트워크 프로그래밍/시스템 프로그래밍 2025. 2. 3. Raw Socket: 네트워크 패킷의 세부 제어와 응용 네트워크 프로그래밍에서 Raw Socket은 매우 중요한 역할을 하며, 고급 네트워크 애플리케이션을 구현하는 데 유용한 도구입니다. 일반적인 소켓은 애플리케이션 계층에서 데이터를 주고받지만, Raw Socket은 네트워크 계층에서 직접 데이터를 송수신할 수 있어, 패킷의 헤더를 직접 구성하고 처리할 수 있는 강력한 기능을 제공합니다. 이 포스팅에서는 Raw Socket의 개념, 사용 방법, 그리고 실질적인 활용 사례를 다루어 보겠습니다.1. Raw Socket의 개념Raw Socket은 TCP나 UDP와 같은 전송 계층 프로토콜을 사용하지 않고, 네트워크 계층에서 IP 패킷을 직접 처리할 수 있는 소켓 유형입니다. 일반적인 소켓이 애플리케이션과 전송 계층에서 데이터를 주고받는 반면, Raw Socket은.. 네트워크 이론과 응용/소켓 통신 및 네트워크 기초 2025. 2. 3. 바이트 오더(Byte Order)와 엔디언(Endian) 컴퓨터 시스템에서 데이터를 저장하고 전송하는 방식은 하드웨어 아키텍처에 따라 다를 수 있습니다. 그 중 하나가 바이트 오더(Byte Order), 또는 엔디언(Endian)이라고 불리는 개념입니다. 엔디언은 멀티바이트 데이터를 메모리에 저장하거나 네트워크를 통해 전송할 때, 각 바이트를 저장하는 순서에 대한 규칙을 정의합니다. 이 개념은 네트워크 프로그래밍이나 다양한 시스템 간 데이터 전송에서 매우 중요한 요소로 작용합니다.1. 바이트 오더(Byte Order)란?바이트 오더는 여러 바이트로 구성된 데이터(예: 32비트 정수, 64비트 실수 등)를 메모리 상에 어떻게 배치할 것인가에 관한 규칙을 정의합니다. 일반적으로 컴퓨터에서 숫자는 바이트 단위로 저장되며, 다중 바이트 데이터를 메모리에 저장할 때 바.. 네트워크 이론과 응용/소켓 통신 및 네트워크 기초 2025. 2. 2. 소켓과 포트의 역할과 기본 개념 소켓(Socket)은 네트워크 프로그래밍에서 데이터 전송을 위한 끝 지점(End Point)을 정의하는 중요한 요소입니다. 소켓은 두 시스템 간에 데이터를 송수신하는 경로를 형성하는 기본적인 인터페이스로, 프로세스들이 네트워크를 통해 상호 작용할 수 있게 해줍니다. 소켓을 사용하면 하나의 프로세스에서 다른 프로세스로 데이터를 보내거나 받을 수 있습니다.1. 소켓의 기본 개념소켓은 네트워크 주소와 포트 번호를 결합하여 데이터를 송수신하는 수단을 제공합니다. 네트워크 주소는 보통 IP 주소를 의미하며, 포트 번호는 네트워크에서 여러 서비스가 동시에 실행될 수 있도록 각 서비스의 식별자를 지정합니다.소켓은 크게 스트림 소켓(Stream Socket)과 데이터그램 소켓(Datagram Socket)로 나눌 수 .. 네트워크 이론과 응용/소켓 통신 및 네트워크 기초 2025. 2. 2. 논블로킹 소켓과 멀티플렉싱: select, poll, epoll 비교 네트워크 프로그래밍에서 다수의 클라이언트를 효율적으로 처리하는 것은 매우 중요한 과제입니다. 기본적인 블로킹(Blocking) 방식은 클라이언트의 요청을 처리하는 동안 다른 클라이언트의 요청을 받을 수 없다는 단점이 있습니다. 이를 해결하기 위해 논블로킹(Non-blocking) 소켓과 멀티플렉싱(Multiplexing) 기법이 사용됩니다.이번 글에서는 논블로킹 소켓의 개념을 이해하고, 이를 활용한 멀티플렉싱 기법인 select(), poll(), epoll()의 차이점을 비교하며, 각 기법을 적용한 코드 예제를 소개하겠습니다.1. 블로킹과 논블로킹 소켓이란?1.1 블로킹 소켓(Blocking Socket)기본적으로 소켓은 블로킹(Blocking) 방식으로 동작합니다. 즉, recv(), send(), .. 리눅스 시스템 및 네트워크 프로그래밍/네트워크 프로그래밍 2025. 2. 2. UDP 소켓 프로그래밍 기초: 서버와 클라이언트 구현하기 2025.02.01 - [네트워크 프로그래밍] - TCP 소켓 프로그래밍 기초: 서버와 클라이언트 구현하기 TCP 소켓 프로그래밍 기초: 서버와 클라이언트 구현하기네트워크 프로그래밍에서 가장 기본적인 개념 중 하나는 TCP 소켓 프로그래밍입니다. TCP는 신뢰성 있는 데이터 전송을 보장하는 연결 지향 프로토콜로, 서버와 클라이언트 간의 안정적인 통신을roblogs.tistory.com TCP 소켓 프로그래밍에 이어 이번 글에서는 UDP(User Datagram Protocol) 소켓 프로그래밍에 대해 다룹니다. UDP는 TCP와 달리 연결을 설정하지 않고 데이터를 빠르게 전송하는 특징이 있습니다. 이를 통해 실시간 데이터 전송이나 경량 네트워크 애플리케이션에 적합한 프로토콜입니다. 본 글에서는 UDP 소.. 리눅스 시스템 및 네트워크 프로그래밍/네트워크 프로그래밍 2025. 2. 2. TCP 소켓 프로그래밍 기초: 서버와 클라이언트 구현하기 네트워크 프로그래밍에서 가장 기본적인 개념 중 하나는 TCP 소켓 프로그래밍입니다. TCP는 신뢰성 있는 데이터 전송을 보장하는 연결 지향 프로토콜로, 서버와 클라이언트 간의 안정적인 통신을 가능하게 합니다. 이번 글에서는 TCP 소켓의 개념을 설명하고, C 언어를 이용해 간단한 서버와 클라이언트를 구현하는 방법을 소개합니다.1. TCP 소켓이란?TCP(Transmission Control Protocol)는 데이터의 순서와 무결성을 보장하는 프로토콜입니다. 이를 구현하기 위해 운영체제는 소켓(Socket)이라는 개념을 제공합니다. 소켓은 네트워크를 통해 데이터를 송수신하는 엔드포인트 역할을 하며, 두 개의 소켓이 연결되면 데이터를 주고받을 수 있습니다.2. TCP 서버와 클라이언트의 동작 방식TCP 기.. 리눅스 시스템 및 네트워크 프로그래밍/네트워크 프로그래밍 2025. 2. 1. 이전 1 다음 💲 추천 글 728x90 반응형