개인 공부 (23.07~

HTTP 개념, 특성, 구조 - 기본적인 정리

Song쏭 2023. 8. 27. 21:05

일단 HTTP를 쓰지 않으면 브라우저에서 통신을 할 수가 없다.

 

HTTP란?

HyperText Transfer Protocol.

웹에서 데이터를 전송하는 프로토콜.

클라이언트-서버 모델을 기반으로 하며,

클라이언트는 주로 웹 브라우저이고

서버는 웹 서버이다.

클라이언트와 서버 간에 데이터를 어떻게 주고받을 것인지에 대한 규칙을 정의한다.

HTML 문서를 교환하기 위해 만들어진 프로토콜(통신규약).

 

웹의 여러자원(HTML문서, 이미지, 비디오 등)을 URL이라는 주소를 통해 식별한다.

HTTP를 사용하여 클라이언트는 여러한 자원을 요청(request)할 수 있고

서버는 해당 자원을 응답(response)으로 돌려준다.

 

HTTP특성 - 무상태 프로토콜

Stateless : 무상태

상태 비저장 프로토콜.

클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미한다. 

각 요청은 독립적으로 처리된다.

(서버는 동일한 클라이언트의 서로 다른 요청 간의 세션 정보를 유지하지 않는다.)

 

무상태(Stateless)구조에서

서버는 단순히 요청이 오면 응답을 보내는 역할만 수행한다.

상태 관리는 전적으로 클라이언트에게 책임이 있는 것이다.

 

즉, 클라이언트와 서버간의 통신에 필요한 모든 상태 정보들은

클라이언트에서 가지고 있다가 서버와 통신할 때 데이터를 실어 보내는 것이 무상태구조이다.

 

무상태에서는 브라우저는 데이터를 전송할 때마다 연결하고 바로 끊어버리게 된다.

 

이러한 특성으로 웹은 대규모 사용자에게 서비스를 제공하기에 매우 적합하다.

 

HTTP 구조   (HTTP 요청 (Request) / HTTP 응답 (Response) / 주요 HTTP 메서드 / 상태 코드)
HTTP 요청 (Request) - Requset Line, Headers, Blank Line, Body

1) Request Line :

HTTP메서드 (GET, POST, PUT, DELETE 등),

요청 URI, 

HTTP 버전이 포함된다.

ex) GET /index.html HTT/1.1

2) Headers :

요청에 대한 추가 정보를 담는다. 이는 User-Agent, Host, Accept 등 다양한 헤더를 포함할 수 있다.

ex) User-Agent: Mozilla/5.0

ex) Host: www.example.com  

3) Blank Line : 

헤더와 본문을 구분하는 빈 줄 입니다.

4) Body : 

실제 전달할 데이터를 담는다. GET 요청은 본문을 가지지 않는 경우가 일반적이다.

POST나 PUT 같은 요청에서 데이터를 보낼 때 사용된다.

 

HTTP 응답 (Response) - Status Line, Headers, Blank Line, Body

1) Status Line :

HTTP 버전, 상테코드(200,404 등), 상태 메시지(OK, Not Found 등)가 포함된다.

ex) HTTP/1.1 200 OK

2) Headers : 

응답에 대한 추가 정보를 담는다. 이는 Content -Type, Content-Length 등을 포함할 수 있다.

ex) Content-Type : text/html

3) Blank Line : 

헤더와 본문을 구분하는 빈 줄

4) Body : 

실제 응답 데이터를 담는다. HTML, JSON, 이미지 파일 등 다양한 형태로 올 수 있다.

 

cf) F12를 눌러 개발자 도구를 보면,

각 항목에 대한 값들만 간단히 나와있다. 

 

주요 HTTP 메서드

GET : 리소스를 조회한다.

POST : 새로운 리소스를 생성하거나, 서버에 데이터를 전달한다.

PUT : 리소스를 전체 갱신한다.

PATCH :  리소스를 일부 갱신한다.

DELETE : 리소스를 삭제한다.

OPTIONS : 타겟 리소스에 대해 사용 가능한 HTTP 메서드를 설명하는 정보를 가져온다. 이 메서드는 특정 URI가 지원하는 메서드가 무엇인지 알고 싶을 때, 또는 CORS(Cross-Origin Resoucre Sharing) 지원을 확인할 때 유용하다. 웹 클라이언트가 어떤 HTTP메서드를 안전하게 사용할 수 있는지 알려주고, 서버의 기능을 탐색할 수 있게 해준다.

상태 코드

2xx : 성공(Success)

3xx : 리다이렉션(Redirection)

4xx : 클라이언트 오류(Client Error)

5xx : 서버 오류(Server Error)

 

이외에도 HTTP는 캐싱, 쿠키, 세션 등 다양한 기능과 특성을 가지고 있어

웹 서비스의 다양한 요구사항을 충족시키는 데 사용된다.