websocket 공부

nearworld·2022년 12월 9일
0

Network

목록 보기
1/1

Websocket
: 웹에서 하나의 TCP 연결을 통해 양방향 통신을 구현하는 컴퓨터 통신 프로토콜 기술

  • 웹소켓 프로토콜 사용 ws://
  • HTTP Upgrade 헤더 필드를 사용하여 http 프로토콜에서 ws 프로토콜로 전환
  • HTTP Upgrade 헤더는 HTTP/1.1에 도입된 헤더
  • 요청에 오버헤드가 없음 (오버헤드 일반 http 통신시 요청 헤더는 오버헤더로 추가적인 정보들을 포함하므로 단시간 많은 통신시 무거울 수 있음)
  • tcp/80 사용하여 연결 (80번 포트는 http 프로토콜의 기본 포트 번호. 443번 포트는 https 프로토콜의 기본 포트 번호)
  • HTTP 프로토콜을 이용하여 handshake 하면 ws 프로토콜로 전환
  • 양방향(full duplex) 통신 이므로 응답과 요청의 구분이 없음
    요청 응답 구분이 없다는 의미는 기존에는 클라이언트가 무조건 요청을 "먼저" 보내야 서버로부터 응답이 와서 통신이 진행되는 방식이었는데 양방향 통신에서는 서버도 데이터를 먼저 전송할 수 있다는 의미.
  • 기존에는 polling 방식을 이용하여 실시간 통신 구현.
  • polling 방식은 기존의 클라이언트 요청-서버 응답을 사용하여 실시간 통신을 구현하는 것으로 여러 클라이언트에서 서버에 polling 방식으로 통신을 시도할 경우 서버에 부담을 주게 됨.
  • ws 프로토콜을 사용하면 handshaking 이라 불리는 클라이언트-서버간의 TCP 연결 하나를 통해 계속해서 양방향(full duplex) 통신이 가능함.
  • 기존의 http 프로토콜을 이용한 통신 방식은 클라이언트 요청 후 서버 응답이 오면 연결이 해제됨.

웹소켓 연결 시도할때 보내는 http 요청

GET / HTTP/1.1
Host: localhost
Connection: upgrade // 프로토콜을 변경할 것임을 알림
Upgrade: websocket // 변경할 프로토콜이 웹소켓이라는 의미

웹소켓 연결 생성 과정

  1. HTTP Upgrade 헤더에 설정후 요청 전송
  2. 서버측에서 HTTP 101 응답 전송 (101 응답은 서버 측에서 프로토콜 전환을 승인한다는 의미)
profile
깃허브: https://github.com/nearworld

0개의 댓글