기술 학습

소켓(Socket) 이란?

hawon6691 2026. 2. 9. 13:03
728x90

네트워크 통신을 공부하다 보면 가장 먼저 마주치는 벽이 바로 소켓(Socket)이죠. 쉽게 비유하자면 소켓은 "네트워크상의 두 프로그램이 대화를 나누기 위해 사용하는 전화기" 혹은 "데이터가 드나드는 연결 구멍"이라고 이해하시면 됩니다.


1. 소켓(Socket)이란?

컴퓨터 네트워크에서 소켓은 통신의 종착점(Endpoint)을 의미합니다.

우리가 친구에게 전화를 걸 때 상대방의 전화번호를 알아야 하듯, 네트워크 통신에서는 IP 주소(어느 컴퓨터인지)와 포트(Port) 번호(그 컴퓨터의 어떤 프로그램인지)가 필요합니다. 이 두 가지 정보가 결합되어 하나의 소켓을 형성합니다.

주요 특징

  • 추상화: 복잡한 네트워크 하부 계층(TCP/IP 등)을 몰라도, 소켓 API를 통해 데이터를 주고받을 수 있게 해줍니다.
  • 양방향성: 데이터를 보낼 수도, 받을 수도 있는 통로입니다.

2. 왜 사용하는가?

단순히 웹서핑을 하는 것(HTTP)을 넘어, 우리는 실시간으로 데이터를 주고받아야 할 때가 많습니다.

  1. 실시간 통신: 카카오톡 같은 채팅 앱, 온라인 게임처럼 지연 시간이 적고 즉각적인 데이터 교환이 필요할 때 필수적입니다.
  2. 연결 지향성: 한 번 연결을 맺으면 끊기 전까지 계속 통신할 수 있어, 반복적인 연결 설정 비용을 줄일 수 있습니다.
  3. 범용성: 운영체제나 프로그래밍 언어에 상관없이 표준화된 방식으로 통신할 수 있게 해줍니다.

3. 어떻게 사용하는가? (흐름도)

소켓 통신은 보통 클라이언트(요청자)서버(응답자) 모델로 작동합니다. 일반적인 TCP 소켓의 흐름은 다음과 같습니다.

서버 측 (Server)

  1. socket(): 소켓을 생성합니다.
  2. bind(): 생성한 소켓을 특정 포트 번호와 결합합니다.
  3. listen(): 클라이언트의 접속 요청을 기다리는 상태로 전환합니다.
  4. accept(): 접속 요청을 수락하고, 통신을 위한 새로운 전용 소켓을 만듭니다.
  5. read/write: 데이터를 주고받습니다.

클라이언트 측 (Client)

  1. socket(): 소켓을 생성합니다.
  2. connect(): 서버의 IP와 포트 번호로 연결을 시도합니다.
  3. write/read: 데이터를 주고받습니다.
  4. close(): 통신이 끝나면 소켓을 닫습니다.

요약

구분 설명
정의 네트워크 통신의 끝단(IP + Port)
목적 프로그램 간의 실시간/양방향 데이터 교환
핵심 요소 IP 주소, 포트 번호, 프로토콜(TCP/UDP)

소켓은 현대 인터넷의 근간이 되는 기술입니다.

728x90

'기술 학습' 카테고리의 다른 글

express로 socket 사용 방법  (0) 2026.02.09
소켓(Socket)과 패킷(Packet)의 관계  (0) 2026.02.09
Java 비동기  (0) 2026.02.05
TypeScript는 싱글 스레드  (0) 2026.02.05
NestJS와 Spring에 연관성  (0) 2026.02.05