- HTTP는 리소스들을 가져올 수 있도록 해주는 프로토콜
- 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜
- HTML, TEXT, IMAGE, JSON, XML 등 서버간에 데이터를 주고 받을 때 대부분 HTTP를 사용
HTTP 특징
- 클라이언트 서버 구조
- 무상태 프로토콜, 비연결성
- HTTP 메시지
- 단순함, 확장 가능
1) 클라이언트 서버 구조
- 요청 응답 구조
- 클라이언트는 서버에 요청을 보내고, 응답을 대기
- 서버가 요청에 대한 결과를 만들어 응답
2) 무상태 프로토콜(stateless)
- 서버가 클라이언트의 상태를 보존하지 않는다.
- 응답 서버를 쉽게 바꿀 수 있기 때문에 자유로운 스케일 아웃이 가능하다.
- HTTP는 상태를 가지지 않지만 HTTP 쿠키는 상태가 있는 세션을 만들 수 있도록 해준다.
3) 비연결성
- HTTP는 기본이 연결을 유지하지 않는 모델
- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작다.
- 서버 자원을 매우 효율적으로 사용할 수 있다
- 이로 인해 매번 TCP/IP 연결을 새로 맺어야 하나, 지금은 HTTP 지속 연결(Persistent Connections)로 문제를 해결
4) HTTP 메시지
- HTTP 메시지 구조는 개행, 헤더, 공란, 메시지 바디로 구성되어 있다.
시작 라인(요청)
- HTTP 메서드(서버가 수행해야 할 행위)
- 요청 대상(절대경로[?쿼리])
- HTTP 버전
시작 라인(응답)
- HTTP 버전
- HTTP 상태 코드(요청 성공, 실패를 나타냄)
- 이유 문구(사람이 이해할 수 있는 짧은 상태 코드 설명 글)
HTTP 헤더
- HTTP 전송에 필요한 모든 부가정보
- 필요시 임의의 헤더를 추가할 수 있다.
HTTP 메시지 바디
- 실제 전송할 데이터
- HTML 문서, 이미지, 영상, JSON 등 byte로 표현할 수 있는 모든 데이터의 전송이 가능하다.
5) 단순함 확장 가능
- HTTP 메시지는 단순한다.
- 클라이언트와 서버가 새로운 헤더의 의미에 대해 합의만 이루어진다면, 언제든 새로운 기능을 추가할 수 있다
'공부방' 카테고리의 다른 글
[TIL 06/20] IoC, DI, ApplicationContext (0) | 2023.06.20 |
---|---|
[TIL 06/19] (0) | 2023.06.19 |
[인프런] HTTP 메서드 (0) | 2023.03.29 |
[인프런] URI와 웹 브라우저 요청 흐름 (0) | 2023.03.28 |
[인프런] 네트워크 기본 (0) | 2023.03.28 |