soowanlog

HTTP 본문

네트워크/규약

HTTP

개발자솬
네트워크/규약

HTTP

개발자솬 2024. 3. 19. 16:03
728x90
반응형
  • HTTP란?

HyperText Transfer Protocol의 약자로 직역하면 하이퍼텍스트 전달 규약입니다.

 

HTTP는 Client가 요청을 생성하기 위한 연결을 연 다음 응답을 받을 때까지 대기하는 전통적인 Client-Server 모델을 따르고 있습니다.

 

또한, 특정 상태를 유지하지 않는 무상태(stateless) 프로토콜로 상태를 유지하기 위해 Cookie와 Session을 사용합니다.

 

일반적으로 안정적인 TCP/IP 레이어를 기반으로 사용하는 응용 프로토콜입니다.

※ HyperText(하이퍼텍스트)


하이퍼링크를 나타낼 수 있는 초월적인(Hyper) 글(Text).
즉, 하이퍼링크를 통해 사용자가 한 문서에서 다른 문서로 이동할 수 있도록 하는 글.

※ HyperLink(하이퍼링크)


자료가 연결되어 있는 참조 고리.
즉, 사진, 동영상 등 파일의 위치를 지정할 수 있는 링크.
  • HTTP의 동작 방식

Client가 브라우저를 통해 Server에 요청하면 Server는 해당 요청에 대한 결과를 응답하는 형태로 동작합니다.

모든 데이터가 전송되면 Client와 Server 간의 연결이 종료됩니다.

이는 일회성 연결이기 때문에 다음 요청을 처리하기 위해선 새로운 연결을 설정해야 합니다.

 

HTTP의 요청과 응답은 모두 HTTP 메시지를 통해 이루어집니다.

이 메시지는 텍스트 형식으로 구성되어 있으며, headers와 body로 나뉩니다.

  • HTTP 메시지

- 요청 :

1. Start line

HTTP 요청 메서드, 요청 경로, HTTP의 버전 순으로 구성됩니다.

GET /index.html HTTP/1.1

※ HTTP 요청 메서드


▶ GET

특정 리소스를 받기 위한 요청.

▶ POST

Client에서 Server로 데이터를 보내는 데 사용.

▶ PUT

변경 가능한 리소스를 업데이트하는 데 사용되며 항상 리소스 식별 정보를 포함해야 함.

▶ DELETE

특정 리소스를 제거하는 데 사용.

▶ PATCH

PUT과 달리 변경 가능한 리소스의 일부분만 업데이트하는 데 사용.

▶ HEAD

GET과 유사하지만 Server는 실제 데이터를 반환하지 않고, 리소스의 헤더만 반환.
주로 리소스의 존재여부를 확인하거나 메타데이터를 가져올 때 사용.

▶ OPTIONS

Client가 Server의 리소스에 대해 수행 가능한 HTTP 메서드를 알아보기 위해 사용.
일반적으로 Server는 Allow 헤더를 반환. (CORS에 사용)

▶ TRACE

Server에게 요청을 반복하여 디버깅 목적으로 사용.

▶ CONNECT

주로 프록시와 함께 사용되며, 보안 연결을 설정할 때 사용.

 

2. Headers

Header의 이름, 콜론, 값 순으로 구성됩니다.

Host: localhost:8080

※ 주요 HTTP 요청 헤더


▶ Host

요청하는 호스트의 도메인 이름 또는 IP주소를 나타냄.

▶ User-Agent

Client SW(웹 브라우저 등)의 식별자를 포함.
이를 통해 Server는 요청을 보낸 Client의 종류나 버전 등을 파악.

▶ Accept

Client가 Server로부터 받을 수 있는 콘텐츠 유형을 지정.
이를 통해 Server는 적절한 콘텐츠를 선택하여 Client에게 반환.

▶ Accept-Language

Client가 선호하는 언어를 나타냄.

▶ Accept-Encoding

Client가 지원하는 콘텐츠 인코딩(압축 방식)을 나타냄.

▶ Referer

이전 페이지의 주소를 나타냄.
주로 다른 웹 페이지에서 링크를 클릭하여 현재 페이지로 이동한 경우에 사용.

▶ Cookie

Client 측에 저장된 쿠키 정보를 포함.
이를 통해 Server는 Client의 상태를 유지하거나 인증 정보를 확인.

▶ Authorization

요청에 대한 사용자 인증 정보를 포함.
주로 Basic 인증이나 Bearer 토큰과 같은 인증 방식에서 사용.

 

3. Body

요청의 본문으로 모든 요청에 필요한 것은 아닙니다.

주로 POST, PUT 등의 메서드를 사용하여 요청할 때 사용됩니다.

 

HTTP의 요청 본문은 일반적으로 텍스트나 이진 데이터(binary data)의 형태를 가질 수 있습니다.

※ HTTP 요청 본문의 형태


▶ 텍스트

폼(form) 데이터나 JSON, XML과 같은 형식을 사용하여 구조화된 데이터를 전송.

▶ 이진 데이터

파일 업로드나 multipart 요청 등에 사용.

 

- 응답 : 

1. Status line

HTTP의 버전, 상태 코드, 상태 텍스트 순으로 작성됩니다.

HTTP/1.1 200 OK

상태 코드는 요청의 결과를 나타내며, 상태 텍스트는 상태 코드에 대한 설명입니다.

 

2. Headers

※ 주요 HTTP 응답 헤더


▶ Content-Type

응답으로 전송되는 콘텐츠의 유형을 나타냄.
이를 통해 Client는 응답으로 수신되는 데이터의 유형을 확인.

▶ Content-Length

응답 본문의 길이를 바이트 단위로 나타냄.
이를 통해 Client는 응답 본문을 정확하게 수신하고 처리.

▶ Date

응답이 생성된 날짜와 시간을 나타냄.

▶ Server

응답을 생성한 Server의 정보를 포함.

▶ Set-Cookie

Client에게 쿠키를 설정하도록 요청하는 Server의 명령을 포함.
이를 통해 Client는 쿠키를 저장하고 이후 요청에 함께 보냄.

▶ Location

리다이렉션 응답에서 사용되며, Client를 새로운 위치로 리다이렉트 하도록 지시.

▶ Cache-Control

캐시 제어 지시문을 포함.
응답이 캐시 될 수 있는지 여부와 캐시 지시사항을 정의.

▶ Content-Encoding

응답 본문에 적용된 인코딩 방식을 나타냄.
주로 압축 알고리즘을 지정하여 데이터를 압축하는 데 사용.

 

3. Body

Server로부터 Client에게 전송되는 데이터를 포함하는 부분입니다.

이 본문은 Client가 요청한 리소스에 대한 실제 내용을 포함하거나 Server에서 생성된 데이터를 포함할 수 있습니다.

주로 HTML 문서, 이미지, JSON 데이터 등과 같은 다양한 형태의 데이터가 전송됩니다.

 

즉, Client가 요청한 리소스에 대한 실제 내용을 포함하며, 이를 통해 Client는 Server로부터 받은 데이터를 처리하고 사용자에게 적절하게 표시할 수 있습니다.

참    고    자    료

- HTTP란 무엇인가? | 늘 새롭게

 

- HTTP란 무엇인가? | 잇트루

 

- HyperText는 무엇일까? (feat. HTTP,HTML) | Fomagran

728x90
반응형

'네트워크 > 규약' 카테고리의 다른 글

UDP  (0) 2024.03.06
ICMP  (0) 2024.03.06
TCP/IP  (0) 2024.03.06