TIL – 면접을 위한 CS 주요 지식 노트 – 05일차(준비 중)

틸: 오늘 나는 배웠다

2023/03/25 (토) / 오늘 날씨:

오늘의 TIL 3 라인 요약

오늘 읽고 있는 것

  • 섹션 2.5 HTTP
  • 예상 질문

책에서 기억하고 싶은 것

(섹션 2.5 HTTP)

HTTP는 전송 계층 위의 애플리케이션 계층이며 웹 서비스가 통신하는 데 사용됩니다.

HTTP/1.0에서 HTTP/3으로 발전했습니다.

(HTTP/1.0)

HTTP/1.0은 기본적으로 연결당 하나의 요청을 처리하도록 설계되었습니다. 이로 인해 RTT가 증가했습니다.

단점은 서버에서 파일을 가져올 때마다 TCP 3-way 핸드셰이크를 지속적으로 열어야 하기 때문에 RTT가 증가한다는 것입니다.

RTT 증가에 대처하는 방법

이를 해결하기 위해 이미지 분할, 코드 압축 및 Base64 이미지 인코딩이 사용되었습니다.

이미지 분할

많은 이미지를 다운로드하면 과부하가 발생하므로 많은 이미지가 포함된 단일 이미지를 다운로드하고 이를 기반으로 배경 이미지 위치를 이용하여 이미지를 표시하는 방법

코드 압축

코드 압축은 줄 바꿈과 공백을 제거하기 위해 코드를 압축하여 코드 크기를 최소화하는 방법입니다.

이미지 Base64 인코딩

이미지 파일을 64개의 16진수 문자열로 인코딩하는 방법. 이 방법은 서버에 연결할 필요가 없고 이미지를 위해 서버에 HTTP 요청을 할 필요가 없다는 장점이 있습니다. 그러나 Base64 문자열로 변환하면 크기가 약 37% 증가합니다.

(HTTP/1.1)

HTTP/1.1에서는 매번 TCP 연결을 설정하는 대신 TCP를 한 번 초기화한 후 keep-alive 옵션으로 여러 파일을 주고받을 수 있습니다.

HTTP/1.0에도 keep-alive가 있었지만 표준화되지 않았고 HTTP/1.1에서 표준화되어 기본 옵션으로 설정되었습니다.

HOL 차단

HOL(Head Of Line Blocking)은 네트워크의 동일한 큐에 있는 패킷이 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상을 말합니다.

무거운 헤더 구조

HTTP/1.1 헤더에는 쿠키와 같은 많은 메타데이터가 포함되어 있으며 압축되지 않았기 때문에 무거웠습니다.

(HTTP/2)

HTTP/2는 HTTP/1.x보다 대기 시간을 줄이고 더 빠른 응답 시간을 제공할 수 있는 SPDY 프로토콜에서 파생된 프로토콜이며 다중화, 헤더 압축, 서버 푸시 및 요청 우선 순위 지정을 지원합니다.

멀티플렉싱

멀티플렉싱은 여러 스트림으로 송수신하는 것을 의미합니다. 특정 스트림의 패킷이 손실되더라도 해당 스트림만 영향을 받고 나머지 스트림은 정상적으로 작동할 수 있습니다.

헤더 압축

HTTP/1.x는 너무 큰 헤더에 문제가 있습니다. HTTP/2에서는 헤더 압축을 래핑하여 해결하며 Huffman 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식을 갖습니다.

허프만 코딩

허프만 코딩은 문자열을 문자 단위로 나누어 주파수를 세고, 고주파 정보는 적은 비트로, 저주파 정보는 많은 비트로 표현하므로 전체를 표현하려면 비트를 줄여야 한다. 데이터 원칙

서버 푸시

HTTP/1.1에서는 클라이언트가 파일을 다운로드하기 위해 서버에 요청을 해야 하지만 HTTP/2에서는 클라이언트 요청 없이 서버가 직접 리소스를 푸시할 수 있습니다.

(HTTPS)

HTTP/2는 HTTPS 위에서 작동합니다. HTTPS는 응용 프로그램 계층과 전송 계층 사이에 SSL/TLS 신뢰 계층이 있는 신뢰할 수 있는 HTTP 요청을 나타냅니다. 이것은 통신을 암호화합니다.

SSL/TLS

SSL(Secure Socket Layer)은 SSL 1.0으로 시작하여 SSL 2.0, SSL 3.0, TLS(Transport Layer Security Protocol) 1.0, TLS 1.3으로 올라갔고 결국 TLS로 이름이 바뀌었지만 흔히 SSL/TLS로 통칭한다. .

SSL/TLS는 전송 계층에서 보안을 제공하는 프로토콜입니다. 클라이언트와 서버가 통신할 때 SSL/TLS는 제3자가 메시지를 도청하거나 변조하는 것을 방지합니다.

보안 세션

보안 세션은 보안이 시작되고 끝나는 동안 유지되는 세션으로, SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보를 전달합니다.

키는 클라이언트 및 서버와 공유되며 이를 기반으로 인증 및 인증 검증이 수행되는 단일 1-RTT 후에 데이터가 송수신됩니다.

클라이언트가 서버에 암호 그룹을 제출하면 서버는 수신된 암호 그룹에 대한 암호화 알고리즘 목록을 제공할 수 있는지 확인합니다. 암호화된 데이터 송수신 시작

암호 슈트

암호 제품군은 일련의 프로토콜, AEAD 암호화 모드 및 해시 알고리즘을 나타내며 그 중 5가지가 있습니다.

– 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(인증 기관)에서 발급한 인증서를 기반으로 하며 CA에서 발급한 인증서는 보안 연결을 시작하는 데 필요한 공개 키를 클라이언트에 제공하고 사용자가 호출한 서버가 신뢰할 수 있는 서버임을 보장합니다. 인증서에는 서비스 정보, 공개 키, 지문 및 디지털 서명이 포함됩니다.

CA 발급 절차

서비스에서 CA 인증서를 발급하려면 사이트 정보와 공개 키를 CA에 제출해야 합니다. 이후 CA는 공개키의 해시인 지문을 이용해 CA의 개인키로 CA 인증서를 발급한다.

오늘 읽은 것

  • 내용적으로는 지난번에 이어 이번에는 네트워크를 구축하기 위한 장치에 대한 내용이었습니다.

당신은 무엇을 알고 싶어

  • RTT: 패킷이 목적지에 도달한 후 소스로 돌아가는 데 걸리는 시간.
  • 인코딩: 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해 정보의 한 형식 또는 형식을 다른 형식 또는 형식으로 변환하는 처리 방법입니다.
  • 스트림: 시간이 지남에 따라 사용 가능한 데이터 항목 집합을 참조하는 데이터 흐름입니다.
  • 세션: 운영 체제에서 특정 사용자가 자산을 사용할 수 있도록 허용하는 특정 기간입니다. 즉, 사용자는 특정 기간 동안 애플리케이션, 리소스 등을 사용할 수 있습니다.
  • 개인 키: 개인 키라고도 하며 개인에게 속하며 해당 개인만 소유할 수 있는 키입니다.
  • 공개 키: 공개 키