[WebSocket] WebSocket이란?

장수현·2021년 11월 16일
0

채팅

목록 보기
1/5

Airbnb 프로젝트에 호스트와 게스트의 채팅기능을 넣기위해 WebSocket을 공부해보려고 한다.

📌WebSocket이 생기기 전엔 Ajax로

Ajax는 비동기적인 웹 애플리케이션의 제작을 위해 아래와 같은 조합을 이용하는 웹 개발 기법이다.

  • 표현 정보를 위한 HTML(또는 XHTML)과 CSS
  • 동적인 화면 출력 및 표시 정보와의 상호작용을 위한 XML, XSLT, XMLHttpRequest

Ajax 애플리케이션은 필요한 데이터만을 웹서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다.

🔵장점

  • 페이지 이동없이 고속으로 화면을 전환 가능
  • 서버 처리를 기다리지 않고, 비동기 요청이 가능
  • 수신하는 데이터 양을 줄일 수 있고, 클라이언트에게 처리를 위임
  • 플러그인 없이도 인터렉티브한 웹 페이지 구현 가능

🔴단점

  • Ajax를 쓸 수 없는 브라우저에 대한 문제
  • HTTP 클라이언트의 기능이 한정
  • 페이지 이동없는 통신으로 인한 보안상의 문제
  • 지원하는 Charset이 한정
  • 스크립트로 작성되므로 디버깅이 용이하지 않음
  • 요청을 남발하면 역으로 서버 부하가 생김
  • 동일-출저 정책으로 인해 다른 도메인과는 통신이 불가능

📌WebSocket이란?

웹소켓은 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜이다.
웹소켓은 HTTP와 구별된다. 두 프로토콜 모두 OSI 모델의 제7계층에 위치해 있으며 제4계층의 TCP에 의존한다. 웹소켓은 HTTP 포트 80과 443 위에 동작하도록 설계되었으며 HTTP 프록시 중간 층을 지원하도록 설계되었으므로, HTTP 프로토콜과 호환이 된다.
웹소켓 프로토콜은 HTTP 폴링과 같은 반이중방식에 비해 더 낮은 부하를 사용하여 웹 브라우저(또는 다른 클라이언트 애플리케이션)과 웹 서버 간의 통신을 가능케 하며, 서버와의 실시간 데이터 전송을 용이하게 한다.
대부분의 브라우저가 이 프로토콜을 지원한다.

🔷특징

1. 양방향 통신
가장 큰 차이점이 서버에서 클라이언트로 요청을 보낼 수 잇다는 것이다.

  • Ajax는 클라이언트에서 서버로 밖에 요청을 못하는 단방향 통신
  • WebSocket은 어느 쪽에서든 요청을 보낼 수 있는 양방향 통신

2. 실시간 통신/성능
클라이언트와 서버가 연결되어 있기 때문에 실시간 통신이 가능

🚩키워드

  • 비동기 : 클라이언트에서 서버로 데이터를 요청했을 때 응답을 기다리지 않고 나머지 코드를 먼저 실행하는 것이다.
  • XML : 마크업 언어로서 데이터 및 해당 데이터의 구조를 설명하는 데 필요한 태그를 만들 수 있다.
  • XSLT : XML 문서를 다른 XML 문서로 변환하는데 사용하는 XML 기반 언어이다.
  • XMLHttpRequest : 서버로부터 XML 데이터를 전송받아 처리하는 데 사용된다. 이 객체를 사용하면 웹 페이지가 전부 로딩된 후에도 서버에 데이터를 요청하거나 서버로부터 데이터를 전송받을 수 있다. 즉, 웹 페이지 전체를 다시 로딩하지 않고 일부분만을 갱신할 수 있게 된다.
  • HTTP : 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다.
  • Charset : 문자 인코딩
  • TCP : 전송 제어 프로토콜, IP 네트워크의 두 컴퓨터 간의 연결 지향 통신을 위한 전송 계층 호스트 간 프로토콜이다. TCP는 가상 포트를 사용하여 두 컴퓨터 간의 물리적 연결을 재사용 할 수 있는 가상 종단 간 연결을 만든다.
  • 전이중 통신 : 동시에 양방향 전송이 가능한 방식이다. 전송량이 많고, 전송 매체의 용량이 클 때 사용한다. (예) 전화, 전용선을 이용한 데이터 통신
  • 프록시 : 서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 부른다.
  • HTTP 폴링 : 주기적인 시간마다 클라이언트가 서버로 요청을 동기적으로 호출해서 사용 가능한 정보가 있는지 알아낸다. 정보가 있으면 서버는 그 정보를 송신하고 정보가 없으면 서버는 부정적인 응답을 반환하고 클라이언트는 연결을 닫는다.
  • 반이중방식 : 두개의 통신장치가 각각의 방향으로 양방향 통신을 할 수 있지만, 한번에 한 쪽 방향으로만 통신 할 수 있는 통신방식이다. 다시 발해서 반이중방식에서는 상대방으로부터 데이터를 수신하는 동안 데이터를 송신할 수 없다.

#Reference
웹소켓(WebSocket) 프롤로그

0개의 댓글