HTTP - 웹의 핵심 프로토콜
1. HTTP란?
- 정의: 웹의 기반이 되는 가장 대중적이고 중요한 응용 계층 프로토콜.
- 역할: 클라이언트와 서버 간의 데이터 전송을 담당.
- 특징:
- 요청-응답 기반 프로토콜: 클라이언트와 서버 간의 요청(Request)과 응답(Response)을 주고받음.
- 미디어 독립성: 자원의 형식(HTML, JSON, 이미지 등)에 상관없이 전송 가능.
- 스테이트리스(State-less): 서버는 클라이언트의 상태 정보를 유지하지 않음.
- 지속 연결 지원(Persistent Connection): 하나의 연결에서 여러 요청과 응답 처리 가능.
2. HTTP의 네 가지 특성
1) 요청-응답 기반 프로토콜
- 구조: 클라이언트가 서버에 요청을 보내면, 서버는 이에 대한 응답을 반환.
- 요청-응답 확인 방법:
- 웹브라우저 개발자 도구(F12) → 네트워크 탭 → 요청 및 응답 확인.
- HTTP 메시지 구조:
- 요청 메시지: 클라이언트 → 서버.
- 응답 메시지: 서버 → 클라이언트.
2) 미디어 독립적 프로토콜
- 특징: HTTP는 전송하는 자원의 형식에 제한을 두지 않음.
- RFC 정의: "HTTP는 자원의 특성을 제한하지 않으며, 자원과 상호작용할 수 있는 인터페이스를 정의함."
- 미디어 타입(Media Type):
- 웹상의 파일 확장자와 비슷한 개념.
- 형식:
타입/서브타입
(예: text/html
, image/png
).
- 주요 미디어 타입:
- 텍스트:
text/plain
, text/html
, text/css
.
- 이미지:
image/png
, image/jpeg
.
- 비디오:
video/mp4
.
- 오디오:
audio/mpeg
.
- 어플리케이션:
application/json
, application/pdf
.
3) 상태를 유지하지 않는 프로토콜 (Stateless Protocol)
- 정의: HTTP는 클라이언트와 서버 간의 상태를 유지하지 않음.
- 장점:
- 확장성: 서버가 상태 정보를 유지하지 않기 때문에 여러 서버를 쉽게 확장 가능.
- 견고성: 특정 서버 장애 시, 다른 서버로 요청을 분산 가능.
- 단점 보완: 상태 유지를 위해 쿠키, 세션, 웹 스토리지 등 사용.
4) 지속 연결 지원 (Persistent Connection)
- 정의: HTTP/1.1 이상부터 하나의 연결에서 여러 요청과 응답 처리 가능.
- 비지속 연결과 비교:
- 비지속 연결: 요청-응답마다 TCP 연결을 열고 닫음.
- 지속 연결: 하나의 연결로 여러 요청-응답을 처리 → 네트워크 비용 절감.
3. HTTP 메시지 구조
- 구성 요소:
- 시작 라인(Start Line): 요청/응답 메시지의 첫 번째 줄.
- 요청 메시지: 메서드(Method), 요청 대상(Target), HTTP 버전.
- 응답 메시지: HTTP 버전, 상태 코드(Status Code), 이유 구문(Reason Phrase).
- 헤더(Header Line): 요청/응답에 필요한 부가 정보.
- 예:
Host
, User-Agent
, Content-Type
.
- 본문(Body): 전송하려는 실제 데이터(선택적).
4. HTTP 메서드
- 정의: 클라이언트가 서버에 요청하는 작업의 종류를 지정.
- 주요 메서드:
- GET: 자원 조회.
- HEAD: 헤더 정보만 조회.
- POST: 자원 생성 또는 작업 요청.
- PUT: 자원의 전체 덮어쓰기.
- PATCH: 자원의 부분 수정.
- DELETE: 자원 삭제.
- OPTIONS: 지원하는 메서드 확인.
- CONNECT: 터널링 요청.
- TRACE: 요청-응답 경로 추적.
5. HTTP 상태 코드
- 정의: 요청 결과를 나타내는 3자리 숫자.
- 분류:
- 100번대: 정보 제공.
- 200번대: 성공 (예: 200 OK, 201 Created).
- 300번대: 리다이렉션 (예: 301 Moved Permanently, 302 Found).
- 400번대: 클라이언트 오류 (예: 400 Bad Request, 404 Not Found).
- 500번대: 서버 오류 (예: 500 Internal Server Error, 503 Service Unavailable).
6. 학습 포인트
-
요약:
- HTTP는 요청-응답 기반의 스테이트리스 프로토콜.
- 미디어 독립성과 지속 연결을 통해 효율적 데이터 전송을 지원.
- 요청 메시지의 메서드와 상태 코드의 의미를 명확히 이해.
- HTTP 메시지 구조를 기반으로 하는 다양한 기술 이해.
-
추가 학습 추천:
- HTTP/2, HTTP/3의 특징.
- 쿠키, 세션, 웹 스토리지 개념.
- HTTP 상태 코드별 동작 원리.
HTTP의 기본을 제대로 이해하면, 웹 개발 및 네트워크 전반에 대해 더 깊이 있는 이해가 가능합니다. 추가로 궁금한 점이 있다면 언제든 질문해주세요! 😊