HTTP VS WebSocket

김승현·2024년 3월 6일
0

WebSocket

  • Socket Connection을 유지한 채로 실시간으로 양방향 통신 혹은 데이터 전송이 가능한 프로토콜이다.
  • 채팅 어플리케이션, SNS, 구글 Docs 등 많은 분야에서 사용되고 있다.

HTTTP와의 차이

  • HTTP는 단방향 통신이였다. 클라이언트에서 서버로 Request를 보내면 서버는 클라이언트로 Response를 보내는 방식으로 동작한다. 또한 HTTP는 기본적으로 무상태(Stateless)이므로 상태를 저장하지 않는다.
  • 하지만 웹소켓은 양방향 통신으로 연결이 이루어지면 클라이언트가 요청하지 않아도 서버에서 일방적으로 클라이언트로 데이터를 보낼 수 있다.
  • 웹소켓은 HTTP와 다르게 상태(Stateful) 프로토콜이다. 즉, 클라이언트와 서버가 한 번 연결되면 같은 연결을 이용해 통신하므로 TCP 커넥션 비용을 아낄 수 있다.
  • Connection을 유지하고 있는 동안 request-response 방식의 통신이 아닌 양방향의 실시간 데이터 통신이 가능하다.

WebSocket의 동작 방식

  • WebSocket은 HTTP 포트 80, HTTPS포트 443 위에서 동작한다.
  • 즉, 최초 접속시에는 HTTP 프로토콜을 이용한 핸드셰이킹을 통하여 연결을 맺는다. 이때 HTTP 업그레이드 헤더를 사용하여 HTTP 프로토콜에서 WebSocket 프로토콜로 변경한다.
  • 이후 연결이 맺어지면 어느 한쪽이 연결을 끊지 않는 이상 영구적인(persistent) 동일한 채널이 맺어지고, HTTP 프로토콜이 WebSocket 프로토콜로 변경된다.
  • 이때 데이터를 암호화하기 위해 WSS 프로토콜 등을 이용할 수도 있다.
profile
개발자로 매일 한 걸음

0개의 댓글