네트워크 - HTTP

hye·2022년 9월 14일
0

cs

목록 보기
20/20
post-thumbnail

2.5 HTTP

애플리케이션 계층으로서 웹 서비스 통신에 사용됨


2.5.1 HTTP/1.0

한 연결당 하나의 요청을 처리 → RTT 증가를 불러옴

  • RTT (패킷 왕복 시간)

    • 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간
  • RTT 증가 (→ 서버에 부담, 사용자 응답 시간이 길어짐)

    • 서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점

    • 해결 방법

      • 이미지 스플리팅 : 많은 이미지를 다운받게 되면 과부하가 걸리므로 많은 이미지가 합쳐 있는 하나의 이미지를 다운 받고 background-image의 position을 이용하여 이미지 표기하는 방법

      • 코드 압축 : 코드를 압축해서 개행 문자, 빈칸을 없애서 코드의 크기를 최소화하는 방법

      • 이미지 Base64 인코딩 : 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법

        • 장점 : 서버와의 연결을 열고 이미지에 대해 서버에 HTTP 요청을 할 필요가 없음

        • 단점 : 37% 정도 크기가 더 커짐

          인코딩: 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해 다른 형태나 형식으로 변환하는 처리 방식


2.5.2 HTTP/1.1

HTTP/1.0에서 발전한 것

  • 매번 TCP 연결을 하는 것이 아니라 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있음
  • 한번 TCP-3웨이 핸드셰이크가 발생하면 그 다음부터 발생하지 않음
  • 단점 : 문서 안에 포함된 다수의 리소스(이미지, css 파일, script 파일)을 처리하려면 요청할 리소스 개수에 비례해서 대기 시간이 길어짐
  • HOL Blocking (Head Of Line Blocking)
    • 네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상

2.5.3 HTTP/2

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

  • 멀티플렉싱

    • 여러 개의 스트림을 사용하여 송수신

      스트림(stream): 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름

    • 단일 연결을 사용하여 병렬로 여러 요청을 받고 응답을 줄 수 있음 → HTTP/1.x에서 발생하는 HOL Blocking 문제 해결 가능

  • 헤더 압축

    • HPACK 압축 형식: 허프만 코딩 압축 알고리즘 사용

      허프만 코딩(huffman coding): 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현, 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현하여 전체 데이터의 표현에 필요한 비트양을 줄이는 원리

  • 서버 푸시

    • 클라이언트 요청 없이 서버가 바로 리소스를 푸시 가능 ( HTTP/1.1: 클라이언트가 서버에 요청을 해야 파일 다운 가능)

2.5.4 HTTPS

애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청 → 이를 통해 통신을 암호화 함

  • SSL/TLS

    • 전송 계층에서 보안을 제공하는 프로토콜
    • 클라이언트와 서버가 통신할 때 제 3자가 메시지를 도청하거나 변조하지 못하도록 함
    • 공격자가 서버인 척하며 사용자 정보를 가로채는 네트워크상의 ‘인터셉터’를 방지 가능
    • 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용됨
  • 보안 세션

    • 보안이 시작되고 끝나는 동안 유지되는 세션

    • 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유함

    • 세션: 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간을 뜻함

      세션: 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간을 뜻함

    • 사이퍼 슈트

      • 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약을 말함
      • TLS_AES_128_GCM_SHA256
      • TLS_AES_256_GCM_SHA384
      • TLS_CHACHA20_POLY1305_SHA256
      • TLS_AES_128_CCM_SHA256
      • TLS_AES_128_CCM_8_SHA256
    • AEAD 사이퍼 모드

      • AEAD(Authenticated Encryption with Associated Data): 데이터 암호화 알고리즘. AES_128_GCM 등
  • 인증 메커니즘

    • CA(Certificate Authorities)에서 발급한 인증서를 기반으로 이루어짐
    • 안전한 연결을 위한 ‘공개키’를 클라이언트에 제공하고 사용자가 접속한 ‘서버가 신뢰’할 수 있는 서버임을 보장
  • 암호화 알고리즘

    • ECDHE(Elliptic Curve Diffie-Hellman Ephermeral): 대수곡선 기반 (디피-헬만(Diffie-Hellman) 방식 기반)
    • DHE(Diffie-Hellman Ephermeral): 모듈식 기반 (디피-헬만(Diffie-Hellman) 방식 기반)
    • 디피-헬만 키 교환 암호화 알고리즘
      • 암호키를 교환하는 방법
      • 처음에 공개 값을 공유→ 각자의 비밀값과 혼합한 후 혼합값 공유 → 각자의 비밀값과 혼합 → 공통의 암호키 생성
  • 해싱 알고리즘

    • SHA-256 알고리즘
      • 해시 함수의 결괏값이 256비트인 알고리즘
      • 블록체인 시스템에서 많이 사용
      • 해싱을 해야 할 메시지에 1을 추가하는 등의 전처리 → 전처리된 메시지를 기반으로 해시 반환
    • SHA-384 알고리즘
  • SEO (Search Engine Optimization): 검색엔진 최적화. 사용자들이 검색엔진으로 웹사이트를 검색했을 때 그 결과를 페이지 상단에 노출시켜 많은 사람이 볼 수 잇도록 최적화 하는 방법

    • 캐노니컬 설정
    • 메타 설정
    • 페이지 속도 개선
    • 사이트맵 관리
  • HTTPS 구축 방법

    • CA에서 구매한 인증키를 기반으로 HTTPS 서비스 구축
    • 로드밸런서
    • CDN

HTTP/3

UDP 기반으로 QUIC이라는 계층 위에서 돌아감

  • 초기 연결 설정 시 지연 시간 감소
    • TCP가 아닌 UDP 기반이므로 3-웨이 핸드셰이크 과정 불필요
    • QUIC → 순방향 오류 수정 메커니즘 (FEC, Forword Error Correction)이 적용됨
      • 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식
      • 열악한 네트워크 환경에서도 낮은 패킷 손실률
profile
어제보다 더 나은 내일을 꿈꾸는, 성장하는 개발자☀️

0개의 댓글

관련 채용 정보