Web

웹소켓 (Web Socket)이란? 사용이유 / 동작원리

핏짜보이 2022. 4. 23. 13:19
반응형

웹소켓(Web Socket)이란?

전송 프로토콜의 일종으로 쉽게 말해서 웹 버전의 TCP 또는 Socket이라고 이해하면 된다.

웹소켓은 서버와 클라이언트 간에 소켓 연결을 유지해서 언제든지 양방향 통신 또는 데이터 전송이 가능하게 하도록 하는 기술이다. 

웹소켓은 실시간 통신 구현을 위해 사용되고 있다. 

(ex. SNS, 멀티플레이어 게임, 구글Docs, 증권거래, 화상채팅등)

 


사용이유

웹 어플리케이션에서 기존의 서버와 클라이언트 간의 통신은 대부분 HTTP를 통해 이루어 졌으며

HTTP는 req/res 기반의 stateless protocol이다.

 

즉 서버와 클라이언트 간의 소켓 연결과 같이 영구적인 연결이 되어있지 않고,

클라이언트 쪽에서 필요할때 req를 할때만 서버가 res를 하는 방식으로 통신이 진행되는 한방향 통신이다.

 

이럴 경우, 서버쪽 데이터가 업데이트 되더라도 클라이언트 쪽에는 화면은 Refresh되지 않는 한

변경된 데이터가 업데이트 되지않는 문제가 발생한다.

 

이런 문제는 일반적인 웹어플리케이션에서는 기존에 존재하던 Long polling이나 Ajax를 사용해도 어느정도 해결이 가능하지만, 

데이터의 빠른 업데이트가 아주 중요한 요소 중에 하나인 어플리케이션에서는 실시간 업데이트가 매우 중요하기 때문에 Web Socket이 아주 중요한 기술로 사용되고 있다.

 

웹소켓은 stateful protocol이기 때문에 클라이언트와 서버가 한번 연결이 되면

계속 같은 라인을 사용해서 통신하기 때문에 HTTP 사용시 필요없이 발생되는 HTTP와 TCP연결 트래픽을 피할 수 있다.

 

마지막으로 웹소켓은 HTTP와 같은 포트(80)를 사용하기 때문에

기업용 어플리케이션에 적용할때 방화벽은 재설정하지 않아도 되는 장점이 있다.


작동원리

서버와 클라이언트 간의 웹소켓 연결은 HTTP프로토콜을 통해 이루어진다.

만약 연결이 정상적으로 이루어진다면 서버와 클라이언트 간에 웹소켓 연결이 이루어지고

일정 시간이 지나면 HTTP 연결이 자동으로 끊어진다.

 

HTTP 통신방법과 웹소켓의 차이점

결정적인 차이는 프로토콜이다.

웹소켓 프로토콜은 접속을 하는데 HTTP를 사용하지만, 이후의 통신은 웹소켓의 독자적인 프로토콜로 이루어진다.

또한 header가 작아서 overhead가 적은 특징이 있다.

 

장시간 접속을 전제로 하기 때문에, 접속한 상태라면 클라이언트나 서버로부터 데이터 송신이 가능하다.

그리고 데이터의 송신과 수신에 각각 커넥션을 맺을 필요가 없어서 하나의 커넥션으로 데이터를 송수신할 수 있다.

 

 

포스팅읽어주셔서 감사합니다!

질문과 지적은 댓글로 환영합니다! 

오늘도 즐코하세요!!! :)

 

 

 

 

참고자료

https://poiemaweb.com/nodejs-socketio

https://duckdevelope.tistory.com/19

https://developer.mozilla.org/ko/docs/Web/API/WebSockets_API

 

728x90