Socket

JooH·2025년 2월 18일

네트워크

목록 보기
1/15

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) 무연결 소켓

  • 해당 소켓에서 보내거나 받은 Packet은 개별 주소가 지정되고 라우팅 된다
  • 순서와 신뢰성이 보장되지 않는다, 따라서 랜덤하게 도착하거나 도착하지 않을 수 있다

2) Stream Socket (TCP)

  • 오류가 없이 데이터를 전송하며, Packet의 순서와 흐름제어를 보장한다
  • 일반적으로 TCP/IP를 사용하여 통신한다
  • 송신된 순서에 따라 중복되지 않게 데이터를 수신하니까 overhead가 발생한다

소켓 통신의 흐름은 다음과 같다

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

0개의 댓글