데이터 파이프라인

[Web Socket] 웹 소켓 정리

Alex, Yoon 2022. 8. 6. 14:27

서버와 클라이언트의 통신이 모두 HTTP 프로토콜만 이용해서 이루어지지는 않는다.

주로 채팅, 게임, 주식 차트 등 '실시간 통신이 필요한 서비스'를 구현하려고 한다면, HTTP 프로토콜이 아닌 웹소켓 프로토콜을 사용하는 것이 좋다고 알려져 있다. 

 

HTTP 한계 

HTTP를 주로 사용했던 초기 웹의 목적은 단순한 '문서' 전달이었다. HTTP는 요청한대로 응답을 보내주기만 하는 단순한 프로토콜, 단순한 문서 전달에 상당히 좋은 성능을 보였기 때문에 널리 사용되었음. 

 

인터넷이 발전하면서 이용자들은 문서 교환 이상의 것을 원하기 시작하였고 채팅, 게임 등 실시간 통신이 필요한 것들을 바라기 시작한다. HTTP는 '요청'에 대해서만 응답을 할 수 있었기 때문에, 채팅에서 계속해서 메시지를 보내는 상황을 구현하기 힘들었다. "실시간" 성의 작업들을 "효율적"으로 수행할 수 있는 방법들을 고안해내기 시작한다.

 

웹 소켓의 등장

실시간 양방향 통신을 지원하며, 한번 연결이 수립되면 클라이언트와 서버 모두 자유롭게 데이터를 보낼 수 있다는 특징이 있음. 채팅과 같은 연속적인 통신에 대해 계속 유사한 통신을 반복하지 않게 해주어서 통신의 효율성도 개선할 수 있었음. 

현재는 대부분의 브라우저에서 지원됨. 

 

웹 소켓 프로토콜

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

HTTP 프로토콜을 이용할 때 “http”를 이용하는 것 처럼, 웹소켓을 이용할 때 “ws”를 이용함. 

 

HTTP를 이용해서 연결을 수립하며 연결 된 이후에도 연결을 할 때 사용했던 포트인 80과 443포트를 이용합니다. 연결 수립은 핸드쉐이크를 통해 이루어지며 핸드쉐이크시 HTTP를 이용합니다.

 

 

반응형