본문 바로가기

개발일지/디스턴스

Web Socket 통신 방식이란?

반응형

목차

  1. 프로토콜이란 무엇인가
  2. 웹소켓(Web Socket) 프로토콜이란?
  3. HPPT 통신과의 차이점
  4. 웹소켓 통신 방법

1.  프로토콜이란 무엇인가

프로토콜은 쉽게 이야기하면 "통신을 위한 규칙"이다.

사전전 정의로는 컴퓨터나 장치 간에 통신하기 위한 규칙과 규약의 집합을 나타낸다.

프로토콜은 다양한 종류가 있는데 이러한 종류는 프로토콜이 하는 역할에 따라 분류된다.

 

HTTP는 웹 프로토콜로서 클라이언트와 서버 간에 웹 데이터 통신을 담당한다.

웹 페이지를 열 때 https://URL 이러한 식으로 주소창에 주소가 뜨는데

여기서 https://가 웹 페이지를 로딩하기 위한 리소스를 서버에 요청하기 위한 통신 프로토콜인 것이다.

HTTP에 S가 붙은 것은 http의 보안 버전으로

암호화된 통신을 제공하여 더 안전한 데이터 통신이 가능하게 만든 것이다.

 

그 밖에도 TCP/IP는 네트워크 통신을 위한 기본적인 프로토콜 스택,

FIP는 파일 전송을 위한 프로토콜,

SMTP는 이메일을 보내는데 사용되는 프로콜을 담당하고 있다.

 

아래는 프로토콜의 종류를 표로 정리한 것이다.

계층 프로토콜
응용(Application) HTTP, SMTP, FTP, Telnet
표현(Presentation) ASCII, MPEG, JPEG, MIDI
세션(Session) NetBIOS, SAP, SDP, NWLink
전송(Transport) TCP, UDP, SPX
네트워크(Network) IP, IPX
데이터 링크(Data Link) Ethernet, Token Ring, FDDI, Apple Talk
물리(Physical) 없음

 

 

2.  웹소켓 (Web Socket) 프로토콜이란? 

웹소켓은 양방향 통신을 지원하는 프로토콜.

실시간, 양방향, 풀-더플렉스(Full-Duplex) 통신을 가능하게 하는 기술이다.

 

클라이언트와 서버 간에 한 번 연결이 이루어지면,

그 후로는 지속적으로 연결을 유지하며 데이터를 주고 받을 수 있다.

이를 통해 서버는 클라이언트에게 실시간으로 데이터를 푸시할 수 있다.

따라서 채팅 앱, 게임, 실시간 거래 정보 제공 등에 활용되고 있다.

 

 

3.  HTTP  통신과의  차이점

앞서 말한 HTTP 통신은 단방향 통신이다.

즉 클라이언트에서 서버로 Request를 보내면 서버는 클라이언트로 Response를 보내는 방식이다.

또한 HTTP는 기본적으로 무상태(Stateless)이므로 상태를 저장하지 않는다.

 

하지만 웹소켓은 양방향 통신으로 연결이 이루어지면

클라이언트가 요청하지 않아도 데이터가 저절로 서버로부터 올 수 있다.

따라서 일일이 요청을 안해도 데이터를 수신 받아 실시간 통신이 가능한 것이다.

 

구글Docs 에서 여러 사람이 하나의 문서를 동시에 수정할 때

사용자가 새로고침을 누르지 않아도 수정 사항을 실시간으로 볼 수 있는 것이

하나의 웹소켓 활용 사례이다.

 

 

4.  웹소켓 통신 방법

웹 소켓 통신 이미지

웹 소켓은 HTTP 포트 80, HTTPS 포트 443 위에서 동작한다.

그렇다면 웹소켓은 어떻게 동작되는지 단계별로 살펴보겠다.

Step1. 핸드셰이킹 (Handshaking)

클라이언트가 서버에게 웹 소켓 연결을 요청하기 위해 HTTP 요청을 전송한다.

요청에는 특별한 헤더인 'Upgrade'와 'Connection'이 포함되어 있다.

서버가 클라이언트의 요청을 받으면 동의하면서 101 상태 코드를 포함한 HTTP 응답을 반환한다.

응답헤더에도 'Upgrade'와 'Connection'이 포함되어 있다.

이 단계에서 클라이언트와 서버는 HTTP에서 웹소켓으로의 업그레이드 동의를 주고 받는다.

Step2. 웹 소켓 프로토콜로 업그레이드

클라이언트와 서버 간에 핸드셰이킹이 완료되면, 웹 소켓 프로토콜로의 업그레이드가 이루어진다.

클라이언트와 서버는 이후의 통신에 웹 소켓 프로토콜을 사용하기로 합의하고,

HTTP에서 웹소켓으로 연결이 업그레이드 된다.

 

일반적인 웹 소켓에서는 ws:// 프로토콜을 사용하고,

암호화된 웹 소켓에서는 wss:// 프로토콜을 사용한다.

# 예시
ws://example.com/socket
wss://example.com/secure-socket

 

Step3. 양방향 통신

핸드셰이킹이 완료되고 프로토콜이 업그레이드 되면,

클라이언트와 서버는 양방향 통신이 가능해진다.

양쪽 시스템은 서로에게 메세지를 전송할 수 있으며,

연결은 유지된 상태로 데이터가 실시간으로 주고 받을 수 있다.

Step4. 프레임 전송

웹 소켓은 데이터를 여러 프레임으로 나누어 전송한다.

이 프레임에는 텍스트, 이진 데이터, 연결 종료 등의 정보가 포함된다.

클라이언트와 서버는 프레임을 통해 메세지를 교환하며,

각 프레임에는 헤더가 포함돼 데이터를 구분한다.

Step5. 연결 종료

클라이언트 또는 서버가 연결을 종료하려면

특정 종료 프레임을 보내거나, TCP 연결을 직접 종료한다.

연결 종료 시에는 양쪽에서 상호 동의하에 이루어져야 하며,

이후에는 더 이상의 통신이 불가능해진다.

 

 

참고자료

 

프로토콜(Protocol)이란? - 정의, 기본 요소, 종류, 기능

프로토콜(Protocol)이란? 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다. 프로토콜의 기본 요소 구

computer-science-student.tistory.com

 

[Web] 웹소켓(WebSocket)이란? 웹소켓과 HTTP의 차이

웹소켓(WebSocket) 프로토콜이란? 웹소켓(WebSocket)은 클라이언트와 서버(브라우저와 서버)를 연결하고 실시간으로 통신이 가능하도록 하는 첨단 통신 프로토콜이다. 웹소켓은 하나의 TCP 접속에 전

code-lab1.tistory.com