HTTP 특징
1. 클라이언트 서버 구조
- Request Response 구조
- 클라이언트는 서버에 요청을 보내고, 응답을 대기
- 서버가 요청에 대한 결과를 만들어서 응답
2. 무상태 프로토콜 (Stateless)
- 서버가 클라이언트의 상태를 보존X
- 중간에 서버가 장애가 나더라도 스케일 아웃(수평 확장)으로 해결 가능
- 모든 것을 무상태로 설계할 수 있는 경우(로그인 필요없는 화면)도 있고, 없는 경우(상태 유지가 필요한 로그인)도 있다.
- 상태 유지는 최소한만 사용
3. 비 연결성 (Connectionless)
- HTTP는 기본이 연결을 유지하지 않는 모델
- 최소한의 자원 유지 => 서버 자원의 매우 효율적인 사용
비 연결성의 한계와 극복
- TCP/IP 연결을 새로 맺어야 함 - 3 way handshake 시간 추가
- 웹 브라우저로 사이트를 요청하면 HTML, js, css, 추가 이미지 등 수많은 자원이 함께 다운로드
- 지금은 HTTP 지속 연결로 문제 해결
HTTP 메시지 구조
시작 라인
- 요청 메시지 (request-line, HTTP 메서드, 요청대상, HTTP 버전)
- 응답 메시지 (status-line, HTTP 버전, HTTP 상태 코드, 이유 문구)
HTTP 헤더
- field-name":" OWS field-value OWS (OWS:띄어쓰기 허용)
- field-name은 대소문자 구분 없음
- HTTP 전송에 필요한 모든 부가정보를 담고 있음
HTTP 메시지 바디
- 실제 전송할 데이터
- byte로 표현할 수 있는 모든 데이터 전송 가능 (Ex. HTML 문서, 이미지, 영상, JSON 등)
📒 출처 : 모든 개발자를 위한 HTTP 웹 기본 지식 by 김영한