기술 면접 정리

WebSocket 프로토콜

테오구 2022. 5. 1. 13:39
728x90

웹 소켓(Web Socket)이 있기까지

전형적인 브라우저 렌더링 방식은 HTTP 요청(HTTP Request)에 대한 HTTP 응답(HTTP Response)을 받아서 브라우저의 화면을 깨끗하게 지우고 받은 내용을 새로 표시하는 방식입니다. 내용을 지우고 다시 그리면 브라우저의 깜빡임이 생기게 됩니다.

보다 쉽게 상호작용하는 웹 페이지를 만들려면 브라우저와 웹 서버 사이에 더 자유로운 양방향 메시지 송수신(bi-directional full-duplex communication)이 필요합니다. 그래서 HTML5 표준안의 일부로 WebSocket API(이후 WebSocket)가 등장했습니다.

WebSocket 프로토콜

브라우저는 "Upgrade: WebSocket" 헤더 등과 함께 랜덤하게 생성한 키를 서버에 보냅니다. 웹 서버는 이 키를 바탕으로 토큰을 생성한 후 브라우저에 돌려줍니다. 이런 과정으로 WebSocket 핸드쉐이킹이 이루어집니다.

 

그 뒤 Protocol Overhead 방식으로 웹 서버와 브라우저가 데이터를 주고 받는다. Protocol Overhead 방식은 여러 TCP 커넥션을 생성하지 않고 하나의 80번 포트 TCP 커넥션을 이용하고, 별도의 헤더 등으로 논리적인 데이터 흐름 단위를 이용하여 여러 개의 커넥션을 맺는 효과를 내는 방식입니다.

Socket.io는 무엇인가?

JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술입니다. Socket.io는 WebSocket, FlashSocket, AJAX Long Polling, AJAX Multi part Streaming, IFrame, JSONP Polling을 하나의 API로 추상화한 것입니다.

 

728x90

'기술 면접 정리' 카테고리의 다른 글

알고리즘 이론 깨부수기 Binary Tree, Binary Search Tree,  (0) 2022.06.02
Socket.io와 Webksocket의 차이  (0) 2022.05.16
react vs next.js vs svelte  (0) 2022.05.08
2022년 04/27 면접 질문 정리  (2) 2022.04.27
XSS와 CSRF  (0) 2022.04.17