Socket이란? 데이터를 주고받기 위한 엔드포인트를 의미한다.
일반적으로 인터넷 소켓은 Protocol, IP address, port number로 구성된다
Protocol : 다른 시스템과 원활한 통신을 위한 통신 규약 (https, http, tel, mailTo)
IP addr : Internet Protocol 통신을 위한 고유 식별번호 (192.168.~~)
port number : host별로 특정 서비스를 위해 지정되며, 단일 host 내에서 다른 서비스간 공유가 되지 않는다. (80 - HTTP, 22 - ssh, 443 - HTTPS)
그러면... 이러한 소켓의 종류는 뭐가 있을까?
1) Datagram Socket (UDP) 무연결 소켓
2) Stream Socket (TCP)
소켓 통신의 흐름은 다음과 같다

서버는 소켓을 생성한 후, 클라이언트의 요청을 대기한다. 그러다 요청이 오면 accept()함수를 사용해 요청을 승인하고 새로운 요청을 받을 준비를 한다.(쓰레드 풀 사용)
생성된 소켓은 클라이언트와 send/recv과정을 통해 데이터를 주고받은 뒤, close()를 통해 연결을 중단하고 쓰레드를 반납한다.