WebSocket 이란 ?
HTTP 와 같은 Transfer Protocol 이다. 즉 통신하기 위해 지켜야 하는 규약이다.
HTTP 와 다른 점은, 서버와 클라이언트 간에 효율적인 양방향 통신을 위한 규약이라는 점이다.
통신이 끝난 후 연결을 끊지 않기 때문에, 데이터를 보낼 때 추가적인 액션 ( 버튼을 누른다거나 ) 이 필요가 없다.
HTML5 환경에서 자주 쓰인다고 한다.
Web Socket과 TCP
- 웹 소켓은 연결 요청에 대해 HTTP를 통해 Switching 및 HandShaking이 이루어진다.
- TCP는 Binary 데이터만 주고 받을 수 있으나, 웹 소켓은 Binary와 Text 데이터도 주고 받을 수 있다.
Web Socket과 HTTP
웹 소켓 연결할 때 HTTP 요청으로 시작하나 ( 보통 80, 433 포트 ) 두 프로토콜의 동작은 다르다.
HTTP와 REST API 에서는 URL 로 정의되는 반면 웹 소켓은 일반적으로 초기 연결을 위한 URL이 한 개만 존재한다.
때문에 모든 메세지는 동일한 하나의 TCP 연결을 통해 흐른다.
또한 웹 소켓은 HTTP와 달리 메세지 내용에 의미를 규정하지 않는 저수준 전송 프로토콜이다.
즉, Client와 Server가 메세지 시멘틱에 동의하지 않으면 메세지를 전송하거나 처리할 수 없다.
과거 웹 소켓 통신이 나오기 전, HTTP 통신 내에서 양방향, 실시간 통신을 구현하기 위해 많은 노력을 했다.
- polling
- long polling
- streaming
하지만, 불필요한 리소스가 너무 많이 소모되며, Header 의 크기가 너무 커져버리는 등 문제가 발생했다.
Web Socket의 특징
- HTTP 통신의 단점 개선 ( 단방향, 비연결성 )
- 양방향 통신
- HTTP 프로토콜을 기반으로 하는 웹 브라우저의 웹 서버간 양방향 통신을 지원하기 위한 표준 규격
- Client/Server가 실시간으로 데이터를 주고 받을 수 있다.
동작원리
- 웹 소켓 연결을 위한 HTTP (80) 통신 요청을 보낸다.
- handshaking 과정이 끝나면, HTTP 통신을 웹 소켓 통신으로 바꾸는 프로토콜 스위칭 과정이 이뤄진다.
- 웹 소켓 통신을 위한 소켓들이 형성되며, Full-Duplex 양방향 통신이 이루어진다.
- 적절한 형식의 텍스트 데이터도 보낼 수 있다.
- 소켓은 ws,wss 가 존재하며, 보안 여부가 다르다. (http, https 차이)
'개인 공부 > 전공 지식 정리' 카테고리의 다른 글
[Datebase] index 원리 (B+ Tree) (2) | 2022.11.08 |
---|---|
[Network] WEB vs WAS (0) | 2022.07.06 |
[Socket] Http 통신과 Socket 통신의 차이점 (0) | 2022.07.04 |
[Git] Git - 기초 키워드 정리 (0) | 2022.01.30 |