CS/면접을 위한 CS 전공지식 노트

[CH2.5] HTTP

hahahabbb 2024. 12. 18. 19:05

1. HTTP / 1.0

RTT 증가

  • TCP의 3웨이 핸드셰이크 계속 열어야 함 -> RTT 증가

RTT 증가 해결 방안

  • 이미지 스플리팅 : 대용량 이미지 과부하 방지를 위해 많은 이미지가 합쳐 있는 하나의 이미지 다운 -> backgroud-image의 position으로 이미지 표기
  • 코드 압축 : 코드를 압축해서 코드 크기 최소화
  • 이미지 Base64 인코딩 : 이미지 파일을 64진법으로 이루어진 문자열로 인코딩. 이미지를 서버에 HTTP 요청할 필요 없음.

 

2. HTTP / 1.1

- (매번 TCP 연결 X) 한 번 TCP 초기화 -> keep-alive로 여러 개 파일 송수신

- 한 번 TCP 3-웨이 핸드셰이크 발생하면 그 후 발생 X

 

HOL Blocking

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

무거운 헤더 구조

  • HTTP/1.1 헤더 - 쿠키 등 많은 메타데이터 포함. 압축 X

 

3. HTTP / 2

- 지연 시간 줄이고 응답 시간 빠르게 가능

- 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리

 

멀티플렉싱

  • 여러 개의 스트림 사용하여 송수신
  • 패킷 손실에도 다른 스트림 영향 X
  • 단일 연결을 사용해서 병렬로 여러 요청 받거나 응답 가능 -> HOL Blocking 해결
  • 허프만 코딩 : 문자열을 문자 단위로 쪼개 빈도수에 비트 수 반비례하여 사용

 

 

서버 푸시

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

 

4. HTTPS

- HTTPS : 애플리케이션 계층과 전송 계층 사이에 신뢰 계층(SSL/TLS 계층)을 넣은 신뢰할 수 있는 HTTP 요청

 

SSL/TLS

  • SSL/TLS : 전송 계층에서 보안을 제공하는 프로토콜
  • '클라이언트 - 서버' 통신할 때 메시지 도청이나 변조 제지
  • 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘

보안 세션

  • 보안이 시작되고 끝나는 동안 유지되는 세션. 핸드셰이크를 통해 보안 세션 생성

 

사이퍼 슈트

  • 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약

 

AEAD 사이퍼 모드

  • 데이터 암호화 알고리즘 ex) AES_128_GCM
  • AES_128_GCM : 128비트의 키를 사용하는 표준 블록 암호화 기술 + 병렬 계산에 용이한 암호화 알고리즘 GCM

인증 메커니즘

  • CA에서 발급한 인증서 기반
  • '공개키'를 클라이언트에 제공, 사용자가 접속한 '서버'가 신뢰할 수 있는 서버임을 보장

CA 발급 과정

  • 사이트 정보, 공개키를 CA에 제출하며 인증서 발급

암호화 알고리즘

  • 대수곡선 기반의 ECDHE / 모듈식 기반 DHE 사용
  • 디피-헬만 방식 근간 : 처음에 공개 값 공유 -> 각자의 비밀 값과 혼합 후 혼합 값 공유 -> 각자의 비밀 갑소가 혼합 -> 공통 암호키(PSK) 생성

 

해싱 알고리즘

  • 데이터 추정하기 힘든 작고 섞여 있는 조각으로 만드는 알고리즘

 

SHA-256 알고리즘

  • 해시 함수 결괏값이 256비트인 알고리즘.
  • 비트코인 등 블록체인 시스템

SEO에도 도움되는 HTTPS

  • SEO : 검색엔진 최적화
  • 캐노니컬 설정 필요
  • 페이지 속도 개선
  • 사이트맵 관리

 HTTP 구축 방법

  1. CA에서 구매한 인증키 기반으로 HTTPS 서비스 구축
  2. HTTPS 제공하는 로드밸런서
  3. HTTPS 제공하는 CDN

5. HTTP/3

- TCP 위에서 돌아가는 (HTTP/2, HTTP/3)은 QUIC이라는 계층 위에서 돌아감. UDP 기반

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

- QUIC은 순방향 오류 수정 매커니즘 적용

'CS > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글

[CH3.2] 메모리  (1) 2024.12.20
[CH3.1] 운영체제와 컴퓨터  (0) 2024.12.20
[CH2.4] IP 주소  (0) 2024.12.13
[CH2.3] 네트워크 기기  (0) 2024.12.12
[CH2.2] TCP/IP 4계층 모델  (0) 2024.12.11