본문 바로가기
Network

[Network] TCP 소켓과 웹소켓

by clolee 2025. 2. 12.

TCP 소켓과 웹소켓: 통신 방식의 차이점

 

네트워크 통신에서 TCP 소켓과 웹소켓은 중요한 개념입니다. TCP 소켓은 서버와 클라이언트 간의 안정적인 데이터 전송을 보장하는 방식이며, 웹소켓은 기존 HTTP 프로토콜을 활용하여 실시간 양방향 통신을 제공하는 기술입니다. 이번 글에서는 TCP 소켓과 웹소켓의 차이점을 이해하고, 각각의 특징과 동작 방식을 자세히 살펴보겠습니다.

TCP 소켓이란?

TCP(Transmission Control Protocol) 소켓은 서버와 클라이언트 간의 연결을 설정하여 데이터를 안정적으로 송수신하는 프로토콜입니다. 연결을 위해 다음과 같은 과정이 필요합니다.

  1. 소켓 생성 및 연결
    • 서버는 특정 포트에서 listen() 상태로 대기합니다.
    • 클라이언트는 서버의 IP 주소와 포트를 지정하여 connect() 요청을 보냅니다.
    • 서버는 accept()를 호출하여 클라이언트의 연결 요청을 수락합니다.
  2. 데이터 송수신
    • 연결이 완료되면 send()와 recv()를 사용해 데이터를 주고받습니다.
    • TCP는 패킷 손실을 감지하면 재전송을 수행하여 신뢰성을 보장합니다.
  3. 연결 종료
    • 클라이언트나 서버가 close()를 호출하면 4-way 핸드셰이크를 통해 연결을 안전하게 해제합니다.

웹소켓이란?

웹소켓(WebSocket)은 기존 HTTP 프로토콜을 확장하여 클라이언트와 서버 간의 지속적인 양방향 통신을 가능하게 하는 기술입니다. TCP 소켓과 달리 HTTP 요청을 통해 초기 연결을 설정합니다.

  1. 초기 연결 (핸드셰이크 과정)
    • 클라이언트는 HTTP 요청을 보내는 방식으로 웹소켓 연결을 시도합니다.
    • HTTP 요청 헤더에 Upgrade: websocket을 포함하여 웹소켓 전환을 요청합니다.
    • 서버가 101 Switching Protocols 응답을 반환하면 웹소켓 연결이 설정됩니다.
  2. 데이터 송수신
    • 연결이 성공하면 클라이언트와 서버는 지속적으로 데이터를 주고받을 수 있습니다.
    • 웹소켓은 프레임 단위로 데이터를 전송하며, 텍스트 및 바이너리 데이터 전송이 가능합니다.
    • 클라이언트와 서버는 서로의 메시지를 실시간으로 수신할 수 있어 채팅 애플리케이션, 온라인 게임 등에 적합합니다.
  3. 연결 종료
    • 클라이언트 또는 서버가 close()를 호출하면 CLOSE 프레임을 보내어 웹소켓 연결을 닫습니다.

TCP 소켓과 웹소켓의 차이점

구분 TCP 소켓 웹소켓

연결 방식 소켓을 직접 생성하여 연결 HTTP 요청 후 웹소켓으로 전환
데이터 전송 바이트 스트림 전송 메시지 프레임 단위 전송
실시간성 별도 유지 로직 필요 실시간 양방향 통신 지원
활용 사례 파일 전송, 이메일, 스트리밍 실시간 채팅, 주식 거래, 게임

결론

TCP 소켓과 웹소켓은 모두 네트워크에서 데이터를 주고받는 데 중요한 역할을 합니다. TCP 소켓은 신뢰성 있는 데이터 전송을 보장하는 반면, 웹소켓은 HTTP 프로토콜을 활용하여 보다 간편하게 실시간 양방향 통신을 지원합니다. 각각의 특징을 이해하고, 필요에 따라 적절한 프로토콜을 선택하는 것이 중요합니다.

 

 

참고 : https://everyday-develop-myself.tistory.com/333

 

 

댓글