본문 바로가기

CS

[CS] 웹소켓이란? (브라우저와 브라우저를 연결하는 RTC?)

HTTP 에 관한 글은 아래를 참고하면 된다.

https://pro-jm.tistory.com/81?category=1119368 

 

[CS] HTTP란?

📝HTTP란? Hyper Text Transfer Protocol라는 뜻으로 웹에서 데이터를 주고받울 수 있는 네트워크 프로토콜이다. 여기서 프로토콜은 규칙이라고 보면 된다. 이렇게 네트워크 규칙을 정해둠으로써 모든

pro-jm.tistory.com

 

 

 

웹소켓 이전에 HTTP에 대해 간단히 요약하자면,

브라우저에서 서버로 데이터를 요청할때 HTTP 방식을 활용한다.

단 해당 방식은 클라이언트 단에서 서버로 요청을 하고, 서버에서 클라이언트로 응답을 하는 방식이다.

클라이언트에서 요청이 없다면 서버에서는 클라이언트로 스스로 응답을 보내지 않는다.

따라서 HTTP를 활용해서만 사이트를 만든다면, 매 초마다 서버로 요청을 보내야할것이다.

바로 이때문에 웹소켓이 생겨났다.

 

 

 

 

📝 웹소켓이란?

웹소켓이란 두 프로그램 간 메시지를 교환하기 위한 통신 방법중 하나이다.

(W3C와 IEFT에 의해 자리잡은 표준 프로토콜 중 하나로, 현재 인터넷 환경(HTML5)에서 많이 사용된다.)

 

📌 웹소켓 특징 1. 양방향 통신 (Full-Duplex)

웹소켓은 HTTP처럼 '요청 - 응답' 방식이 아닌 'Open - Close' 방식이다.

브라우저가 웹소켓을 이용해 서버와 연결을 하면 브라우저 - 서버 간 통신은 열려있을것이고,

해당 통신은 원할때까지 Open 되어 있을것이다.

 

웹소켓은 통화와 같은 개념이고, HTTP는 벽에 탁구를 치는것과 같은 개념이다.

통화는 끊기전까지 오픈상태로 유지되며, 양방향이기에 내가 보낼수도 받을수도 있는 구조이다.

때문에 서버는 요청을 기다릴필요 없이 원하는때에 데이터를 전송할 수 있다.

 

📌 웹소켓 특징 2. 실시간 네트워킹 (Real Time-Networking)

웹 환경에서 연속된 데이터를 빠르게 노출할때 사용된다.

대표적인 예로 메시지, 주식거래 사이트 처럼 리얼타임 경험 위해 만들어진다.

 

메시지 사이트를 예로 들면,

친구 세명이 메시지를 주고받을때 서로가 연결된것이 아니라 서로가 같은 웹소켓 서버에 접속한것이다.


 

여기서 살펴볼 수 있는점은

웹소켓을 이용하려면 서버의 메모리 파워가 가장 중요하다.

유저가 많을수록 더 많은 메모리가 필요하고 이는 서버가 좋아야 한다는것을 의미한다.

또한 서버를 빠르게 유지해야한다. 메시지를 받으면 거의 실시간처럼 다른사람에게 포워딩을 해줘야하기 때문이다.

 

하지만 서버에 강력한 부하가 걸리게 된다면 모든 이용자들의 이용이 중단되는 상황이 발생할 것이다.

이때 나온것이 WebRTC 이다.

 

 

📝 웹RTC란?

Web Real Time Communication의 약자로 브라우저와 서버를 연결하는것이 아닌, 브라우저와 브라우저끼리 연결을 하는것이다.

이때 텍스트뿐 아니라, 영상, 오디오 등 다양한 데이터 타입을 모두 리얼타임으로 주고받을 수 있다.

이 모든걸 서버를 통해 전달하지 않고 브라우저에서 할 수 있다. 중개자인 서버를 거치치 않기에 속도도 빠르다. 

 

📌 WEB RTC 단점

만약 채팅방에 1000명이 있다면 1000명의 오디오, 비디오를 모두 다운로드 받아야한다는 문제가 있다.

또한 내가 비디오를 한번 보낼때 1000명에게 보내야한다는 문제도 있다.

이처럼 Web RTC에 확장성에는 문제가 있다는 단점이 있다.

 

 

 

 

 

 

 

 

 

 

 

 


참고링크 : https://www.youtube.com/watch?v=5EhsjtBE7I4