[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/*
,*/*
형태
🚫 무상태 프로토콜(stateless protocol)
서버가 클라이언트 상태 정보 미저장 특성
- 모든 HTTP 요청 독립적 요청 간주
📈 무상태 설계 이유
확장성·견고성 확보 목적
- 상태 정보 미유지 → 서버 부담 완화
- 특정 서버 종속 방지
- 장애 발생 시 서버 교체 용이성 확보
🔗 지속 연결 프로토콜
단일 TCP 연결 내 다중 요청-응답 교환 기술
- 지속 연결(persistent connection) 또는 킵-얼라이브(keep-alive) 명칭
⏹️ 비지속 연결
- 요청 처리 후 연결 종료, 반복 수립-종료 과정 발생
🧩 HTTP 메시지 구조 (HTTP/1.1 기준)
- 시작 라인, 필드 라인, 메시지 본문 구성
- 필드 라인 선택적 다중 줄 가능
- 메시지 본문 선택적 존재
- 필드 라인·본문 사이 빈 줄 구분
🚀 시작 라인
- 요청 메시지: 요청 라인(
메서드 URI HTTP/버전
) - 응답 메시지: 상태 라인(
HTTP/버전 상태코드 Reason-Phrase
)출처: 『혼자 공부하는 네트워크』 (강민철 저)
📨 필드(헤더) 라인
헤더이름: 값
형태 부가 정보 전달
✉️ 메시지 본문
필요 시 다양한 콘텐츠 타입 사용
🛠️ HTTP 메서드
- GET – 자원 조회 요청
- HEAD – 헤더만 반환 요청
- POST – 서버 작업(대개 자원 생성) 요청
- PUT – 자원 완전 대체 또는 생성 요청
- PATCH – 자원 부분 수정 요청
- DELETE – 자원 삭제 요청
🛑 HTTP 상태 코드
상태 코드는 HTTP 요청 결과를 나타내는 세 자리 정수
- 백의 자리 수로 유형 구분
✅ 200-대 상태 코드: 성공
요청 성공 의미
- 200 OK – 요청 성공
- 201 Created – 요청 성공 및 새 자원 생성 →
Location
헤더로 위치 제공 - 202 Accepted – 요청 접수, 처리 미완료(배치 작업 등)
- 204 No Content – 요청 성공, 본문 없음(삭제 등)
🔀 300-대 상태 코드: 리다이렉션
추가 조치(다른 위치 요청) 필요
- 영구 리다이렉션
- 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.9 | GET 메서드·헤더 미지원 | 시대적 역할 종료 |
HTTP/1.0 | HEAD·POST 지원·헤더 도입 | 지속 연결 비공식 지원 한계 |
HTTP/1.1 | 지속 연결·파이프라이닝·콘텐츠 협상 | HOL 블로킹 문제 발생 |
HTTP/2 | 바이너리 프레이밍·헤더 압축·서버 푸시·멀티플렉싱 | 전송 계층 TCP 의존 |
HTTP/3 | QUIC(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.