모든 개발자를 위한 HTTP 웹 기본 (강의) 지식 정리 3(HTTP 기본)
3. HTTP 기본
3.1 모든것이 HTTP
- 요즘엔 HTTP 메시지에 모든 것을 전송한다.
- HTML, TEXT, IMAGE, 음성, 파일, 영상, JSON, XML 등등
- 서버간에 데이터를 주고 받을때도 대부분 HTTP 사용
HTTP 역사
- HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더X
- HTTP/1.0 1996년: 메서드, 헤더 추가
- HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전
- RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014)
- HTTP/2 2015년: 성능 개선
- HTTP/3 진행중: TCP 대신에 UDP 사용, 성능 개선
기반 프로토콜
- TCP: HTTP/1.1, HTTP/2
- UDP: HTTP/3
- 현재 HTTP/1.1 주로 사용
HTTP 특징
- 클라이언트 서버 구조
- 무상태 프로토콜(스테이스리스), 비연결성
- HTTP 메시지
- 단순함, 확장가능
3.2 클라이언트 서버 구조
- Request Response 구조
- 클라는 서버에 요청을 보내고, 응답 대기
- 서버는 요청에 대한 결과를 만들어 반환(응답)
- 예에에에전에는 이런 구분이 없어서 중구난방이였다고 한다..
- 클라와 서버가 확실히 구분되면서 양쪽이 독립적으로 개발 및 운영하기 편해졌다.
3.3 stateful, stateless
stateless란?
- 서버가 클라이언트 상태를 보존하지 않음, 따로 저장하거나 유지하지 않는다.
- 장점: 서버가 확장하기 쉬워진다.(스케일 아웃)
- 단점: 클라이언트가 추가 데이터를 전송해야된다.
- 클라가 계속해서 추가적인 상태(정보)를 주어야 한다.
- 담당 서버가 장애가 나서 팅겨도 다른 서버가 이어서 계속 행동할 수 있다.
stateful
- stateless 반대
- 담당하고 있는 서버가 장애가 나서 팅기면 클라는 했던 행동을 처음부터 다시해야된다.