아무나개발하자

HTTP의 모든것 본문

HTTP

HTTP의 모든것

개발천재나천재 2022. 12. 20. 18:10

HTTP (HyperText Transfer Protocol)

(거의 모든 형태의 데이터 전송 가능, 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 지금은 HTTP 시대!)

1. HTTP 메시지에 모든 것을 전송

2. HTML, TEXT

3. MAGE, 음성, 영상, 파일

4. JSON, XML (API)

 

 

 

기반 프로토콜

- TCP : HTTP/1.1, HTTP/2

- UDP : HTTP/3.0

 

 

HTTP 특징 (중요)

1. 클라이언트 서버 구조

2. 무상태 프로토콜 (stateless), 비연결성

3. HTTP 메시지

4. 단순함 (확장이 가능)

 

 

 

1. 클라이언트 서버 구조

 

- Request, Response 구조

- 클라이언트는 서버에 요청을 보내고, 응답을 대기

- 서버가 요청에 대한 결과를 만들어서 응답

 

 

 

2. 무상태 프로토콜 (stateless)

- 서버가 클라이언트의 상태를 기억하지 않는다.

- 장점 : 서버의 확장성이 좋음 (스케일 아웃) -> 무한한 서버의 증설이 가능하다.

- 단점 : 클라이언트는 데이터를 추가로 전송해야된다. -> 로그인을 한경우 로그인 상태를 서버 세션에 저장하거나 토큰을 이용해 상태를 확인해야됨

 

 

 

3. 비연결성

- HTTP는 기본이 연결을 유지하지 않는 모델이다.

- 일반적으로 초단위 이하의 빠른 속도의 응답 -> 따라서 서버에서 동시에 처리하는 요청은 매우 작음

- 서버 자원을 매우 효율적으로 사용할 수 있다.

 

 

 

4. 비연결성의 한계와 극복

- TCP/IP 연결을 요청마다 새로 맺어야 한다. -> 3 way handshake 시간이 추가된다는 단점

-지금은 HTTP 지속 연결을 이용해 문제를 해결 (HTML, CSS, JS, 추가 이미지를 함께 다운로드)

 

 

 

 

 

 

5. HTTP 메시지

- 간단하게 HTTP 메시지를 소개하겠다.

 

 

 

 

6. HTTP 메시지 구조

 

- 모든 HTTP 메시지 구조는 이러한 형식으로 생겼다.

- startLine : request Line(요청 메시지), status Line(응답 메시지)

 

 

 

 

 

HTTP 요청 메시지

- Start Line

1.  Request Line

- HTTP 메서드(GET, POST, PUT, PATCH, DELETE) + 요청 대상("/"로 시작하는 절대 경로) + HTTP Version

2. Status Line

- HTTP 버전 + HTTP 상태 코드 + 이유 문구

 

 

- Header

- HTTP 전송에 필요한 모든 부가정보

- 예) Message body 내용, Message body 크기, 압축, 인증, 브라우저 정보 등등 엄청 많음

- 필요시 임의의 헤더 추가도 가능

 

 

- Message Body

- 실제 전송 할 데이터

- HTML문서, 이미지, 영상, Json등등  byte로 표현할 수 있는 모든 데이터는 전송이 가능하다.

'HTTP' 카테고리의 다른 글

웹 브라우저 요청 흐름정리  (1) 2022.12.13
HTTP의 핵심 정리  (0) 2022.12.12
인터넷 네트워크  (0) 2022.07.13