HTTP

jaegeunsong97·2023년 1월 18일
0

2023_1_18_TIL

HTTP 1.0

  • 기본적으로 한 연결당 하나의 요청 처리 -> RTT 증가 (3웨이핸드셰이크 계속 오픈)
  • RTT 증가 해결법
    • 이미지 스플리팅 -> 많은 이미지 다운로드 대신, 합쳐있는 이미지 다운
    • 코드 압축 -> 코드 용량 감소
    • 이미지 Base64 인코딩 -> 이미지파일 64진법으로 이루어진 문자열로 인코딩
      • 인코딩 -> 정보의 형태나 형식을 표준화, 보안, 처리속도 향상, 저장공간 절약 등을 위해 다른 형태나 형식으로 변환하는 처리방식
      • (장점)서버와 연결을 열고 이미지에 대해 서버에 HTTP 요청을 할 필요 없음
      • (단점)변환 시, +37% 크기 증가

HTTP 1.1

  • 매번 TCP연결 X -> 한번 TCP 초기화 후 'keep-alive 옵션'사용 -> 여러 파일을 송수신할 수 있음
    • HTTP 1.0에도 있었지만 표준화 X -> HTTP 1.1 부터 표준화
    • TCP 3핸드쉐이크 발생 후, 다음부터 발생 X
    • (단점) 문서 안에 있는 다수의 리소스를 처리하려면 요청할 리소스 개수에 비례해서 대기 시간이 길어짐
  • HOL Blocking
    • 네트워크에서 같은 '큐'에 있는 패킷이 그 첫번쨰 패켓에 의해 '지연'될 떄 발생하는 성능 저하 현상
  • 무거운 헤더 구조
    • HTTP 1.1에는 압축이 안되어서 무거웠음

HTTP 2.0

  • HTTP 1.x 보다 시간지연 줄이고, 응답 시간 빠르게, 우선순위 처리를 도와주는 프로토콜
  • 멀티플렉싱 -> 여러 개의 스트림을 사용하여 송수신 하는 것
    • 특정 스트림 패킷 고장? -> 해당 스트림만 오작동! 나머지 스트림은 멀쩡!
    • 스트림 -> 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이트 흐름
    • 애플리케이션에서 받아온 메시지를 독립된 프레임으로 분할, 그 후 서로 숭수신 한 이후 다시 조립하며 데이터를 주고받음
    • 따라서! -> 단일 연결사용해서 병렬로 여러 요청 받는것 가능! -> HTTP 1.x의 문제인 HOL Blocking 해결!
  • 헤더압축 -> HTTP 1.x 큰 헤더 문제점 해결
    • 허프만 코딩 압축 알고리즘 사용 -> HPACK압축형식
      • 문자열을 문자 단위로 쪼개 빈도수 셈 -> 빈도가 높은 정보 적은 비트 수 표현
      • 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현해서 전체 데이터의 표현에 필요한 비트양을 줄이는 원리
  • 서버푸시 -> HTTP 1.1 클라이언트가 서버에 요청해야 파일을 다운
    • 클라이언트가 요청없이 서버가 바로 리소스 푸시!

HTTP 3.0

  • HTTP 3.0은 HTTP 1.1 및 HTTP 2.0과 World Wide Web에서 정보를 교환
  • TCP위에서 돌아가는 HTTP 2.0과 달리 HTTP 3.0은 QUIC이라는 계층 위에서 돌아감
  • TCP 기반이 아닌 UDP 기반
  • 장점
    • HTTP 2.0의 장점(멀티플렉싱)가짐
    • 초기 연결 설정 시 지연 시간 감소
      - QUIC은 TCP 사용 안함 -> 번거로운 3웨이 핸드쉐이크 X
      - QUIC는 첫 연결 1-RTT만 소요 -> 클라이언트와 서버가 서로 응답하면 바로 본 통신 시작
      - QUIC는 순방향 오류 수정 메커니즘(FEC Forward Error Correction) 적용되어 있음 -> 전송한 패킷이 손실? 수신측에서 에러 검출하고 수정하는 방식 -> 열악한 네트워크 환경에서 낮은 패킷 손신률(장점)

참조

https://withbundo.blogspot.com/2021/02/http-http-10-http-11.html
https://yms2047.tistory.com/entry/%EB%A9%80%ED%8B%B0%ED%94%8C%EB%A0%89%EC%8B%B1multiplexing
https://dolphinsarah.tistory.com/50
https://lalwr.blogspot.com/2019/01/http1-vs-http2.html
https://en.wikipedia.org/wiki/HTTP/3

profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글