HTTP 프로토콜 핵심 원리와 동작 방식

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 동작 원리

  1. 클라이언트가 서버의 80포트로 TCP 연결
  2. HTTP 요청 메시지 전송
  3. 서버 요청 처리 후 응답 반환
  4. Connection 모드에 따라 TCP 연결 유지/종료
  5. 클라이언트 응답 데이터 렌더링

요청 프로토콜

요청라인   // 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로 식별, 보안성 우수

태그: HTTP tcp HTTPS GET POST

7월 18일 04:07에 게시됨