본문 바로가기
개인 공부/Network (그림으로 배우는 Http&Network Basic)

Http&Network Basic : HTTP에 기능을 추가한 프로토콜 (9장)

by 희조당 2023. 7. 4.
728x90

📞 HTTP에 기능을 추가한 프로토콜

9.1 HTTP를 기본으로 하는 프로토콜

  • 최초에는 단순히 문서를 전송하는 프로토콜로 생각했었다,
  • 너무 널리 HTTP가 퍼졌기 때문에 새로운 프로토콜을 만들기는 어렵다.
  • 따라서, 기능을 추가하는 형태로 다양한 요구사항을 만족하고 있다.

9.2 HTTP의 병목 현상을 해소하는 SPDY

  • Google이 발표한 프로토콜이다. 웹 페이지 로딩을 50% 단축하게 목표이다.
  • 병목 현상을 해결하는 좋은 기술이지만 웹의 문제는 그 외에서도 발생한다.

9.2.1 HTTP의 병목 현상

  • SNS와 같이 큰 트래픽에 대해서 HTTP는 잘 처리할 수 없다.
  • 다음 HTTP의 사양이 병목 현상의 원인이다.
    1. 1개의 커넥션에는 1개의 리퀘스트.
    2. 리퀘스트는 클라이언트에서만 시작할 수 있다. (리스폰스만 받는 게 불가능)
    3. 헤더를 압축하지 않는다.
    4. 장황한 헤더를 보낸다. (매번 같은 헤더)
    5. 데이터 압축을 임의로 선택할 수 있다. 또한, 압축을 강제하지 않는다.
  • Ajax는 DOM을 조작해서 페이지의 일부만 갱신한다.
  • Comet은 갱신 요청에 대한 응답을 보류해서 실제로 갱신이 될 때 응답을 보낸다.

9.2.2 SPDY 설계와 기능

  • TCP/IP의 애플리케이션 계층과 트랜스포트 계층 사이에 새로운 세션 계층을 추가하는 형태이다.
  • 보안 표준으로 SSL을 사용한다. 단순히 추가된 것으로 HTTP 커넥션은 그대로이다.
  • 다중화 스트림 지원 : 단일 커넥션으로 여러 요청을 처리할 수 있다.
  • 리퀘스트 우선 순위 지원 : 요청에 우선순위를 할당한다. 처리가 늦어지는 현상을 해결할 수 있다.
  • 헤더 압축 지원 : 헤더의 압축을 강제한다. 적은 자원으로 통신할 수 있다.
  • 서버 푸시 지원 : 서버에서 클라이언트로 데이터를 푸시하는 기능. 요청을 기다리지 않아도 된다.
  • 서버 힌트 지원 : 서버가 클라이언트에게 요청할 리소스를 제안하는 기능이다. 불필요한 요청을 방지한다.

9.3 브라우저에서 양방향 통신을 하는 WebSocket

  • AjaxComet을 통해서 웹 브라우징이 고속화되지만 완벽한 병목 현상 해결은 어렵다.
  • WebSocket은 웹 브라우저와 서버를 위한 양방향 통신 규격으로 새로운 프로토콜이다.

9.3.1 WebSocket 프로토콜

  • 한번 접속되면 양방향 모두 마음대로 통신할 수 있고 전용 프로토콜을 사용한다.
  • JSON, XML, HTML 등 임의의 데이터를 활용할 수 있다.
  • 서버 푸시 기능을 제공하고, 한번 접속을 확립하기 위해서 핸드쉐이크 절차를 밟는다.
  • 핸드쉐이크/요청 : Upgrade 헤더로 프로토콜 변경을 요청하고, Sec-WebSocket-Key에 필요한 키를 담아 보낸다.
  • 핸드쉐이크/응답 : Sec-WebSocket-Key에 값을 Sec-WebSocket-Accept에 저장 담고 101로 응답한다.

9.4 등장이 기다려지는 HTTP/2.0

  • 지금 HTTP/1.1은 웹에 적합하다고 할 수는 없다.
  • 다음 프로토콜은 SPDY, HTTP Spped+Mobility, Network-Friendly HTTP Upgrade을 기반으로 한다.

9.5 웹 서버 상의 파일을 관리하는 WebDAV

  • 웹 서버의 콘텐츠에 대해서 직접 파일 복사나 편집 작업 등을 할 수 있는 분산 파일 시스템이다.

😋 지극히 개인적인 블로그지만 댓글과 조언은 제 성장에 도움이 됩니다 😋

댓글