[Back-end] 웹 소켓

Geun·2022년 5월 8일
0

Back-end

목록 보기
74/74

웹소켓 프로토콜

웹소켓은 HTTP와 같은 OSI 모델의 7계층에 위치하는 프로토콜이며, 4계층의 TCP에 의존한다.

HTTP 프로토콜에서 http를 이용하는 것처럼
웹소켓에서는 ws를 이용한다.
보안을 강화한 https와 같이 wss를 사용할 수 있다.


웹 소켓 핸드쉐이크

Handshake는 한 번의 HTTP 요청과 HTTP 응답으로 이루어진다.
핸드쉐이크가 끝나면 HTTP 프로토콜을 웹소켓 프로토콜로 변환하여 통신을 하는 구조이다.

핸드쉐이크는 먼저 클라이언트가 HTTP로 웹소켓 연결 요청을 하면서 시작된다.
웹소켓 연결 요청에는 Connection:UpgradeUpgrade:websockert 헤더를 통해 웹소켓 요청임을 표시한다.


문제점

  • 프로그램 구현에 많은 복잡성을 만들 수 있다.
    웹 소켓은 HTTP와 다르게 Stateful protocol이기 때문에 서버와 클라이언트 간의 연결을 항상 유지해야 한다. 비정상적으로 연결이 끊어졌을 때 적절하게 대응해야한다.

  • 서버와 클라이언트 간의 Socket 연결을 유지하는 것 자체가 비용이 든다.
    특히 트래픽 양이 많은 서버의 경우 CPU에 큰 부담을 줄 수 있다.

  • 오래된 버전의 웹 브라우저에서는 지원하지 않는다.


사용 예시

  • 페이스북과 같은 SNS APP
  • LOL같은 멀티플레이 게임
  • 위치기반 APP
  • 증권 거래 정보사이트 및 APP
  • 화상채팅 APP
  • 구글 Doc처럼 여러명이 동시에 수정할 수 있는 Tool

참고자료

https://tecoble.techcourse.co.kr/post/2020-09-20-websocket/
https://choseongho93.tistory.com/266

0개의 댓글