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 구축 방법
- CA에서 구매한 인증키 기반으로 HTTPS 서비스 구축
- HTTPS 제공하는 로드밸런서
- 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 |