본문 바로가기
Server, DevOps

Socket 통신이란? (+ Http통신과 차이점까지)

by lumayi 2021. 11. 3.

서버로부터 저장된 데이터를 가져오기 위해서 구현하는 통신에는 Http와 Socket통신이 있다. 그 둘의 가장 큰 차이점은 양방향이나 아니냐의 차이인데, 그 차이점과 정의를 자세히 알아보려한다.

 

Socket 통신이란?
TCP/IP 프로토콜을 기반의 통신 규약 중 하나이다. 웹 서버와 웹 브라우저간 양방향 통신이 가능하다.

 

이 Socket 통신은 Http의 단점을 보완하기 위해 생겨난 통신이다. Http 통신은 웹 브라우저(클라이언트)의 요청이 있을 때에만 응답하여 처리한 후, 연결이 종료된다. 이 http의 통신을 보완하고자 생겨난 것이 저번에 포스팅했던 Session이다.

https://suzyalrahala.tistory.com/33?category=512694 

 

세션(Sessions) vs 쿠키(Cookie) vs 토큰(Token) 차이점은?(feat. 찜질방=세션??!, JWT)

우리는 웹 서버를 이용할 때 세션과 쿠키를 통해서 정보를 주고 받는다! 주로 쿠키나 세션으로 사용자 확인을 하는데 어느날 같이 공부하는 친구가 "근데 쿠키랑 세션이랑 차이가 뭐야?" 라고 물

suzyalrahala.tistory.com

 

이렇듯 연결이 종료되어도 주고 받았던 정보를 살리고 저장해놓기 위한 것이 Session이라면, 클라이언트에서뿐만이 아니라 서버에서도 요청을 보낼 수 있게 하는 것이 Socket 통신이다. Http통신이 초기에 만들어진 규약이다보니 많은 보완점들이 필요했던 것 같다! 어쨌든 그렇다보니 소켓 통신은 메세지를 구현할 때 많이 사용된다. 서버와 클라이언트가 실시간으로 계속 데이터를 주고 받아야하기 때문이다. 또한 라이브 방송 채팅처럼 많은 수의 동시 접속자가 발생하는 경우나 실시간 정보가 필요한 주식 서비스 등에서도 자주 사용되고 있다.

 

 

하지만 이 Socket 통신에도 단점이 있다. Http와는 다르게 stateless가 아닌 stateful한 연결상태를 유지시켜야하기 때문에 부하가 발생할 수도 있다. 또 그러다보니 더 많은 리소스가 필요하게 되고 비용 및 유지보수도 Http방식보다 까다로워진다. 그리고 인터넷 익스프로러의 경우 10이상의 버전부터만 지원한다.

 

서버와 클라이언트의 연결은 http 방식으로 이루어진다.

 

그럼에도 불구하고 Socket방식은 실시간 정보를 가장 빠르게 업데이트한다는 점에서 많이 사용하게 된다. 비동기 방식의 Ajax 또한 어느정도 실시간 동기화가 가능하지만 웹 Socket은 더 빠른 속도의 실시간 업데이트가 가능하다. 그리고 웹소켓의 Handshake 과정 덕분에 수준 높은 Messaging 프로토콜 사용이 가능해진다는 것도 장점이다. 또한, 기업 어플리케이션 사용시 방화벽을 재설정 하지않아도 되는 장점이 있기에 많이 사용하게 된다.

 

반응형