
- HTTP는 기본적으로 연결을 유지하지 않는 모델이다.
- 일반적으로 초 단위 이하의 빠른 속도로 응답한다.
- 1시간 동안 수천 명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십 개 이하로 매우 작기 때문에, 비연결성을 통해 서버 자원을 매우 효율적으로 사용할 수 있다.

클라이언트와 서버 간의 연결을 유지하는 모델을 살펴보면, 현재 요청과 응답을 주고 받는 클라이언트 외의 다른 클라이언트들과도 서버가 계속해서 연결을 유지하고 있는 것을 확인할 수 있다. 이의 경우 굉장히 많은 서버 자원이 소모될 수 있다는 단점이 있다.
클라이언트와 서버 간의 연결을 유지하지 않는 모델을 살펴보면, 필요한 요청과 응답을 주고 받은 후 TCP/IP 연결을 바로 종료하는 모습을 확인할 수 있다. 이후 다른 클라이언트와 메세지를 주고 받을 필요가 있을 때도, 이와 같은 방식으로 연결 성립 - 요청/응답 주고 받기 - 연결 해제 의 과정을 거친다.
이의 경우 서버가 유지하는 자원을 최소한으로 줄일 수 있다는 장점이 있다.
HTTP/2, HTTP/3 에서 더 많은 최적화가 되었다.
HTTP 초기 상태에는 하나의 요청에 대해 응답을 보낸 후 연결을 해제하는 방식이기 때문에, 이후 요청이 들어올 경우 새롭게 연결을 성립하는 시간이 필요하다.
HTTP 지속 연결의 경우에는 내부 메커니즘에 따라 일정 시간 동안 연결을 유지하게 된다. 보통 하나의 페이지에 관한 데이터(HTML, CSS, JS, 이미지 등)들을 모두 받는 동안은 연결이 유지된다. 모든 데이터들을 수신했다면 연결을 해제한다.
HTTP 초기 상태에 비해 훨씬 더 짧은 소요 시간을 가질 것임을 알 수 있다.

HTTP 메서드
GET: 리소스 조회
POST: 전송한 데이터의 처리 요청
DELETE: 데이터의 삭제 요청
PUT: 데이터의 수정 요청
HTTP 메시지의 기본 구조
- 시작 라인
- 헤더
- 공백 라인 (필수!)
- 메세지 본문 (보통 응답 메세지에 존재)
절대 경로[?쿼리] 로 넣는다.헤더
Host ➡️ 도메인명 혹은 IP 주소
공백 라인
메세지 본문
보통 생략한다.
헤더
여러 개의 헤더 필드들이 들어가며, HTTP 전송에 필요한 모든 부가 정보들이 들어있다. 예를 들어 메세지 본문의 내용, 크기, 압축, 인증, 요청 클라이언트 정보 등이 있다.
공백 라인
메세지 본문
클라이언트에게 실제로 응답할 데이터가 들어간다. 보통 HTML 문서, 사진, 동영상 등 byte로 표현할 수 있는 모든 데이터의 전송이 가능하다.