1. HTTP 프로토콜의 특징
클라이언트-서버 모델: HTTP는 클라이언트(주로 브라우저)와 서버 간의 요청-응답 방식으로 동작하며, 클라이언트가 요청을 보내면 서버가 응답을 반환하는 구조다.
무상태성 (Stateless): HTTP 요청은 개별적이며 서로 독립적이기 때문에, 각 요청 간의 상태를 유지하지 않는다. 즉, 이전 요청과 연결 없이 매번 새로운 요청으로 간주된다.
단순성: HTTP는 단순한 텍스트 기반의 요청-응답 구조로 구현이 쉽고, 다양한 REST API 및 웹 애플리케이션에서 기본으로 사용된다.
단방향성: 서버가 클라이언트에게 직접 데이터를 푸시할 수 없으며, 클라이언트가 요청을 보내야만 서버가 응답을 줄 수 있다.
Polling과 Long-polling: 서버에서 실시간 데이터를 얻기 위해 클라이언트는 HTTP Polling을 사용해 주기적으로 요청을 보내거나, Long-polling으로 서버 응답을 대기 상태로 유지하면서 데이터를 받는다. 하지만 이 방식은 리소스 소모가 크며 실시간성을 완벽히 만족시키지 못한다.
2. WebSocket 프로토콜의 특징
양방향 통신 (Duplex): WebSocket은 클라이언트와 서버가 서로 자유롭게 데이터를 주고받을 수 있는 전이중(Full-duplex) 통신을 지원한다. 클라이언트와 서버는 독립적으로 메시지를 보내고 받을 수 있다.
지속적인 TCP 연결: HTTP와 달리 WebSocket은 초기 연결 후 TCP 연결을 유지하여 추가적인 핸드셰이킹 없이 데이터 전송을 빠르게 수행할 수 있다. 초기에 한 번의 HTTP 핸드셰이크 후 연결 상태를 유지하면서 헤더 없이 순수 데이터만 교환하게 된다.
실시간성: WebSocket은 지속적인 연결을 통해 데이터가 준비되는 즉시 서버에서 클라이언트로 푸시할 수 있어, 실시간 데이터 전송에 탁월하다.
TCP 기반 프로토콜: WebSocket은 HTTP와는 다른 프로토콜(TCP)을 사용하여 데이터를 주고받기 때문에, 이를 위해 별도의 서버 구성이 필요할 수 있다.
데이터 효율성: WebSocket은 헤더 정보를 매번 첨부할 필요가 없고 데이터 프레임이 가볍기 때문에 데이터 전송 효율성이 높다. 그러나 순수 텍스트 및 바이너리 데이터만 전송되므로, JSON과 같은 형식으로 데이터를 구조화하려면 애플리케이션 레벨에서의 추가 작업이 필요하다.
3. HTTP 프로토콜과 WebSocket 프로토콜의 차이점

WebSocket은 실시간성과 양방향성으로 인해 실시간 채팅, 라이브 스트리밍, 알림 서비스 등 다양한 분야에서 활용되지만, 추가 서버 구성이 필요할 수 있으며, HTTP 대비 다루기 어려운 점도 있다.