Network

[Network] HTTP (HyperText Transfer Protocol) 기본 개념 및 정리

pongic 2022. 10. 4. 18:54
반응형

HTTP (HyperText Transfer Protocol)란?

HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜이다. HTTP는 웹 브라우저와 웹 서버의 소통을 위해 디자인 되었다. 전통적인 클라이언트-서버 모델에서 클라이언트가 HTTP Messages 양식에 맞춰 요청을 보내면, 서버도 HTTP Messages 양식에 맞게 응답한다. HTTP는 특정 상태를 유지하지 않는 특징이 있다.

 

 

HTTP Messages 구조

HTTP Messages는 두 가지 유형이 있다. 요청(Requests)와 응답(Responses)

HTTP Messages는 텍스트 정보로 구성되는데 개발자는 이를 직접 작성할 필요가 거의 없다. 구성 파일, API, 기타 인터페이스에서 자동으로 완성해주기 때문이다.

  1. start line : 요청이나 응답의 상태를 나타낸다. 항상 첫 번째 줄에 위치한다. 응답(Responses)에서는 status line이라고 부른다.
  2. HTTP headers : 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합이다.
  3. empty line : 헤더와 본문을 구분하는 줄이다.
  4. body : 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함한다. 요청과 응답의 유형에 따라 선택적으로 사용한다.

 

 요청(Requests)

  • Start line 
    • 수행할 작업 (GET, PUT, POST 등)이나 방식(HEAD or OPTIONS)을 설명하는 method
    • 요청 대상(URL이나 URI)또는 프로토콜, 포트, 도메인의 절대 경로, 형식은 HTTP method마다 다르다.
    • HTTP 버전

 

  •  Headers
    • Request headers : fetch를 통해 가져올 리소스나 클라이언트 자체에 대한 자세한 정보를 포함한다.
    • General headers : 메시지 전체에 해당하는 헤더이다.
    • Representation headers (Entity headers) : body에 담긴 리소스의 정보를 포함하는 헤더이다.

 

  • Body
    • HTTP messages 구조의 마지막에 위치한다.
    • 모든 요청에 body가 필요하지는 않다. GET, HEAD, DELETE, OPTIONS 처럼 서버에 리소스를 요청하는 경우에는 body가 필요하지 않다. POST, PUT과 같은 일부 요청은 데이터를 업데이트하기 위해 사용한다.
    • Single-resource bodies(단일-리소스 본문) : 헤더 두 개(Content-Type, Content-Length)로 정의된 단일 파일로 구성된다.
    • Multiple-resource bodies(다중-리소스 본문) : 여러 파트로 구성된 본문에서는 각 파트마다 다른 정보를 지닌다.

 

응답(Responses)

  • Status line
    • 응답의 첫 줄
    • 현재 프로토콜의 버전
    • 상태 코드 - 요청의 결과를 나타낸다. (200, 302, 404등)
    • 상태 텍스트 - 상태 코드에 대한 설명

 

  • Headers
    • Response headers : 위치 또는 서버 자체에 대한 정보와 같이 응답에 대한 부가적인 정보를 갖는 헤더이다.
    • General headers : 메시지 전체에 적용되는 헤더이다.
    • Representation headers (Entity headers) : body에 담긴 리소스의 정보를 포함하는 헤더이다.

 

  • Body
    • HTTP messages 구조의 마지막에 위치한다.
    • 모든 응답에 body가 필요하지는 않다. (201, 204와 같은 상태 코드)
    • Single-resource bodies(단일-리소스 본문) : 길이가 알려졌을 경우는 두 개의 헤더(Content-Type, Content-Length)로 정의하고 모를 때에는 Transfer-Encoding이 chunked로 설정되어 있으며, 파일은 chunk로 나뉘어 인코딩되어 있다.
    • Multiple-resource bodies(다중-리소스 본문) : 서로 다른 정보를 담고 있는 body이다.

 

HTTP 메서드

GET

가장 많이 쓰이고 서버에게 리소스를 달라고 요청한다.

 

POST

요청 데이터 처리, 주로 데이터 등록에 사용된다.

 

PUT

리소스를 대체한다. 해당 리소스가 없으면 생성한다. 업데이트 하기 위해 서버로 데이터를 보내는 데 사용된다.

 

PATCH

리소스를 일부만 변경한다.

 

DELETE

리소스를 삭제한다.

 

 

HTTP 상태코드

1xx

요청이 수신되어 처리중

 

2xx 

요청 정상 처리

 

4xx

클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없다.

 

5xx

서버 오류, 서버가 정상 요청을 처리하지 못한다.

반응형