🐧 HTTP 프로토콜
- HyperText Transfer Protocol
- HTML, text, 사진, 음성, 영상, 파일, json, xml 등 거의 모든 형태의 데이터를 전송 가능
- 서버간에 데이터를 주고받을 때 대부분 HTTP 사용
- Client - Server 구조로 동작
- Stateless
- Connectionless
🐧 HTTP 메서드
- GET : 리소스 조회
- POST : 요청 데이터 처리, 등록
- PUT : 리소스 X → 생성. 리소스 O → 대체
- PATCH : 리소스 부분 변경
- DELETE : 리소스 삭제
🐧 추가적인 HTTP 메서드
HEAD : 상태, 헤더만 반환. 메시지 반환 X 이외에는 GET과 동일
OPTIONS : 대상 리소스에 대한 통신 가능 옵션 설명
CONNECT : 대상 자원으로 식별되는 서버에 대한 터널 설정
TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트 수행
🐧 HTTP 상태 코드
- 1xx : 요청이 수신되어 처리중 (Informational)
- 2xx : 성공 (Successful)
- 3xx : 리다이렉션 (Redirection)
- 4xx : 클라이언트 오류 (Client Error)
- 5xx : 서버 오류 (ServerError)
🐧 HTTP 헤더
[HTTP 헤더 용도]
- HTTP 전송에 필요한 모든 부가정보
- 필요시 임의의 헤더 추가 가능
[HTTP 헤더 구성]
크게 General, Request/Response, Entity 세 가지 Header로 구성
🐧 Stateless VS Stateful
[Stateless]
- 서버가 클라이언트의 상태를 보존하지 않는다.
- 응답 서버를 중간에 쉽게 바꿀 수 있음 → 무한한 서버 증설 가능
- 로그인의 경우 무상태는 어려움
- 클라이언트 요청이 증가해도 서버 대거 투입 가능
- 같은 시간에 딱 맞추어 발생하는 대용량 트래픽
- 스케일 아웃 - 수평 확장 유리
[Stateful]
- 브라우저 쿠키, 서버 세션 등을 사용해서 상태 유지
- 응답 서버가 중간에 바뀌면 상태 유지가 힘듬 → 상태 정보를 바뀌는 서버에게 미리 알려줘야함
- 상태 유지는 최소한만 사용하기
- 전송 데이터양이 큼
🐧 Connectionless
- 요청 - 응답 후 연결 종료.
- 연결을 계속 유지하는 경우, 자원이 심하게 낭비됨
- 일반적으로 초 단위 이하의 빠른 속도로 응답
- 서버 자원을 효율적으로 사용할 수 있음.
🐧 HTTP 역사
- HTTP/0.9(1991) : GET 메서드만 사용 가능
- HTTP/1.0(1996) : 메서드 추가. 헤더 추가.
- HTTP/1.1(1997) : 기반프로토콜 TCP
- HTTP/2(2015) : 성능 개선. 기반프로토콜 TCP
- HTTP/3(ing) : 기반프로토콜 TCP → UDP 채택. 성능 개선