Web Socket과 HTTP 프로토콜 두 가지의 차이점

김재현·2025년 3월 11일

이번에 실시간 채팅을 구현하면서 저는 Firebase로 실시간 갱신을 시켜주는 형태를 띄는 채팅을 구현했지만 원래는 서버에서 어떻게 통신을 할까하여 궁금한 점을 구글링을 통해 이를 정리해 보겠습니다.

서버와의 통신

웹 애플리케이션 개발에서 클라이언트와 서버 간의 통신은 필수적인 요소인데 이를 위해 주로 사용되는 두 가지 프로토콜이 HTTP(HyperText Transfer Protocol)와 웹소켓(WebSocket)입니다.

HTTP 프로토콜 통신

  • 기존에는 HTTP 프로토콜 통신이란 HTML 파일을 전송하는 프로토콜의 의미를 가졌다.(Hyper Text Transfer Protocol)

  • 웹 브라우저에서의 통신은 초기 대부분 HTML 파일을 전송하는 목적이였기 때문이었는데 현재는 JSON, Image 등 다양한 형식의 파일들을 전송할 수 있습니다.

  • HTTP 통신은 클라이언트에서 서버로 요청을 보내고, 서버가 이에 응답하는 방식으로 통신이 이루어집니다. 여기서 응답은 클라이언트의 요청에 따른 결과를 반환한 것입니다. (단방향 통신)

  • 서버의 응답에는 응답 코드(202, 404 ...)가 같이 전송되며 사용자는 응답 코드와 메시지 응답으로부터 오는 메시지 바디를 통해 요청 값을 전달 받습니다.


WebSocket(웹소켓)

  • 웹소켓(Web Socket) 프로토콜은 HTTP와는 다른 통신 프로토콜로 웹 서버와 웹 브라우저가 서로 실시간 메시지를 교환하는 데 사용됩니다.

  • 웹소켓은 연결을 위한 첫 번째 핸드셰이크를 주고 받은 이후 지속적으로 연결이 유지되는 것이 특징이며 매번 메시지 전송 시에 새롭게 연결을 맺을 필요가 없어 빠르고 효율적입니다.

  • 웹소켓을 이용한 실시간 통신 구현은 클라이언트와 서버 모두에서 웹소켓 API를 사용하여 이루어집니다. 클라이언트는 JavaScript의 WebSocket 객체를 사용하여 서버와의 연결을 수립하고 서버는 웹소켓 프로토콜을 지원하는 라이브러리를 이용하여 이를 처리합니다.

  • 웹소켓은 TCP 소켓과 이름만 유사할 뿐 브라우저의 소켓이며 웹소켓 프로토콜은 HTTP와 동일하게 애플리케이션 계층에서 동작합니다. 그리고 평문 메시지 전송 방식이므로 SSL/TLS 보안 계층으로 암호화되어야 데이터 탈취를 방지할 수 있습니다.

  • 웹소켓은 사용할 때는 네트워크 지연시간, 데이터 압축, 보안 등을 고려하여 애플리케이션의 요구 사항에 맞게 세심하게 설계되어야 합니다.

두 가지 프로토콜의 차이점?

여기서 두 가지 프로토콜의 차이점이 있는데 HTTP는 요청/응답(Request/Response) 모델을 기반으로 하는 비연결성(단방향) 프로토콜 입니다. 클라이언트가 서버에 요청을 보내고, 서버는 이에 대한 응답을 보내줍니다. HTTP는 각 요청이 독립적이며 상태를 유지하지 않기 때문에 이러한 형태를 띄고 있다고 합니다. 반면 웹소켓은 클라이언트와 서버 간에 지속적인 연결을 유지하는 양방향 통신 프로토콜입니다. 이를 통해 실시간으로 데이터를 주고 받을 수 있습니다. (아무래도 채팅을 구현하기에는 웹소켓이 더 적당하지 않을까 생각합니다.)


차이점 정리

HTTP

  • 비연결성(단방향) 프로토콜로 각 요청이 독립적이며 상태를 유지하지 않음
  • 매번 연결을 맺고 끊는 과정의 비용이 많이듭니다.
  • 요청(Request) - 응답(Response)의 구조를 지닙니다.
  • 기본적인 웹 애플리케이션에 적합

웹소켓

  • 연결성(양방향) 프로토콜로 클라이언트와 서버 간에 지속적인 연결을 유지하는 통신 프로토콜
  • 한번 연결을 맺은 뒤 계속 유지되는 실시간성을 보장합니다.
  • 연결지향적인 특징을 지닙니다.
  • 실시간 통신이 필요한 애플리케이션에 필수적

.
.
.

(번외) TCP/IP 소켓과 웹소켓의 차이

TCP/IP Socket

  • 네트워크상 서버와 클라이언트 두 개의 프로그램이 특정 포트를 통해 양방향 통신이 가능하도록 만들어주는 소프트웨어 장치입니다.

  • intranet 바운더리(조직 내 네트워크)에서 작업하는 경우에는 해당 네트워크의 컴퓨터를 제어하고 TCP 연결에 적합한 포트를 열 수 있기 때문에 TCP 소켓을 통해 통신하는 것이 더 쉽습니다.

  • TCP/IP Socket은 인터넷을 통한 통신을 위한 프로토콜이기 때문에 소켓을 이용하여 양 끝단의 IP/Port 번호를 이용해 연결을 수립하고 데이터를 주고 받고 데이터의 신뢰성을 보장합니다.

  • 하나의 TCP 접속에 있는 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜입니다.

Web Socket

  • HTTP 프로토콜 위에 실시간 양방향 통신 기능을 추가한 프로토콜로 ws/wss 프로토콜 위에서 동작합니다.

  • 웹소켓은 HTTP에서 실시간 통신을 할 수 없다는 문제를 해결하기 위해 나온 기술로 HTTP의 헤더를 업그레이드해서 동작하기 때문에 서버나 클라이언트는 전이중 양방향 통신을 수행하며 언제든지 메시지를 보낼 수 있다.

  • 웹소켓은 연결지향으로 한 번 연결을 맺은 뒤 유지되며 핸드쉐이크 과정에서는 헤더의 비중이 크지만, 한 번 연결이 되면 간단한 메시지들만 오고가기에 굉장히 경제적입니다.

  • HTTP나 HTTPS 위에서 동작하도록 설계되었으며 포트를 80번, 443번 사용합니다.


참고

https://velog.io/@sangje112/http-vs-WebSocket-http-%ED%86%B5%EC%8B%A0%EA%B3%BC-WebSocket%EC%9D%98-%EC%9E%A5%EB%8B%A8%EC%A0%90

https://jerecord.tistory.com/155

0개의 댓글