Post

[Network] HTTP의 구조와 동작 원리

3줄 요약
HTTP는 웹 통신 핵심 프로토콜, 요청-응답 기반·무상태 특성 보유
메서드·헤더·상태 코드 등 메시지 구조로 자원 접근·조작 가능
HTTP/1.1→HTTP/3.0 발전, HOL 블로킹 완화·성능·보안 개선 흐름

💻 컴퓨터 네트워크 시리즈

이 시리즈는 『혼자 공부하는 네트워크』 (강민철 저)
+ 인프런 강의를 기반으로 개인적으로 복습 및 정리한 기록입니다.


🌐 HTTP

  • 웹 세상 기반 핵심 프로토콜
  • 중요한 네 가지 특성
    • 요청-응답 기반 프로토콜
    • 미디어 독립 프로토콜
    • 무상태(stateless) 프로토콜
    • 지속 연결 지원 프로토콜

🔄 요청-응답 기반 프로토콜

클라이언트-서버 구조 기반 요청-응답 방식 개념

  • HTTP 요청 메시지와 HTTP 응답 메시지 형태 차이

🖼️ 미디어 독립 프로토콜

RFC 9110 명세 기반 개념

  • “HTTP가 요청하는 대상은 자원” 정의
  • 자원 특성 제한 없음, 인터페이스 정의 역할

📄 미디어 타입(Media Type)

웹 세상 확장자 개념

  • MIME 타입(Multipurpose Internet Mail Extensions Type) 명칭

🏷️ 구성·종류

타입/서브타입 형식 구성

  • 타입(type): 데이터 유형
  • 서브타입(subtype): 세부 유형
  • 매개변수(optional) 포함 가능 — 타입/서브타입; 매개변수=값 형식
  • 와일드카드(*) 사용 — text/*, image/*, */* 형태
media type media type 출처: 『혼자 공부하는 네트워크』 (강민철 저)

🚫 무상태 프로토콜(stateless protocol)

서버가 클라이언트 상태 정보 미저장 특성

  • 모든 HTTP 요청 독립적 요청 간주

📈 무상태 설계 이유

확장성·견고성 확보 목적

  • 상태 정보 미유지 → 서버 부담 완화
  • 특정 서버 종속 방지
  • 장애 발생 시 서버 교체 용이성 확보

🔗 지속 연결 프로토콜

단일 TCP 연결 내 다중 요청-응답 교환 기술

  • 지속 연결(persistent connection) 또는 킵-얼라이브(keep-alive) 명칭

⏹️ 비지속 연결

  • 요청 처리 후 연결 종료, 반복 수립-종료 과정 발생

🧩 HTTP 메시지 구조 (HTTP/1.1 기준)

http message 출처: 『혼자 공부하는 네트워크』 (강민철 저)
  • 시작 라인, 필드 라인, 메시지 본문 구성
    • 필드 라인 선택적 다중 줄 가능
    • 메시지 본문 선택적 존재
    • 필드 라인·본문 사이 빈 줄 구분

🚀 시작 라인

  • 요청 메시지: 요청 라인(메서드 URI HTTP/버전)
    http request 출처: 『혼자 공부하는 네트워크』 (강민철 저)
  • 응답 메시지: 상태 라인(HTTP/버전 상태코드 Reason-Phrase)
    http response http response

    출처: 『혼자 공부하는 네트워크』 (강민철 저)

📨 필드(헤더) 라인

  • 헤더이름: 값 형태 부가 정보 전달

✉️ 메시지 본문

필요 시 다양한 콘텐츠 타입 사용


🛠️ HTTP 메서드

http method 출처: 『혼자 공부하는 네트워크』 (강민철 저)
  1. GET – 자원 조회 요청
  2. HEAD – 헤더만 반환 요청
  3. POST – 서버 작업(대개 자원 생성) 요청
  4. PUT – 자원 완전 대체 또는 생성 요청
  5. PATCH – 자원 부분 수정 요청
  6. DELETE – 자원 삭제 요청

🛑 HTTP 상태 코드

상태 코드는 HTTP 요청 결과를 나타내는 세 자리 정수

  • 백의 자리 수로 유형 구분

✅ 200-대 상태 코드: 성공

요청 성공 의미

  • 200 OK – 요청 성공
  • 201 Created – 요청 성공 및 새 자원 생성 → Location 헤더로 위치 제공
  • 202 Accepted – 요청 접수, 처리 미완료(배치 작업 등)
  • 204 No Content – 요청 성공, 본문 없음(삭제 등)

🔀 300-대 상태 코드: 리다이렉션

추가 조치(다른 위치 요청) 필요

http redirect 출처: 『혼자 공부하는 네트워크』 (강민철 저)
  • 영구 리다이렉션
    • 301 Moved Permanently – 재요청 시 메서드 변경 가능
    • 308 Permanent Redirect – 메서드 변경 금지
  • 일시 리다이렉션
    • 302 Found – 재요청 시 메서드 변경 가능
    • 303 See Other – 재요청 메서드 GET 고정
    • 307 Temporary Redirect – 메서드 변경 금지

🚫 400-대 상태 코드: 클라이언트 오류

클라이언트 잘못으로 실패

  • 400 Bad Request – 구문·파라미터 오류
  • 401 Unauthorized – 유효 인증 없음 → WWW-Authenticate 헤더로 방법 안내
  • 403 Forbidden – 서버가 요청 거부(권한 등)
  • 404 Not Found – 자원 없음
  • 405 Method Not Allowed – 메서드 미지원

    참고) 인증(Authentication)과 인가(Authorization)는 다름 → 401 Unauthorized 명칭 아쉬움

💥 500-대 상태 코드: 서버 오류

서버 내부 문제로 실패

  • 500 Internal Server Error – 일반 서버 오류
  • 502 Bad Gateway – 게이트웨이·프록시 통신 오류
  • 503 Service Unavailable – 일시 서비스 불가(과부하·점검)

📈 HTTP 발전

버전주요 특징한계·개선 포인트
HTTP/0.9GET 메서드·헤더 미지원시대적 역할 종료
HTTP/1.0HEAD·POST 지원·헤더 도입지속 연결 비공식 지원 한계
HTTP/1.1지속 연결·파이프라이닝·콘텐츠 협상HOL 블로킹 문제 발생
HTTP/2바이너리 프레이밍·헤더 압축·서버 푸시·멀티플렉싱전송 계층 TCP 의존
HTTP/3QUIC(UDP) 기반·0-RTT 핸드셰이크·HOL 블로킹 완화신규 프로토콜 적응 과제

✅ 마무리 정리

HTTP는 클라이언트-서버 요청-응답 구조·무상태 설계·지속 연결 기능 결합 프로토콜
메서드·헤더·상태 코드 체계 통해 자원 접근·조작 표준화 달성
HTTP/1.1→HTTP/2→HTTP/3 전환 흐름 속 HOL 블로킹 완화·성능·보안 강화 지속 진행 필요성 강조


📚 참고 자료


읽어주셔서 감사합니다 🙌
내용이 도움이 되었거나, 틀린 부분이 있다면 댓글이나 GitHub Issue로 알려주세요 😊

This post is licensed under CC BY 4.0 by the author.