오늘 공부한 네트워크 계층의 핵심, HTTP(HyperText Transfer Protocol)의 주요 개념을 정리합니다.
1. HTTP란?
- 정의: 웹 브라우저(클라이언트)와 웹 서버 간에 데이터를 주고받기 위한 응용 계층(Application Layer) 프로토콜입니다.
- 특징: 주로 TCP/IP 위에서 동작하며, 기본 포트는 80번을 사용합니다.
2. 핵심 특징 (면접 단골 질문 ⭐)
① 비연결성 (Connectionless)
- 클라이언트가 요청을 보내고 서버가 응답을 마치면 즉시 연결을 끊는 방식입니다.
- 장점: 서버 자원을 효율적으로 관리할 수 있습니다.
- 단점: 매 요청마다 새로운 연결을 맺는 오버헤드가 발생합니다. (HTTP/1.1부터
Keep-Alive로 보완)
② 무상태 (Stateless)
- 서버가 클라이언트의 이전 상태를 기억하지 않습니다.
- 장점: 서버의 확장성이 높습니다 (어느 서버가 응답해도 상관없음).
- 단점: 로그인을 유지하기 위해 쿠키(Cookie), 세션(Session), 토큰(JWT) 같은 추가 메커니즘이 필요합니다.
3. HTTP 메시지 구조
[Image of HTTP request and response message structure]
- 시작줄 (Start Line / Status Line)
- 요청:
메소드 URL 버전 (예: GET /index.html HTTP/1.1)
- 응답:
버전 상태코드 상태문구 (예: HTTP/1.1 200 OK)
- 헤더 (Header): 메시지 전송에 필요한 부가 정보 (Host, User-Agent, Content-Type 등)
- 본문 (Body): 실제 전송할 데이터 (HTML, JSON, 이미지 등)
4. HTTP 주요 메소드
| 메소드 | 역할 | 특징 |
|---|
| GET | 리소스 조회 | URL에 데이터 노출, 캐싱 가능, 멱등성(O) |
| POST | 리소스 생성 | Body에 데이터 포함, 서버 상태 변경, 멱등성(X) |
| PUT | 리소스 전체 수정 | 리소스를 완전히 교체, 멱등성(O) |
| PATCH | 리소스 부분 수정 | 리소스의 일부만 변경, 멱등성(X) |
| DELETE | 리소스 삭제 | 특정 리소스 삭제 요청, 멱등성(O) |
5. 필수 응답 상태 코드 (Status Code)
- 2xx (Success): 성공.
200(OK), 201(Created)
- 3xx (Redirection): 요청 완료를 위해 추가 동작 필요.
301(영구 이동), 302(임시 이동)
- 4xx (Client Error): 클라이언트 요청 오류.
400(Bad Request), 401(미인증), 404(Not Found)
- 5xx (Server Error): 서버 처리 오류.
500(Internal Server Error), 503(서비스 이용 불가)
6. HTTP의 발전 요약
- HTTP/1.1: 커넥션 재사용(Keep-Alive) 도입.
- HTTP/2.0: 멀티플렉싱을 통한 속도 개선.
- HTTP/3.0: UDP(QUIC) 기반으로 지연 시간 최소