ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Group Study] HTTP
    Front-end/Web 2022. 12. 8. 00:47
    반응형

    Preface

     학부 네트워크 수업 때, 와이어샤크로 패킷까지 까면서 공부했던 프로토콜이다.

    FE든 BE든 개발자라면 HTTP 프로토콜의 간략한 spec과 working하는 방식은 알고 있을 것이라고 생각하고 있다. 망각의 동물답게 당연~히 배운것의 반절은 잊은 것 같은데 최근 네이버에서 http3를 서비스에 적용한 사례를 보고서 간략하게 공부해보아야겠다는 생각이 들었다.

     동작하는 원리나 모든 스펙을 톺아볼 수는 없지만, 리마인드의 목적으로 정리하고자 한다.


     HTTP

     HTTP(HyperText Transfer Protocol)은 W3 상에서 정보를 주고 받을 수 있는 프로토콜이다. 주로 TCP를 사용하고 HTTP/3부터는 UDP를 사용하며, 80번 포트를 사용한다.
     HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들어 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 
    wiki (reference-1)

    HTTP는 웹에서 정보를 주고 받기 위해 만들어어진 프로토콜이고 아직까지 잘 사용되고 있다. 역사에 따라서 1.0(1996), 1.1(1999), 2(2015), 3(06-2022) 버전이 오픈되었다.

    현재는 HTTP/2.0가 웹에서 사용되고 있는 메이저 버전이다. 정적인 텍스틀 보여주던 시대의 웹과는 달리 기술이 발전함에 따라 사진, 동영상 등과 같은 고용량 멀티미디어 데이터를 전송하는 일이 많아졌다. 그리고 현재의 스마트폰 사용과 더불어 모바일 시장이 크게 성장하게 되었는데, Twitter, Facebook처럼 고용량의 데이터를 기민하게 보여줘야할 니즈가 계기가 되었다. 이에 따라 새로운 버전의 HTTP가 필요하게 되었고, 지금의 버전을 사용하게 되었다.


    diff: HTTP/1 to HTTP/2

    1. Head of Line bokcing(HOL): HTTP/1.1 까지는 한 번에 한 파일만 보냈기 때문에 특정 파일의 로딩이 늦어지면 다른 파일까지 줄줄이 느려지는 병목 현상이 생겼다. 여러 파일을 한꺼번에 병렬 전송을 하는 방식으로 로딩 시간을 줄이게 되었다.
    2. Binary: Binary 레이어가 메제시를 데이터 또는 헤더와 같은 타입에 따라서 나뉘어진 프레임으로 나눈다. 이 방식이 보안, 압축, multiplexing의 관점에서 효율성을 높이게 된다..
    3. Header compression: HTTP 헤더를 평문 대신 HPACK headr algorithm을 사용해 압축하여 헤더 크기를 줄임으로써 용량 대비 처리 효율성을 높인다. 
    4. Server push: Client가 request를 하기 전에 요청할 것으로 생각되는 특정 파일들을 서버에서 HTTP 전송시 같이 밀어 넣는다. (JS, CSS, font, image...)

    1 HOL
    2. Binary
    2. Binary
    4. Server Push


    diff: HTTP/2 to HTTP/3

    1. Base Protocol: HTTP/1, HTTP/2는 OSI Model을 참고하면 TCP 기반(Transport Layer)의 application layer이다. 하지만 HTTP3는 UDP 근간의 user space congetsion control을 사용하는 QUIC 기반이다.
      1. 여러 데이터 스트림이 개별적으로 모든 종단점에 도달할 수 있고 다른 스트림을 수반하는 패킷 손실에 독립적이다.
      2. Congestion avoiding을 위해 각 방향에서 발생할 수 있는 연결 및 전송 레이턴시와 대역폭을 감소시킨다.
      3. 두 종단점의 혼잡 제어 알고리즘을 커널 공간이 아닌 사용자 공간 안으로 배치시킴으로써 빠르게 개선할 수 있다고 한다.
        • 혼잡 제어 알고리즘: 전자 통신 네트워크로 들어가는 정보 소통량을 조절하여 네트워크가 혼잡해지지 않게 조절하는 것을 말한다
      4. TCP와 달리 Connection setup(Handshake)의 과정을 줄이면서 overhead를 줄인다. 클라이언트가 connection을 오픈할 때, response packet은 미래의 packet에서 사용할 encryption(암호화) 정보를 함께 넘긴다. 이 과정이 데이터 손실 및 보안 관점에서 추가적인 패킷을 주고받는 과정을 줄여주게 된다.

    1. QUIC

     


    Reference

    (1) HTTP wiki: https://ko.wikipedia.org/wiki/HTTP

    (2) HTTP/2 wiki: https://en.wikipedia.org/wiki/HTTP/2

    (3) HTTP/3 wiki: https://en.wikipedia.org/wiki/HTTP/3

    (4) HTTP 나무 wiki: https://namu.wiki/w/HTTP/2

    (5) HTTP1 vs 2: https://cheapsslsecurity.com/p/http2-vs-http1/

    (6) QUIC wiki: https://en.wikipedia.org/wiki/QUIC 

    (7) 혼잡 제어: https://ko.wikipedia.org/wiki/혼잡_제어 

    반응형

    댓글

Designed by Tistory.