1. 개요
소켓(Socket)은 버클리 대학(University of California at Berkeley)에서 만들어져 1982년 BSD(Berkeley Software Distribution) UNIX 4.1에서 처음 소개되었으며 현재 널리 사용 되는 것은 1986년 BSD UNIX 4.3에서 개정된 것이다. 그래서 이 소켓을 BSD소켓 또는 버클리 소켓이라고 부르며 개발자는 이를 사용하여 네트워크 개발을 효율적으로 할 수 있다.소켓을 간단히 이해하기 위한 설명을 덧붙이면, 친구에게 택배를 보낸다고 했을 때, 상자에 보낼 물건을 넣고 나의 이름, 주소 등의 인적사항과 친구의 집 주소를 적어야 한다. 컴퓨터에서는 이 역할을 소켓이 해준다고 보면 된다.
윈도우에서는 95버전부터 API에 정식으로 포함하여 제공한다.
- 윈도우 소켓은 DLL을 통해 기능이 제공되므로 DLL 초기화와 종료 작업을 위한 함수가 필요하다.
- 효율적인 개발을 하기 위해 멀티스레드를 주로 사용한다.
- 윈도우 XP SP 2부터 RAW 소켓 지원이 중지되었다. 역으로 그 이하 운영체제에서는 사용이 가능하다.[1][2]
- 유닉스 소켓과 호환성이 높아 이식하여 활용하기가 편리하다.[3]
2. 프로그래밍
- 소켓을 이용한 TCP/ IP 프로그래밍을 소켓 프로그래밍이라고 한다. 일반적으로 소켓 프로그래밍 하면 유닉스/ 리눅스 환경을 가리키고, BSD 운영 체제에서 처음 소개되었으므로 BSD Socket이라고 표현한다. 윈도우 환경에서는 WinSock(Windows Socket)이라는 명칭을 따로 사용한다.
- IPC 기법 중 하나다.
3. 관련 문서
[1]
WinPcap를 사용하면 RAW소켓 개발이 가능해진다, 대표적인 프로그램으로는
Wireshark가 있다.
[2]
https://learn.microsoft.com/en-us/windows/win32/winsock/tcp-ip-raw-sockets-2
[3]
ifndef
를 적절히 활용하면 하나의 코드로 여러 운영체제에서 작동하도록
코딩하는게 가능하다.