웹 소켓 초기 인식

4734 단어
웹 소켓 이란 무엇 입 니까?
웹 소켓 은 웹 브 라 우 저 와 서버 간 의 전 양 방향 통신 프로 토 콜 로 웹 소켓 프로 토 콜 은 IETF 포 지 셔 닝 기준 이 고 웹 소켓 API 는 W3C 포 지 셔 닝 기준 이다.웹 클 라 이언 트 가 서버 와 연결 되면 모든 데이터 통신 은 이 연결 을 통 해 이 루어 집 니 다.통신 과정 에서 JSON, XML, HTML 또는 이미지 등 임의의 형식의 데 이 터 를 보 내 는 것 을 지원 합 니 다.
WS (WebSocket) 는 HTTP 프로 토 콜 에 비해
공통점 은 주로 다음 과 같다.
  • 모두 TCP 를 바탕 으로 하 는 응용 층 프로 토 콜 이다.
  • 모두 Request / Response 모델 로 연결 하 는 구축;
  • 연결 을 만 드 는 과정 에서 잘못된 처리 방식 과 관련 이 있 습 니 다. 이 단계 에서 WS 는 HTTP 와 같은 반환 코드
  • 를 되 돌려 줄 수 있 습 니 다.
  • 모두 네트워크 에서 데 이 터 를 전송 할 수 있다
  • 다른 점 은:
  • WS 는 HTTP 를 사용 하여 연결 을 만 들 지만 일련의 새로운 header 도 메 인 을 정 의 했 습 니 다. 이 도 메 인 은 HTTP 에서 사용 되 지 않 습 니 다.
  • WS 의 연결 은 중개인 을 통 해 전달 할 수 없습니다. 직접 연결 해 야 합 니 다. 그 게 이 트 웨 이 는 어떻게 전달 합 니까?각각 client - 게 이 트 웨 이, 게 이 트 웨 이 - ups tream 의 연결 을 만 듭 니까?
  • WS 연결 이 구축 되면 통신 쌍방 은 언제든지 다른 측 에 데 이 터 를 보 낼 수 있다.
  • WS 연결 이 구축 되면 데이터 전송 은 프레임 으로 전달 되 며 Request 메시지 가 필요 하지 않 습 니 다
  • WS 의 데이터 프레임 질서
  • 주요 특징
  • 푸 시 기능: 서버 는 클 라 이언 트 에 게 직접 메 시 지 를 푸 시 할 수 있 습 니 다.
  • 통 신 량 감소: 처음 연결 을 만 들 면 계속 통신 을 할 수 있 습 니 다. HTTP 프로 토 콜 과 달리 잦 은 요청, 일문일답 모드 가 필요 합 니 다.이 밖 에 웹 소켓 의 머리 데이터 도 비교적 적다.

  • 악수 협의
    웹 소켓 은 TCP 기반 의 응용 프로 토 콜 입 니 다. HTTP 프로 토 콜 과 관련 된 점 은 웹 소켓 의 악수 데이터 가 HTTP 서버 에 의 해 HTTP 패키지 로 처리 되 고 주로 update request HTTP 패 키 지 를 통 해 연결 되 며 이후 통신 은 모두 웹 소켓 자체 프로 토 콜 을 사용 합 니 다.
    요청: TCP 연결 이 완료 되면 클 라 이언 트 가 웹 소켓 의 악수 요청 을 보 냅 니 다. 메시지 의 머리 는 다음 과 같 습 니 다.
    GET /chat HTTP/1.1
    Host: server.example.com
    **Upgrade: websocket**
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Origin: https://example.com
    Sec-WebSocket-Protocol: chat, superchat
    Sec-WebSocket-Version: 13
    
  • 첫 번 째 행위 요청 방법 은 유형 이 GET 이 어야 하고 협의 버 전 번 호 는 1.1
  • 보다 커 야 한다.
  • 업그레이드 필드 는 웹 소켓
  • 을 포함해 야 합 니 다.
  • Connection 필드 는 업그레이드
  • 값 을 포함해 야 합 니 다.
  • Sec - webSocket - Key 필드 는 악수 과정 에서 없어 서 는 안 될 키 를 기록 해 야 합 니 다.
  • Sec - webSocket - protocol 필드 는 기록 자가 사용 하 는 자체 프로 토 콜
  • 을 포함해 야 합 니 다.
  • Origin: 안전하게 사용 하고 크로스 오 버 공격 을 방지 합 니 다. 브 라 우 저 는 보통 이 를 사용 하여 원본 도 메 인 을 표시 합 니 다.

  • 응답: 서버 가 요청 을 받 은 후 상태 코드 101 Switching Protocols 의 응답 을 되 돌려 줍 니 다.
    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
    Sec-WebSocket-Protocol: chat
    
  • Sec - webSocket - Accept 필드 는 악수 요청 중의 Sec - webSocket - Key 필드 에서 생 성 됩 니 다.

  • 악수 에 성공 하면 통신 은 HTTP 프로 토 콜 을 사용 하지 않 고 웹 소켓 의 독립 된 데이터 프레임 을 사용 합 니 다.
    웹 소켓 연결 닫 기 상태 메타
    상태 코드
    명칭.
    묘사 하 다.
    0-999
    보존 세그먼트, 미사 용
    1000
    CLOSE_NORMAL
    정상 폐쇄
    1001
    CLOSE_GOING_AWAY
    터미널 이 떠 나 는 것 은 서버 오류 때 문 일 수도 있 고, 브 라 우 저 가 카드 로 연 결 된 페이지 에서 뛰 어 나 가 고 있 기 때 문 일 수도 있 습 니 다.
    1002
    CLOSE_PROTOCOL_ERROR
    프로 토 콜 오류 로 연결 이 끊 겼 습 니 다.
    1003
    CLOSE_SUPPORTED
    허용 되 지 않 는 데 이 터 를 받 아 연결 을 끊 었 습 니 다 (예 를 들 어 텍스트 데이터 만 받 는 터미널 에서 바 이 너 리 데 이 터 를 받 았 습 니 다)
    1004
    보류 하 다.
    1005
    CLOSE_NO_STATUS . 예상 한 상태 코드 를 받 지 못 했다 는 뜻 입 니 다.
    1006
    CLOSE_ABNORMAL . 상태 코드 를 받 기 를 기대 할 때 연결 이 비정상적 으로 닫 힙 니 다 (즉, 닫 힌 프레임 을 보 내지 않 았 습 니 다).
    1007
    Unsupported Data
    형식 이 맞지 않 는 데 이 터 를 받 아 연결 이 끊 겼 습 니 다.
    1008
    Policy Violation
    약속 에 맞지 않 는 데 이 터 를 받 아 연결 이 끊 겼 습 니 다.
    1009
    CLOSE_TOO_LARGE
    너무 큰 데이터 프레임 을 받 아서 연결 이 끊 겼 습 니 다.
    1010
    Missing Extension
    클 라 이언 트 는 서버 가 하나 이상 의 확장 을 상 정 하 기 를 기대 하지만 서버 가 처리 되 지 않 아 클 라 이언 트 가 연결 을 끊 었 습 니 다.
    1011
    Internal Error
    클 라 이언 트 가 예상 치 못 한 상황 에 부 딪 혀 요청 을 막 았 기 때문에 서버 에서 연결 을 끊 었 습 니 다.
    1012
    Service Restart
    서비스 재 부팅 으로 연결 이 끊 겼 습 니 다.
    1013
    Try Again Later
    서버 가 임시 적 인 이유 로 연결 을 끊 었 습 니 다.
    1015
    TLS Handshake
    보류. 연결 이 TLS 악 수 를 완료 하지 못 해 종료 되 었 음 을 표시 합 니 다 (예 를 들 어 서버 인증 서 를 검증 할 수 없 음).
    자세 한 내용 은:https://wdd.js.org/websocket-close-reasons.html
    부록
    부록 1: 듀 플 렉 스 VS 싱글
  • 듀 플 렉 스 (Full Duplex): 통신 전송의 용어 입 니 다.통신 은 데이터 가 두 방향 에서 동시에 전송 되 는 것 을 허용 하 는데, 그것 은 능력 적 으로 두 개의 단일 통신 방식 의 결합 에 해당 한다.듀 플 렉 스 란 신 호 를 동시에 (순간) 할 수 있 는 양 방향 전송 (A - B 및 B - A) 을 말한다.전화
  • 반 쌍 공 (Half Duplex): 한 시간 동안 한 동작 만 발생 하 는 것 을 말한다.무전기
  • 단 공: 갑 이 을 에 게 만 정 보 를 전송 할 수 있 고 을 은 갑 에 게 전송 할 수 없다.

  • 부록 2: Python Websockets Module has no attribute
    오류 보고:
    AttributeError: module 'websocket' has no attribute 'WebSocket'
    
    ws = websocket.WebSocket()
    

    원인: 모듈 을 잘못 설 치 했 습 니 다. websocket 을 설치 해 야 합 니 다.client, websocket 이 아 닙 니 다.
    참고:https://stackoverflow.com/questions/40212252/python-websockets-module-has-no-attribute

    좋은 웹페이지 즐겨찾기