-
HTTP가 뭐예요? (HTTP의 특징과 구조)HTTP 2022. 10. 7. 09:00반응형
지난 포스트를 통해 우리는 HTTP의 진화 과정에 대해서 알아보았습니다.
HTTP가 뭐예요? (HTTP의 진화 과정)
HTTP의 역사 HTTP (Hyper-Text Transfer Protocol) 은 W3에 내재된 통신 규약으로 인터넷을 통해 웹 브라우저와 서버 간 데이터를 인코딩하고 전송하기 위한 프로토콜입니다. 해당 게시물에서는 HTTP의 역사
b-story.tistory.com
오늘은 HTTP의 특징과 구조에 대해서 알아보도록 하겠습니다.
- HTTP의 특징
HTTP의 특징은 아래와 같습니다.
Client - Server (Request - Response) 구조
HTTP의 Client-Server 구조 HTTP는 반드시 클라이언트 측에서 보낸 요청 (Request)에 서버는 반드시 응답 (Response)을 해야 합니다.
반대로 클라이언트가 보낸 요청에 서버가 응답을 안 한다거나, 서버가 요청을 보낼 수 없습니다.
Connectionless (비연결성)
클라이언트의 요청에 서버가 응답을 한 뒤 바로 연결을 끊습니다.
HTTP는 이러한 특징을 가짐으로써 서버에서 연결유지를 위한 불필요한 자원을 낭비를 하지 않습니다.
하지만 최근 전송되는 데이터의 크기가 커지고 HOL blocking을 피하기 위해 지속 연결 (Persistent connections)을 사용하는 추세입니다.
Stateless (무상태성)
HTTP는 서버가 클라이언트의 상태 (State)를 유지하지 않습니다.
이러한 특징 때문에 로그인과 같이 인증을 유지하기 위해서 세션 (Session), 쿠키 (Cookie), 토큰 (Token) 등을 사용합니다.
- HTTP Message 구조
HTTP Message 구조는 요청과 응답이 다르며 그 내용은 다음과 같습니다.
HTTP Request (요청)
HTTP Request message format - Start line (Request line)
HTTP Request message의 시작 라인이며, 요청에 대한 기본적인 정보를 나타냅니다.
Start line은 HTTP Method, Request target, HTTP version으로 이루어져 있습니다.
HTTP Method
클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 수단으로 GET, POST, PUT, DELETE 등이 있습니다.
Request target
주로 URL이며 프로토콜, 포트, 도메인의 절대 경로로 나타낼 수도 있습니다.
HTTP Version
프로토콜의 버전이며, 상호 소통하는 버전을 전달함으로써 Message 구조가 다른 상황을 방지합니다.
- Headers
Start line에서 표현되지 않은 구체적인 요청의 요구사항을 나타냅니다.
“:”으로 구분된 Key, Value 형태로 표현되며 General headers, Request headers, Entity headers로 구분됩니다.
General header (공통 헤더)
공통 헤더는 기본적인 정보가 담겨있으며, 콘텐츠에는 적용되지 않는 헤더입니다.
Date, Connection, Cache-Control, Content-Encoding 등이 이에 포함됩니다.
Request header (요청 헤더)
요청 헤더는 요청의 내용을 좀 더 구체화시키고, 컨텍스를 제공하기도 하며, 조건에 따른 제약 사항을 가하기도 하면서 요청 내용을 수정합니다.
Host, User-Agent, Accept, Authorization, Origin, Referer 등이 이에 포함됩니다.
Entity header (엔티티 헤더)
엔티티 헤더는 콘텐츠 길이나 MIME 타입과 같이 message body에 대한 자세한 정보를 포함합니다.
message body가 없는 경우 해당 헤더는 전송되지 않습니다.
Content-type, length, language, location, encoding 등이 이에 포함됩니다.
- Blank line
요청에 대한 모든 메타 정보가 전송되었음을 알리며 메타 정보와 Body를 구분 짓습니다.
- Body
HTTP Request가 전송하는 데이터를 담고 있는 부분입니다.
전송하는 데이터가 없거나 Method 즉 요청의 목적에 따라 Body는 비어있을 수 있습니다.
HTTP Response (응답)
HTTP Response message format - Status line
HTTP Response message의 시작 라인이며, 응답에 대한 기본적인 정보를 나타냅니다.
Status line은 HTTP version, Status code, Status text으로 이루어져 있습니다.
HTTP Version
요청과 같습니다.
Status code
요청의 성공 여부를 나타내며 3자리 숫자로 구성되어 있습니다.
Status text
Status code에 대한 부가적인 설명을 포함하여 응답에 대해 자세히 이해할 수 있도록 합니다.
- Headers
Request header와 동일하지만 Response header에만 사용되는 값들이 있습니다.
예를 들어, User-Agent 대신에 Server 헤더가 사용됩니다.
- Blank line
요청과 같습니다.
- Body
요청과 같습니다.
구독과 좋아요 그리고 생산적인 댓글은 언제나 환영입니다.
반응형'HTTP' 카테고리의 다른 글
HTTP가 뭐예요? (HTTP Request methods와 Response status code) (0) 2022.10.10 HTTP가 뭐예요? (REST) (2) 2022.10.08 HTTP가 뭐예요? (HTTP의 진화 과정) (13) 2022.10.04