1. 동기 vs 비동기 I/O 비교동기 I/O 모델은 I/O 작업이 완료될 때까지 호출 스레드가 차단된다.구현이 단순하지만 확장성에 제한이 있다. ex) 동기 소켓 통신 코드// 동기 소켓 통신 예시 (개념적 의사코드)socket = createSocket();connect(socket, serverAddress); // 연결될 때까지 차단send(socket, data); // 데이터가 전송될 때까지 차단response = receive(socket); // 응답을 받을 때까지 차단 비동기 I/O 모델은 I/O 요청 후 즉시 제어를 반환하고, 작업 완료 시 알림을 받는다.복잡하지만 높은 확장성과 처리량을 제공한다. ex) 비동기 소켓 통신 코드// 비동기 소켓 통신 예시 (개념적 의사코드)socket ..
1. IOCP란?IOCP(Input/Output Completion Port)는 Windows 환경에서 제공하는 고성능 비동기 입출력 처리 메커니즘이다.다수의 I/O 요청을 효율적으로 처리하기 위해 설계된 API이다. IOCP는 커널 레벨에서 I/O 작업 완료를 관리하는 큐 시스템이다.이 큐는 비동기 I/O 작업이 완료될 때 알림을 대기 중인 스레드에게 효율적으로 전달한다. IOCP의 핵심 목적은 다중 스레드 환경에서 최소한의 스레드로 최대한의 I/O 처리량을 달성하는 것이다. 2. IOCP의 구조2.1. 완료 포트 객체의 구조완료 포트는 커널 객체로 다음 주요 구성 요소를 포함한다.완료 패킷 큐: I/O 작업 결과를 저장하는 FIFO 큐대기 스레드 목록: 완료 패킷을 기다리는 스레드 목록동시성 한도:..
1. Overlapped I/O1.1. Overlapped I/O란Overlapped I/O는 Windows 운영체제에서 제공하는 비동기 입출력 메커니즘이다.하나의 스레드가 여러 I/O 작업을 동시에 진행할 수 있게 해준다. 이름에서 알 수 있듯이, Overlapped는 여러 I/O 작업이 시간적으로 겹쳐서 실행됨을 의미한다.Overlapped I/O의 핵심은 I/O 요청을 시작한 후 결과를 기다리지 않고 다른 작업을 수행할 수 있다는 점이다. 1.2. Windows에서의 Overlapped I/OOverlapped I/O는 Windows 운영체제의 핵심 기능 중 하나로, Win32 API에서 제공된다. Windows의 I/O 모델은 크게 동기식, 비동기식(Overlapped), 그리고 비동기 완료 통지..
1. Blocking vs Non-Blocking 소켓1.1. Blocking 소켓기존의 소켓은 기본적으로 Blocking 방식으로 동작한다. 특징: - accept(), connect(), send(), recv() 등의 함수 호출 시 작업이 완료될 때까지 대기 - 작업이 완료되기 전까지는 다른 작업을 수행할 수 없음 - 네트워크 지연이 발생할 경우 전체 프로그램이 블로킹될 수 있음 1.2. Non-Blocking 소켓Non-Blocking 소켓은 Blocking 방식의 단점을 해결하기 위해 도입되었다. 특징: - 소켓 작업의 즉시 반환 - 다른 작업과 병행 처리 가능 - 프로그램의 반응성 향상 2. Non-Blocking 소켓의 동작 방식즉시 반환 특성 - Non-Blocking 소켓..
1. 주소 체계int socket(int af, int type, int protocol);af에 지정하는 주소체계 1.1. 옵션IPv4 (AF_INET) - 32비트 주소 체계 - sockaddr_in 구조체 사용 IPv6 (AF_INET6) - 128비트 주소 체계 - sockaddr_in6 구조체 사용 1.2. 바이트 순서변환 함수: htons() : 호스트에서 네트워크 순서로 (short) htonl() : 호스트에서 네트워크 순서로 (long) ntohs() : 네트워크에서 호스트 순서로 (short) ntohl() : 네트워크에서 호스트 순서로 (long) 2. 소켓 종류int socket(int af, int type, int protocol);type에 지정하..
1. UDP란?UDP(User Datagram Protocol)는 비연결 지향적이고 신뢰성이 없는 프로토콜이다. 특징 : - 비연결성: 데이터 전송 전 연결 설정 불필요 - 비신뢰성: 데이터 손실, 중복, 순서 오류 가능성 있음 - 빠른 전송: 연결 설정, 오류 검출, 재전송 등의 오버헤드가 없음 - 메시지 경계 유지: 송신한 메시지 단위 그대로 수신 - 브로드캐스트와 멀티캐스트 지원 UDP는 TCP와 달리 서버와 클라이언트가 연결되지 않는 비연결 지향 통신이다. 2. UDP 구현 순서UDP 서버 구현 순서 : 1) 소켓 생성2) 소켓 바인딩3) 데이터 수신 및 송신 UDP 클라이언트 구현 순서 : 1) 소켓 생성2) 데이터 송신 및 수신 소켓을 연결하는 과정이 없어 TCP에 비해 단순하..