IOCP & Overlapped I/O (1) : 윈도우 소켓 입출력 모델을 사용한다는 것

이런 저런 채용공고를 둘러보다가
이런 개발 세상도 있구나~ 하고 잠깐 조사했다.


윈도우 운영체제에서 제공하는 기술이라 생소한 용어들이 많다.




윈도우의 소켓 입출력 모델을 사용한다는 것은?


윈도우는 다양한 소켓 입출력 모델을 제공한다.

- Select, WSAAsyncSelect, WSAEventSelect
- Overlapped(1), Overlapped(2)
- Completion Port


윈도우에서 제공하는 소켓 입출력 모델을 활용한다는 것은
새로운 전송 프로토콜을 작성하는 것이 아니다.

TCP나 UDP와 같은 전송 프로토콜은 유지하되,
종단에서 Socket(구조체/인터페이스)이
어떻게 데이터를 Read/Write 할 지
로직을 작성하는 것이다.

즉, 여기서 데이터를 인출하고, 데이터를 쓸 때의 효율을 따지는 과정이다.
많은 연결이 서버에서 이뤄지고 연결당 계산이 무거운 경우,
User 모드와 Kernel 모드에서 자원 분배가 효율적으로 이뤄진다면 ( CPU/메모리 )
Response time을 줄일 수 있다.



Raw Socket과 차이

앞서 설명한 소켓 입출력 모델의 전제는
소켓으로서 TCP 소켓이나 UDP 소켓을 사용한다는 것이다.

데이터를 전송할 때, 네트워크 계층을 내려가며
운영체제가 프로토콜 헤더를 붙여서 패킷을 제작한다.


Raw socket을 사용하면 애플리케이션 단에서
직접 프로토콜의 헤더 일부를 생성할 수 있다.

헤더 일부를 직접 생성함으로서
세부적으로 제어할 수 있지만 그만큼 동작이 복잡해진다.





댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code TIL 6 : 6장. 객체와 자료구조

백엔드 개발자가 Djnago fullstack 사이드 프로젝트를하며 ( html, css, vanillaJS 그리고 JS프레임워크 )