HTTP/1.0
- 한 연결당 하나의 요청만 처리
- RTT(Round Trip Time) 증가 문제 발생
RTT란?
패킷이 목적지에 도달하고 다시 출발지로 돌아오기까지 걸리는 시간. 즉, 왕복 시간.
RTT 증가 해결 방법
- 이미지 스플리팅
- 여러 이미지를 합쳐 하나의 이미지로 다운로드한 후 background-image와 background-position을 이용하여 분리해서 표시
#icons>li>a { background-image: url("icons.png"); width: 25px; display: inline-block; height: 25px; repeat: no-repeat; } #icons>li:nth-child(1)>a { background-position: 2px -8px; } #icons>li:nth-child(2)>a { background-position: -29px -8px; }
- 코드 압축
- 공백, 개행 등을 제거하여 크기를 줄임
// 일반 코드 const express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) }) // 압축 코드 const express=require("express"),app=express(),port=3e3;app.get("/",(e,p)=>{p.send("Hello World!")}),app.listen(3e3,()=>{console.log("Example app listening on port 3000")});
- 이미지 Base64 인코딩
- 이미지 파일을 Base64 문자열로 인코딩하여 별도 요청 없이 사용 가능
- 서버 요청을 줄일 수 있으나, 파일 크기가 약 37% 증가하는 단점
HTTP/1.1
- TCP 연결을 유지하는 keep-alive 기능 도입
- 리소스 요청 수에 따라 대기시간이 길어지는 단점 존재
- HOL Blocking (Head Of Line Blocking): 선두 패킷이 지연되면 전체가 지연되는 현상
- 쿠키 등 많은 메타데이터로 인해 헤더가 무거움
HTTP/2
- SPDY 기반으로 발전
- 멀티플렉싱, 헤더 압축, 서버 푸시, 요청 우선순위 처리 지원
멀티플렉싱
- 하나의 연결에서 여러 스트림을 동시에 처리 가능
- 특정 스트림의 오류가 다른 스트림에 영향을 주지 않음
- HOL Blocking 문제 해결 가능
스트림(Stream)?
시간이 지남에 따라 순차적으로 전달되는 데이터 흐름
헤더 압축
- HPACK 형식 사용
- 허프만 코딩 알고리즘 기반
허프만 코딩: 자주 나타나는 문자는 짧게, 드물게 나타나는 문자는 길게 인코딩하여 전체 데이터를 압축하는 방식
서버 푸시
- 클라이언트 요청 없이도 서버가 리소스를 사전 전달 가능
HTTPS
- HTTP/2는 보통 HTTPS 기반에서 동작
- SSL/TLS 계층을 통해 암호화된 안전한 통신 제공
SSL/TLS
- 전송계층에서 보안을 제공하는 프로토콜
- 중간자 공격 방지, 데이터 암호화, 인증 기능 제공
- 보안 세션을 통한 상태 공유 및 암호화
보안 세션
- SSL/TLS 핸드셰이크를 통해 생성
- 인증, 키 교환, 해싱 알고리즘 기반으로 암호화 데이터 전송 수행
사이퍼 슈트 (Cipher Suites)
- 사용 가능한 프로토콜, 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 사이퍼 모드
- 인증된 암호화 방식으로 AES_128_GCM 등이 있음
인증 메커니즘
- CA(Certificate Authority)로부터 발급받은 인증서 기반
- 공개키, 서비스 정보, 서명 등을 포함한 인증서를 통해 서버 신뢰 보장
CA 인증서 발급 절차
- 서비스 정보와 공개키 제출
- 공개키를 해시한 지문 기반으로 인증서 생성 및 발급
암호화 알고리즘
- 키 교환 방식: ECDHE, DHE (Diffie-Hellman 기반)
Diffie-Hellman 키 교환
- 수학적 계산 기반으로 키 공유
- 비밀키 없이도 안전한 공통 암호 키(PSK) 생성
해싱 알고리즘
- SHA-256, SHA-384 등 사용
- 입력 메시지를 고정된 길이의 해시값으로 변환
예: SHA-256 결과값 (해시) → 08cc3029b838d4...
SEO 측면에서 HTTPS의 장점
- HTTPS 사이트가 검색 순위에서 우위
- 구글은 SSL 인증서를 강조
검색 엔진 최적화 (SEO)를 위한 체크리스트
<link re="canonical" href="https://example.com/page2.php" />
- Canonical 설정
- Meta 태그 설정 (예: description, og:title)
- 페이지 속도 개선 (Google PageSpeed Insight 활용)
- Sitemap(XML 형식) 관리
HTTPS 구축 방법
- 직접 CA에서 인증서 구매하여 설치
- 로드 밸런서에서 HTTPS 제공
- CDN을 통해 HTTPS 처리
HTTP/3
- QUIC 프로토콜 위에서 동작 (TCP 아님, UDP 기반)
- 초기 연결에서 3-way 핸드셰이크 생략, 0-RTT 연결 가능
- 패킷 손실 복구에 강한 FEC(Forward Error Correction) 기능 포함
최신 웹 서비스는 성능과 보안을 위해 HTTP/2 이상 및 HTTPS 사용을 권장합니다.
'Network' 카테고리의 다른 글
[Network] IP 주소 (0) | 2025.04.30 |
---|---|
[Network] 네트워크 기기의 처리 범위와 역할 (0) | 2025.04.30 |
[Network] TCP/IP 4계층 모델 (2) | 2025.04.09 |
[Network] 네트워크 기초 개념 총정리(처리량, 토폴로지, 종류, 명령어) (0) | 2025.04.09 |