HTTP 프로토콜의 진화 과정
HTTP(HyperText Transfer Protocol)는 TCP 기반 애플리케이션 계층 프로토콜로, 데이터 전송 세부사항보다 클라이언트-서버 간 데이터 형식 규정에 중점을 둡니다. 기본 포트는 80번입니다.
HTTP 0.9 (1991)
초기 HTML 페이지만 전송 가능했으며 GET 메서드 단독 지원. 정적 웹사이트 구축에 사용됨.
HTTP 1.0 (1996)
이미지/동영상 등 바이너리 파일 지원 추가, POST/HEAD 메서드 도입, 메타데이터 필드(문자셋, 인코딩, 상태 코드) 정의.
HTTP 1.1 (1997)
지속 연결(Persistent Connection) 구현: 단일 TCP 연결로 다중 요청 처리. Pipelining 기법으로 순차적 응답 대기 없이 다중 요청 전송 가능. PUT/PATCH/OPTIONS/DELETE 메서드 추가, Host 헤더 도입.
HTTP/2 (2015)
멀티플렉싱을 통한 동시 처리, 헤더 압축, 서버 푸시 기술 도입.
HTTPS
SSL/TLS 암호화 계층이 추가된 HTTP 보안 버전.
HTTP 기본 구조
웹 표준 프로토콜로 브라우저-서버 간 통신 규칙을 정의합니다. 클라이언트 요청(Request)과 서버 응답(Response) 형식으로 구성됩니다.
// 주요 특징
- 요청/응답 모델 기반
- 무상태성(Stateless): 각 요청 독립적 처리
- TCP 연결 기반 (HTTP/1.1부터 지속 연결 기본 적용)
- B/S 및 C/S 아키텍처 지원
- 컨텐츠 유형 자유롭게 전송 가능
URL 구조
예시: http://www.example.co.kr:8080/news/index.php?cat=tech&id=101#section
- 프로토콜: http://
- 도메인: www.example.co.kr
- 포트: :8080 (생략 시 기본값 적용)
- 경로: /news/index.php
- 쿼리: ?cat=tech&id=101
- 앵커: #section
HTTP 동작 원리
- 클라이언트가 서버의 80포트로 TCP 연결
- HTTP 요청 메시지 전송
- 서버 요청 처리 후 응답 반환
- Connection 모드에 따라 TCP 연결 유지/종료
- 클라이언트 응답 데이터 렌더링
요청 프로토콜
요청라인 // GET /index.html HTTP/1.1 헤더 // Host: example.com 빈줄 // 헤더-본문 분리 본문 // POST 요청 시 사용
GET 요청
특징: URL에 데이터 노출, 1KB 제한, 본문 없음. 브라우저 주소창 입력/링크 클릭 시 기본 적용.
POST 요청
특징: 데이터 본문 포함, 크기 제한 없음, URL 인코딩 적용. 폼 데이터 전송 시 사용.
<form method="post"> 검색: <input type="text" name="query"> <input type="submit"> </form>
Referer 헤더: 요청 출처 추적 및 도용 방지(리퍼러 검증)에 활용
응답 프로토콜
상태라인 // HTTP/1.1 200 OK 헤더 // Content-Type: text/html 빈줄 // 헤더-본문 분리 본문 // HTML/이미지 등 실제 데이터
주요 상태 코드
- 2xx: 성공 (200 OK)
- 3xx: 리다이렉트 (301 영구 이동)
- 4xx: 클라이언트 오류 (404 찾을 수 없음)
- 5xx: 서버 오류 (503 서비스 불가)
304 Not Modified
캐시 검증 메커니즘: If-Modified-Since 헤더와 Last-Modified 값을 비교해 변경 없을 시 캐시 사용
캐시 제어 헤더
Cache-Control: no-store Expires: 0 Pragma: no-cache
HTTP 주요 특성
- TCP/IP 애플리케이션 계층 프로토콜
- 명확한 요청-응답 구조
- 무상태성 (Cookie/Session으로 상태 관리)
- 단일 요청 처리 연결 모델
핵심 질문
GET vs POST
GET: 데이터 URL 노출, 길이 제한, 북마크 가능
POST: 본문에 데이터 포함, 대용량 전송 가능, 보안성 우수
408 vs 504
408: 클라이언트 요청 시간 초과
504: 게이트웨이 응답 대기 시간 초과
Cookie vs Session
Cookie: 클라이언트 저장, 크기 제한 있음
Session: 서버 저장, 세션 ID로 식별, 보안성 우수