📗 Computer Science/Network

📗[CS/Network] 05. HTTP

혜덕hyeduck 2024. 5. 31. 21:42

HTTP/1.0

  • 한 연결당 하나의 요청 처리 ⇒ RTT 증가
    • RTT : 패킷 왕복 시간
  • 서버로부터 파일을 가져올 때마다 TCP 3-way handshake를 계속 열어야 하기 때문에 RTT 증가

RTT 증가 해결 방법

  • 이미지 스플리팅 : 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드 받고, 이를 기반으로 background-image의 position을 수정하여 이미지 표기
  • 코드 압축 : 개행 문자, 빈칸을 없애서 코드 크기 최소화
  • 이미지 Base64 인코딩 : 이미지 파일을 64진법으로 이루어진 문자열로 인코딩 → 그러나 37% 정도 크기가 커지는 단점
    • 인코딩 : 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해 다른 형태나 형식으로 변환하는 처리 방식

HTTP/1.1

  • 매번 TCP 연결 필요 없이 한 번 TCP 초기화 후 keep-alive 옵션으로 여러 파일 송수신 가능
  • 헤더에 쿠키 등 많은 메타데이터가 압축이 되지 않아 무겁다

HOL Blocking(Head Of Line Blocking)

  • 네트워크에서 같은 큐에 있는 패킷이 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하

HTTP/2

  • HTTP/1.x보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며, 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜

멀티플렉싱

  • 여러 개의 스트림을 사용하여 송수신 ⇒ 특정 스트림의 패킷이 손실되어도 해당 스트림에만 영향
    • 스트림 : 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름
  • 단일 연결을 통해 병렬로 여러 요청을 송수신 가능 ⇒ HOL Blocking 문제 해결

헤더 압축

  • 허프만 코딩 압충 알고리즘
    • 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도수가 높은 정보는 적은 비트수, 낮은 정보는 많은 비트를 사용

서버 푸시

  • 클라이언트 요청 없이 서버가 바로 리소스 푸시 가능

HTTPS

  • HTTP/2는 HTTPS 위에서 동작
  • HTTPS는 애플리케이션 계층과 전송 계층 사이 신뢰 계층인 SSL/TLS를 넣어 신뢰할 수 있는 HTTP 요청을 의미

SSL/TLS

  • 전송 계층에서 보안을 제공하는 프로토콜
  • SSL(Secure Socket Layer)이 버전을 업그레이드하면서 마지막으로 TLS로 변경되었으나 보통은 합쳐서 SSL/TLS라고 부름
  • 공격자가 서버인 척 사용자 정보를 가로채는 네트워크 인터셉터를 방지
  • 보안 세션을 기반으로 데이터를 암호화하며, 해당 세션이 만들어질 때 인증 메커니즘, 키 교환 알고리즘, 해싱 알고리즘이 사용됨

보안 세션

  • 보안이 시작되고 끝나는 동안 유지되는 세션
    • 세션 : 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정 기간 의미 ⇒ 이 기간동안 응용 프로그램, 자원 등을 사용
  • 클라이언트와 서버가 키를 공유하고, 인증, 인증 확인 과정을 거치는 한 번의 RTT가 생긴 후 데이터를 송수신함
    • 클라이언트에서 사이버 슈트(Cypher Suites)를 서버에 전달하면 서버는 해당 사이퍼 슈트의 암호화 알고리즘 리스트를 제공할 수 있는 지 확인 → 가능하면 서버에서 클라이언트로 인증서를 보내는 인증 메커니즘이 시작되고 이후 해싱 알고리즘으로 암호화된 데이터 송수신 시작
      • 사이퍼 슈트 : 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약이며 5개가 존재
        • AEAD 사이퍼 모드 : 데이터 암호화 알고리즘

인증 메커니즘

  • CA(Certificate Authorities)에서 발급한 인증서를 기반으로 이루어짐
    • CA에서 발급한 인증서는 보안 세션을 시작할 때 필요한 공개키를 클라이언트에 제공하고, 사용자가 접속한 서버가 신뢰할 수 있는 서버임을 보장

암호화 알고리즘(키 교환 알고리즘)

  • 디피-헬만 키 교환 알고리즘(DHE)
    • $y = g^xmod\ p$
      • g와 y와 p를 안다면 x를 구하기 어렵다는 원리에 입각
    • 처음 공개 값을 공유 후, 각자 비밀 값과 혼합한 후 혼합 값을 공유 → 여기서 또 각자의 비밀 값과 혼합 → 이후에 공통 암호키인 PSK가 생성
      • 즉, 공개키와 개인키를 결합하여 PSK 생성

해싱 알고리즘

  • 데이터를 추정하기 힘든 더 작고, 섞여 있는 조각으로 만드는 알고리즘
  • ex) SHA-256 알고리즘, SHA-384 알고리즘
  • SHA-245알고리즘 : 해시 함수 결괏값이 256비트인 알고리즘, 블록체인에서 사용
  • 해시 : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값
  • 해싱 : 임의의 데이터를 해시로 바꿔주는 일(해시함수가 담당)
  • 해시 함수 : 임의의 데이터를 입력으로 받아 일정 길이의 데이터로 바꿔주는 함수

HTTP/3

  • HTTP/2가 TCP 위에서 돌아간다면, HTTP/3은 QUIC 계층 위에서 돌아가며, UDP 기반으로 돌아간다.
  • 멀티 플렉싱과 초기 연결 설정 시 지연 시간 감소라는 장점

초기 연결 설정 시 지연 시간 감소

  • 3-way handshake 과정 불필요
    • 첫 연결 설정에 1-RTT만 소요
  • 순방향 오류 수정 메커니즘이 적용
    • 전송한 패킷이 손실되었다면 수신 측에서 에러 검출하고 수정 → 낮은 패킷 손신률