웹소켓

HYEYOON·2021년 6월 28일
1

지금까지 서버와 클라이언트의 통신은 HTTP 프로토콜로만 이용해야하는줄 알았다.
하지만, 실시간 통신이 필요한 서비스에는 HTTP 프로토콜이 아닌 웹소켓 프로토콜을 사용하는것이 좋다고 들었다.
문서전달을 해주는 HTTP와 달리 웹소켓은 실시간 통신의 문제를 해결해준다. 웹소켓은 실시간 양방향 통신을 지원하며 한번 연결이 수립되면 클라이언트와 서버 모두 자유롭게 데이터를 보낼 수 있다. 채팅처럼

웹 소켓 특징

1. 양방향 통신

  • 데이터 송수신을 동시에 처리할 수 있다.
  • 통상적인 http 통신은 client가 요청을 보내는 경우에만 server가 응답하는 단방향 통신

2. 실시간 네트워킹

  • 웹 환경에서 연속된 데이터를 빠르게 노출
  • 채팅, 주식, 비디오 데이터

http -> https 처럼 ws -> wss 로 보안을 강화하여 사용할 수 있다.
포트는 80과 443포트를 사용한다.
연결 수립은 핸드쉐이크를 통해 이루어진다. 핸드쉐이크시 Http를 이용한다.

그림에서 볼 수 있는것과 같이 핸드쉐이크가 끝나면 HTTP 프로토콜을 웹소켓 프로토콜로 변환하여 통신하게 된다.

  • 핸드쉐이크 요청

    핸드쉐이크 요청을 할때 sec-websocket-key로 응답을 검증할 키를 보내고 서버는 그 키를 해싱하고 인코딩하여 보내고 핸드쉐이크 과정을 검증하고 핸드쉐이크가 종료되고 웹소켓 프로토콜을 통해 데이터 통신을 하게된다.
profile
Back-End Developer🌱

0개의 댓글