@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • bedrock agent
  • flink
  • java
  • SageMaker
  • AWS CodeCatalyst
  • Python
  • bedrock
  • AWS CodeStar
  • sagemaker unified studio
  • converse api
  • bedrock api
  • AWS CodeArtifact
  • 심폴릭링크
  • CLASS
  • 오블완
  • 티스토리챌린지
  • Agent
  • invokemodel api
  • knowledge bases
  • 인터페이스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

HTTP2 특징 정리 및 springboot로 테스트하기
기타

HTTP2 특징 정리 및 springboot로 테스트하기

2022. 10. 8. 17:56
반응형

 

HTTP 1.1 의 전형적인 문제들


  1. RTT 시간 증가 → http1.1의 하나의 커넥션당 하나의 요청을 처리하므로 tcp 3-way handshaking이 매번 커넥션 요청을 할때마다 일어남 이건 불필요한 RTT 시간을 증가시킴(syn를 보내고 syn ack를 받는 왕복 시간)
  2. Client-driven transmission → 클라이언트가 요청하지 않으면 서버는 클라이언트로 쪽으로 정보를 전달하지 못함
  3. Fat message headers → 헤더에는 수많은 메타 정보가 들어감. 매 요청 시마다 엄청난 양의 헤더를 전송해야하며 중복된 정보가 전송될 수도 있음
  4. Head of line blocking → 하나의 커넥션당 하나의 요청을 극복하기 위해 pipelining 기법을 도입해서 순차적으로 여러 개의 요청을 보낼 수 있도록 함. 그러나 요청을 순차적으로 처리하다보니 앞의 요청이 처리가 지연되면 뒤의 요청도 처리가 지연되게 되는 문제 발생

https://gngsn.tistory.com/99

해결책으로 등장한게 이미지를 합쳐서 큰이미지를 만든다던지 domain sharing 방법 -> but 한계점이 존재

 

SPDY 등장

https://d2.naver.com/helloworld/140351

구글에서 웹페이지 전송 지연을 줄이고 웹 보안을 개선하는 목표로 개발한 비표준 포로토콜

특징

  • TLS위에서만 동작(https로 작성된 웹사이트에서만 동작)
  • http 헤더 압축 → HTTP 헤더에는 요청마다 반복되는 내용이 매우 많으므로 헤더 압축만으로도 충분한 성능 향상 효과를 얻을 수 있다 → 요청이 많아질수록 압축률은 더 커지고 효과적!
  • 텍스트가 아닌 바이너리 프로토콜 → 프레임을 텍스트가 아닌 바이너리로 구성하므로 파싱하는 속도가 빠르고 오류 발생 가능성도 낮음
  • multiplexing - > 하나의 커넥션 안에서 다수의 독립적인 스트림을 동시에 수행
  • Full-duplex interleaving과 스트림 우선순위 → 한 스트림이 진행 중이더라도 다른 스트림이 끼어드는(interleaving) 것을 허용하고 스트림의 우선순위 설정도 지원
  • Server Push → 서버에서 직접 푸시가 가능 ex) 클라이언트가 이미지 같은게 들어가있는 html 파일을 요청하면 이미지도 미리 같이보냄

SPDY는 http2의 참고규격이 되었고 특징들을 비교해보면 비슷한 특징들이 많음

 

HTTP 2의 특징


  • multiplexed streams → 하나의 커넥션으로 동시에 여러 개의 메시지를 주고 받을 수 있고 응답은 순서에 상관없이 stream으로 주고 받게됨. http/1.1의 connection keep-alive, pipelining 개선시킴
  • Stream Prioritization → 응답에 대한 우선순위를 정해 우선순위가 높을수록 응답을 빨리 하도록 함.
  • server push → 서버가 클라이언트의 요청없이 응답을 보냄 위의 예시참고
  • Header Compression → Header Table과 Huffman Encoding을 사용하는 HPACK 압축방식을 이용!                                  클라이언트와 서버는 각각 Header Table(static, dynamic 존재)을 관리하고 이전 요청과 동일한 부분은 table의 index만 찾아서 보내고 변경되는 값은 Huffman Encoding을 한 후 보냄 -> Header의 크기를 경량화

https://web.dev/performance-http2/

 Huffman Encoding이란 앞서 보낸 정보와 달라진 정보만 다음 메시지에서 보내는 과거와 현재의 차이 기반 압축 기술
  • Binary protocol -> 앞서 설명한 것처럼 바이너리로 인코딩한 후 스트림으로 보냄

https://web.dev/performance-http2/

 

 

스프링부트 환경에서 HTTP2 테스해보기

아래 명령을 intellij 명령어에서 입력!

그 다음 application.properties 파일에 다음과 같은 내용을 추가해줍니다! 비밀번호는 본인이 설정한 비밀 번호 넣어주면 되고 -alias는 저는 spring을 줬기 때문에 spring을 넣었습니다!

curl 은 url에 요청하는 명령어이며

-I : http header만 보여주는 옵션

-k:  https 사이트를 SSL 검증 없이 연결

 

실제로 대표적인 사이트들의 사용 프로토콜

발표 자료로 준비하던 거라서 텍스트가 ㅎ,,ㅎ

 

 

 

자료 링크


https://web.dev/performance-http2/

https://http2.github.io/

https://gngsn.tistory.com/99

https://velog.io/@dsunni/Spring-Boot-스프링부트-원리-내장-서버-HTTPS와-HTTP2-1vcfg132

https://d2.naver.com/helloworld/140351

반응형
저작자표시 (새창열림)

'기타' 카테고리의 다른 글

CI / CD 에 대해서..  (0) 2023.06.04
QUIC HTTP/3 내용 정리  (0) 2022.12.08
WebRTC 내용 정리  (0) 2022.12.08
HTTP2 정리 내용  (0) 2022.12.08
gRPC 공부 내용 정리  (0) 2022.12.08
    '기타' 카테고리의 다른 글
    • QUIC HTTP/3 내용 정리
    • WebRTC 내용 정리
    • HTTP2 정리 내용
    • gRPC 공부 내용 정리
    @Eeap
    @Eeap

    티스토리툴바