소켓(Socket)의 개념(네트워크 소켓, 웹소켓)

LeeYulhee·2025년 2월 18일

👉 소켓(Socket)


  • 소켓은 단순히 ‘통신의 끝점(Endpoint)’
    • 소켓은 네트워크 상에서 두 개의 프로그램이 데이터를 주고받기 위한 논리적 연결 지점
    • 인터넷에서 브라우저가 웹 서버와 소통하거나, 메신저가 실시간 메시지를 주고받을 때 모두 소켓이 사용됨
  • 프로그램이 네트워크를 통해 데이터를 주고받을 때, 특정 주소(IP)와 포트(Port)를 이용하는데, 이를 관리하는 인터페이스가 소켓
  • 쉽게 말하면, 컴퓨터가 네트워크에서 다른 컴퓨터와 데이터를 주고받을 수 있도록 만들어진 창구라고 볼 수 있음
  • 프로그래밍에서 ‘소켓을 열고 데이터를 보내고 받는다’는 말은 네트워크 연결을 만들어서 데이터를 주고받는다는 뜻



👉 네트워크 소켓(Network Socket)


  • 소켓 개념을 네트워크 환경에서 확장한 것이 네트워크 소켓

  • IP 주소와 포트 번호를 조합하여 통신하는 통로

  • 네트워크 소켓을 이용하면 인터넷이나 로컬 네트워크에서 컴퓨터 간에 데이터를 주고받을 수 있음

  • 네트워크 소켓에는 크게 두 가지 방식이 있음

    • TCP 소켓(스트림 소켓, Stream Socket) : 데이터의 순서 보장 + 재전송 기능 → 신뢰성이 중요한 서비스(웹, 이메일, 파일 전송)
    • UDP 소켓(데이터그램 소켓, Datagram Socket) : 데이터 순서 미보장 + 빠른 전송 → 속도가 중요한 서비스(실시간 스트리밍, 온라인 게임)

  • 📡 통신 과정(TCP)

    1. 서버가 소켓을 생성하고 특정 포트에서 대기
      • 웹 서버가 80번 포트에서 클라이언트 요청을 기다림
    2. 클라이언트가 서버의 IP와 포트를 통해 연결 요청을 보냄
      • 브라우저가 https://www.example.com에 접속
    3. 서버가 연결 요청을 수락하면 TCP 연결이 확립됨
      • TCP 3-way handshake : SYN → SYN-ACK → ACK
    4. 데이터 송수신 진행(HTTP 요청/응답 등)
      • 클라이언트가 웹페이지 HTML 요청, 서버가 HTML 전송
    5. 통신 종료
      • 브라우저 탭을 닫거나 서버가 연결을 닫음

  • 네트워크 소켓(TCP)은 전화 통화와 같다고 볼 수 있음

    • 전화를 걸면 상대방이 받기 전까지 연결되지 않음
    • 연결되면 대화 가능하지만, 종료하면 다시 새로 연결해야 함



👉 웹소켓(WebSocket)


  • 웹소켓은 웹 환경에서 실시간 양방향 통신을 가능하게 해주는 프로토콜

    • 웹소켓은 처음 연결 시 HTTP 요청을 보내지만, 서버가 ‘101 Switching Protocols’ 응답을 반환하면 이후에는 자체 웹소켓 프로토콜을 사용하여 실시간 데이터를 송수신
  • 기존 HTTP는 요청-응답 방식이라 서버가 먼저 데이터를 보내기 어려웠음

    • 웹소켓은 서버와 클라이언트가 지속적으로 연결을 유지하면서 자유롭게 데이터를 주고받을 수 있음
  • 웹소켓은 네트워크 소켓의 한 종류로, 웹 환경에서 브라우저와 서버 간의 통신을 위해 최적화된 기술

  • 주로 채팅 서비스, 주식 거래, 실시간 알림, 게임 등 실시간 데이터 전송이 필요한 곳에서 사용

  • 📡 통신 과정(HTTP를 이용해 연결을 맺은 뒤, 실시간으로 데이터를 주고 받음)

    1. 클라이언트가 HTTP 요청을 보내면서 웹소켓 연결을 요청
      • ws://example.com:8080 또는 wss://example.com:443
    2. 서버가 웹소켓 연결을 승인(101 Switching Protocols 응답)
      • 이때부터 기존 HTTP 연결이 웹소켓 연결로 전환됨
    3. 서버와 클라이언트가 실시간으로 데이터를 주고받음
      • 채팅 메시지를 보내면 서버가 즉시 다른 사용자에게 전달
    4. 필요하면 연결을 유지하거나 닫을 수 있음
      • 사용자가 웹페이지를 닫으면 웹소켓 연결도 종료됨

  • 웹소켓은 카카오톡 단톡방과 같다고 볼 수 있음

    • 한 번 연결하면 계속 유지됨
    • 언제든지 메시지를 보낼 수 있고, 서버도 바로 응답할 수 있음



👉 네트워크 소켓과 웹소켓 차이


네트워크 소켓(Network Socket)웹소켓(WebSocket)
정의네트워크에서 IP와 포트를 이용해 통신하는 소켓웹 환경에서 실시간 양방향 통신을 가능하게 하는 프로토콜
프로토콜TCP 또는 UDP 사용독자적인 WebSocket 프로토콜 사용
연결 방식TCP : 연결 지향적(전화 통화처럼 연결 유지)
UDP : 연결 없이 데이터 전송 가능(무전기처럼 빠름)
초기 연결은 HTTP 요청으로 시작, 이후 연결을 유지하면서 실시간 데이터 전송 가능
데이터 송수신TCP : 안정적이지만 매번 요청 후 응답
UDP : 빠르지만 순서 보장 X
지속적인 연결 유지 + 서버와 클라이언트가 자유롭게 데이터 전송 가능
용도일반적인 네트워크 애플리케이션(웹, FTP, 게임 서버 등)웹 기반 실시간 애플리케이션(채팅, 주식, 알림, 게임)
브라우저 지원직접 사용 어려움(브라우저에서 네트워크 소켓을 다룰 수 없음)웹 브라우저에서 자바스크립트로 직접 사용 가능(WebSocket API)
profile
끝없이 성장하고자 하는 백엔드 개발자입니다.

0개의 댓글