본문 바로가기
정리

socket과 webSocket

by dyddyd0 2025. 4. 17.

1. 소켓이란?

소켓(Socket)은 네트워크를 통해 데이터를 주고받기 위한 통신의 출입구임.

-

소켓은 컴퓨터 간의 통신에서 데이터를 송수신할 수 있는 도구

주로 IP 주소 + 포트 번호로 식별

소켓을 이용해 실시간 통신, 채팅, 게임, 파일 전송 등 다양한 네트워크 서비스를 구현할 수 있음

 

소켓의 종류로는 TCP 소켓과 UDP 소켓이 있음.

구분 TCP 소켓 UDP 소켓
연결 방식 연결 지향 (3-way handshake) 비연결 지향
데이터 전송 순서 보장, 손실 없음 순서 보장 안 됨, 손실 가능
속도 상대적으로 느림 빠름
신뢰성 높음 낮음
사용 예시 채팅, 파일 전송, 웹 서비스 실시간 스트리밍, 게임, 음성 통화

 

 

 

***********
*TCP 소켓*

***********

연결 과정 – 3-Way Handshake

TCP는 데이터 전송 전에 연결을 맺는 과정이 필요하다.
이를 3-way handshake라고 부름.

클라이언트 → 서버 : SYN (연결 요청)

서버 → 클라이언트 : SYN + ACK (요청 수락 및 응답)

클라이언트 → 서버 : ACK (응답 확인) → 연결 성립

 

이 과정을 거쳐 서버와 클라이언트가 신뢰할 수 있는 연결을 맺게 됨.

연결이 완료되면 데이터를 양방향으로 자유롭게 주고받을 수 있음.

 

그럼 TCP와 HTTP의 차이점은?

더보기

 

TCP

TCP는 전송 계층의 프로토콜로, 신뢰성 있는 양방향 연결을 제공함.

즉, 데이터를 보내고 받는 과정에서 "연결"을 형성하고, 데이터가 정확히 전송되었는지 확인하는 과정을 거친다.

이 과정에서 3-way handshake와 같은 연결 수립 과정이 필요하고, 데이터가 전달되었는지, 순서대로 도착했는지 등의 신뢰성 있는 보장을 제공함.

  • 연결: 클라이언트와 서버는 연결을 맺은 후 데이터를 주고받음.
  • 응답 확인: 송신한 데이터에 대해 수신 확인(ACK)을 받음.

 

HTTP

HTTP는 응용 계층의 프로토콜로, 주로 웹 페이지 요청과 같은 클라이언트-서버 간의 요청과 응답을 처리함.

HTTP는 stateless(상태 비유지) 프로토콜.

즉, 각 요청은 독립적으로 처리되고, 이전의 요청이나 응답 상태를 기억하지 않습니다. HTTP 통신이 이루어지기 전에 내부적으로 TCP 연결이 필요.

  • 요청-응답: 클라이언트는 서버에게 요청을 보내고, 서버는 그에 대한 응답을 반환함.
  • 상태 비유지: 이전 요청에 대한 정보는 서버나 클라이언트가 기억하지 않음.
    즉, 요청이 끝나면 연결이 종료.

결론적으로,

TCP는 연결을 유지하는 데 초점을 맞추고, 신뢰성 있는 데이터 전송을 제공.

HTTP는 요청-응답 기반으로 동작하는 애플리케이션 프로토콜이며,

HTTP 통신을 위해서는 먼저 TCP 연결이 이루어짐.

TCP는 HTTP 요청-응답과 매우 비슷하다. HTTP도 결국 TCP 연결을 통해 데이터가 주고받기 때문에.

 

HTTP는 TCP 위에서 동작하는 하나의 프로토콜.
HTTP 통신을 하기 위해서도 내부적으로 TCP 연결(3-way handshake 포함)이 필요하다.

 

 

************
*UDP 소켓*

************

연결 과정 없는 통신

UDP는 TCP처럼 3-way handshake 없이 바로 데이터를 전송.

  • 비연결 지향(Stateless) 프로토콜
  • 데이터를 보내는 쪽은 그냥 보냄, 받는 쪽은 열어두고 기다림
  • 연결을 맺지 않기 때문에 속도가 매우 빠름
  • 하지만 데이터 손실, 순서 뒤바뀜 등의 문제가 발생할 수 있음

UDP의 데이터 흐름

보내는 쪽: [목적지 IP][목적지 포트][데이터]

받는 쪽: 해당 포트를 열어놓고 데이터 수신 대기

 

"UDP는 신뢰성이 낮다"는 말의 의미는?

데이터 손실: 중간에 사라져도 재전송 안 함

순서 보장 없음: 보낸 순서와 다르게 도착 가능

수신 확인 없음: 받았는지 확인하지 않음

 

예시로

TCP: “안녕” → “안녕 잘 받았어!” (수신 확인 O)

UDP: “안녕” → (그냥 보냄, 상대방이 못 받았어도 모름)

Http: "웹페이지 요청" "웹페이지 응답"

 

TCP와 UDP 소켓 통신 방식 요약

항목 TCP 소켓 UDP 소켓
연결 방식 연결 지향 (3-way handshake) 비연결 지향
데이터 전송 순서 보장, 신뢰성 있음 빠름, 순서/신뢰성 없음
수신 확인 있음 (ACK) 없음
재전송 자동 재전송 없음
사용 예시 채팅, 메일, 파일 전송 게임, 영상, 음성통화 등

TCP소켓과 UDP소켓 요약

  • 소켓은 실시간 양방향 통신을 위한 네트워크 연결 지점이다.
  • TCP 소켓은 연결을 수립하고, 신뢰성 있게 데이터를 주고받는다.
  • UDP 소켓은 연결 없이 빠르게 데이터를 전송하지만 신뢰성이 낮다.
  • 사용 목적에 따라 적절한 소켓 방식을 선택해야 한다.
상황 추천 소켓
채팅, 웹 요청, 파일 전송  TCP
게임, 음성 통화, 영상 스트리밍  UDP

 


 

여기까지 소켓에 대해 알아봤다.

이제 웹소켓은 무엇이고 소켓과 차이점이 뭔가?

 

2. 웹소켓이란?

웹 브라우저와 서버 간에 지속적인 연결을 유지하면서 양방향 통신을 가능하게 해주는 프로토콜.

: 웹에서 실시간 양방향 통신을 가능하게 하는 응용 계층의 소켓기반 프로토콜.

 

  • HTTP handshake 이후, WebSocket 연결로 업그레이드됨
  • 한 번 연결하면 계속 연결 상태 유지
  • 양방향 통신(Bidirectional) 가능
  • 빠른 속도, 낮은 오버헤드, 실시간 통신에 적합

 

웹소켓(WebSocket)은 TCP 기반. 

  • WebSocket은 먼저 HTTP 프로토콜을 통해 연결을 시작(핸드셰이크)하고, 연결이 성립되면 TCP 위에서 지속적인 양방향 통신을 수행.
  • 덕분에 빠르고 안정적인 데이터 송수신이 가능. (신뢰성 있는 전송 보장)

 

웹소켓의 사용 예시는 여기

 

 

TCP/UDP 소켓과 , TCP기반의 웹소켓

 

 

3. Http vs Socket vs WebSocket

  HTTP Socket(tcp/udp) WebSocket
프로토콜 레벨 응용 계층 전송 계층 (TCP/UDP) 응용 계층 (HTTP 기반 업그레이드)
연결 유지 여부 요청 시마다 새 연결 TCP는 연결 유지 / UDP는 비연결 한 번 연결하면 지속 유지
통신 방식 요청-응답
(클라이언트 → 서버)
자유롭게 송수신 가능
(TCP/UDP에 따라 다름)
양방향
(클라이언트 서버 자유롭게 전송)
브라우저 사용 표준 직접 사용 어려움 (라이브러리 필요) JavaScript에서 지원
실시간성 낮음 TCP/UDP에 따라 다름 높음
사용 예시 웹페이지 로딩, API 호출 채팅, 스트리밍, IoT 등 네트워크 통신 전반 채팅 앱, 실시간 알림, 게임, 주식 등

 

 

 

반응형

'정리' 카테고리의 다른 글

MA와 MSA 아키텍처  (0) 2025.04.19
SSO에 대해 알아보자  (1) 2025.04.18
index의 개념  (0) 2025.04.16
CICD와 무중단 배포  (0) 2025.04.15
java, spring 개념 정리  (0) 2025.04.13