HTTP 웹 기본 - 03. HTTP 기본
HTTP
HTTP란?
- HyperText Transfer Protocol
- 지금은 HTTP 시대라고 할 만큼 모든 것을 HTTP 메세지에 담아서 전송
- HTML, TEXT, 이미지, 음성, 영상, 파일, JSON, XML (API) 등등
- 서버 간에 데이터를 주고 받을 때도 대부분 HTTP 사용
- HTTP/1.1
- 1997년 개발
- 가장 많이 사용
- 기반 프로토콜
- TCP : HTTP/1.1, HTTP/2
- UDP : HTTP/3
- 크롬 개발자 모드 - Network - Protocol에서 사용하는 HTTP 버전 확인 가능 (h2 : HTTP/2)
HTTP 특징
클라이언트 서버 구조
- Request - Response 구조
- 클라이언트 : 서버에 요청을 보내고, 응답을 대기
- 서버 : 요청에 대한 결과를 만들어서 응답
- 클라이언트와 서버가 분리되어 있어 둘이 독립적이게 진화 가능
무상태 프로토콜 (Stateless)
- Stateful과 반대의 개념
- 서버가 클라이언트의 상태를 보존하지 않음
- 대용량 트래픽이 한 번에 몰릴 때를 대비하기 위하여 Stateless하게 개발하는 것이 중요
- 장점 : 서버 확장성이 높음 (스케일 아웃 - 수평 확장)
- 단점 : 클라이언트가 많은 데이터를 서버로 전송
- 한계
- 모든 것을 무상태로 설계할 수도 있으나, 그러지 못하는 경우도 있음
Stateful
항상 같은 서버가 유지되어야 에러가 발생하지 않음.
로그인과 같은 기능들 => 쿠키, 세션 등을 사용해서 상태 유지 (최소한으로 사용)
비연결성
- 연결을 유지하지 않는 모델
- 일반적으로 초 단위 이하의 빠른 속도로 응답
- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요쳥은 수십개 이하로 매우 작음
- 서버 자원을 가용성을 높여줌
- 한계
- 매번 연결을 끊으므로 TCP/IP 연결을 새로 맺어야 함
- HTML 이외 js, css, img 등 많은 자원이 매번 다운로드 되므로 비효율적
- HTTP 지속 연결로 문제 해결
HTTP 메세지를 통해 통신
- HTTP 메세지 구조
- request-line (요청 메세지)
- method SP(공백) request-target SP(공백) HTTP-version CRLF(엔터)
- method
- HTTP 메소드 게시글
- GET, POST, PUT, DELETE 등등
- request-target (요청 대상)
- 절대경로[?query]
- start-line - status-line (응답 메세지)
- HTTP-version SP(공백) status-code SP(공백) reason-phrase CRLF(엔터)
- status-code
- 200, 400, 500과 같은 요청에 대한 성공, 실패를 나타내주는 코드
- reason-phrase
- 사람이 이해할 수 있는 짧은 상태 코드 설명 글
- header
- field-name: OWS(띄어쓰기 허용) field-value OWS(띄어쓰기 허용)
- field-name 대소문자 구분 X
- HTTP 전송에 필요한 모든 부가 정보가 포함
- 표준 헤더가 너무 많음…
- 필요시 임의의 헤더 추가 가능
- body
- 실제 전송할 데이터
- byte로 표현할 수 있는 모든 데이터 전송 가능
단순하며 확장이 가능
- 단순하고 스펙도 읽어볼만 함
- HTTP 메세지도 매우 단순함
댓글남기기