티스토리 뷰

Websocket, 웹소켓?

웹소켓은 하나의 TCP 접속에 전이중 통신 채널을 제공하는 통신 프로토콜이다. 클라이언트 애플리케이션과 웹 서버간의 통신을 가능케 하며, 서버와의 실시간 데이터 전송을 용이케 한다.

 

등장 배경

웹 환경에서 통신이라면 가장 먼저 떠오르는것은? 바로 HTTP이다. 90년대 처음 등장한 이후로 HTTP는 웹 환경에서는 뗄수 없는 존재가 되었다. 하지만 HTTP는 클라이언트가 요청을 보내고 응답을 받으면 연결을 끊는 방식이기 때문에 서버가 변경 사항이 발생했을때 클라이언트에 변경사항을 알릴 방법이 없어 실시간 서비스에 적합하지 않다.

 

물론, Polling과 Long Polling이라는 개념(주기적으로 클라이언트가 요청을 보내 변경사항을 가져오는 것)이 존재하지만 잦은 요청은 불필요한 트래픽을 발생시키고 연결/해제를 위해 반복적으로 Header 데이터가 발생하는 것은 효율적이지 못하다. 그래서 이런점을 보완하기 위해 등장한것이 Websocket이다. Websocket은 최초 접속시 서버와 연결하고 연결을 유지하여 변경되는 데이터를 실시간으로 반영할 수 있다.

Websocket 연결

Websocket 연결 (이미지 출처:PubNub.com )

WebSocket 연결을 설정하기 위해 클라이언트는 WebSocket 핸드셰이크 요청을 전송한다.이 요청에 대해 서버는 아래와 같이 WebSocket 핸드셰이크 응답을 반환한다.

클라이언트 요청:

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com

서버 응답:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

핸드셰이크는 HTTP 요청/응답으로 시작하고 서버가 동일한 포트에서 WebSocket 연결뿐만 아니라 HTTP 연결을 처리 할 수 ​​있도록한다. 그리고 연결이 설정되면 통신은 HTTP 프로토콜을 따르지 않는 양방향 바이너리 프로토콜로 전환된다.

 

Websocket 사용시 장단점

장점

  • 양방향 통신이 가능해지며 클라이언트/서버가 서로에게 메시지를 보낼수 있다.
  • 설계와 구현이 간단(Polling, Long-Polling에 비해)하고 통신 효율을 높일수 있다.
  • 한번의 통신으로 클라이언트와 서버의 연결을 유지할수 있다.

단점

  • IE9 포함 이전 버전은 지원하지 않는다.
  • 비정상적으로 연결이 끊어졌을때 적절하게 대응할수 있어야 한다.
  • HTTP에 비하면 코드나 설계가 복잡하다.

 

참고

https://en.wikipedia.org/wiki/WebSocket

 

WebSocket - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Computer network protocol WebSocket is a computer communications protocol, providing full-duplex communication channels over a single TCP connection. The WebSocket protocol was standar

en.wikipedia.org

 

'컴퓨터공학 > 네트워크' 카테고리의 다른 글

[네트워크] HTTP 이해  (0) 2021.05.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함