본문 바로가기
웹(Web)

HTTP란 무엇인가?

by junvely 2023. 7. 24.

1. HTTP란 ?

1. HTTP(Hyper Text Transfer Protocol)

💡 하이퍼텍스트 전송 프로토콜을 의미. 웹 상에서 클라이언트와-서버 간에 데이터 통신을 하기 위한 통신규약 입니다.
  • 클라이언트가 브라우저를 통해서 어떠한 서비스를 URI로 서버에 요청(Request)하면, 서버에서는 해당 요청에 대한 결과를 응답(Response)하는 형태로 동작한다.
  • HTTP/1.1, HTTP/2는 TCP 기반, HTTP/3는 UDP 기반 프로토콜이다.
  • TCP 연결은 요청을 보내거나(혹은 여러 개의 요청) 응답을 받는데 사용된다. 클라이언트는 새 연결을 열거나, 기존 연결을 재사용하거나, 서버에 대한 여러 TCP 연결을 열 수 있다.

 

2. HTTP 메시지 구조

HTTP 메시지는 요청(Requests)응답(Responses) 두 가지 타입으로 나뉘어 진다.

1. 요청(Requests) 

요청 메세지 구조는 Start Line, Headers, Body 3가지 부분으로 나뉘어 진다.

GET /test.html HTTP/1.1 -> start line
Host: developer.mozilla.org -> headers
Accept-Language: fr -> headers

{
    "test_id": "tmp_1234567", -> body
    "order_id": "8237352"
}

1. Start Line 시작 라인

  • Method : HTTP 메서드
  • Path : 가져오려는 리소스 경로 -> 예를 들면 프로토콜 (http://), 도메인 (en-US), 또는 TCP 포트 (en-US) (여기서는 80) 요소들을 제거한 리소스의 URL
  • HTTP 프로토콜 버전

2. Headers

  • Headers : 서버에 추가 정보를 전달하는 선택적 헤더들 -> Host, Accept-Language 등
  • headers도 크게 3가지 부분으로 나뉨(general headers, request headers, entity headers)
General 헤더 : Via와 같은 헤더는 메시지 전체에 적용됩니다.
Request 헤더 : User-Agent (en-US), Accept-Type와 같은 헤더는 요청의 내용을 좀 더 구체화 시키고(Accept-Language), 컨텍스를 제공하기도 하며(Referer), 조건에 따른 제약 사항을 가하기도 하면서(If-None) 요청 내용을 수정합니다.
Entity 헤더 : Content-Length와 같은 헤더는 요청 본문에 적용됩니다. 당연히 요청 내에 본문이 없는 경우 entity 헤더는 전송되지 않습니다.
Host : 요청하려는 서버 호스트 이름과 포트번호
User-agent : 클라이언트 프로그램 정보. 이 정보를 통해 서버는 클라이언트 프로그램(브라우저)에 맞는 최적의 데이터를 보내줄 수 있다.
Referer : 바로 직전에 머물렀던 웹 링크 주소
Accept : 클라이언트가 처리 가능한 미디어 타입 종류 나열
If-Modified-Since : 여기에 쓰여진 시간 이후로 변경된 리소스 취득. 페이지가 수정되었으면 최신 페이지로 교체한다.
Authorization : 인증 토큰을 서버로 보낼 때 쓰이는
HeaderOrigin : 서버로 Post 요청을 보낼 때 요청이 어느 주소에 시작되었는지 나타내는 값. 이 값으로 요청을 보낸 주소와 받는 주소가 다르면 CORS(Cross-Origin Resource Sharing) 에러가 발생한다.
Cookie : 쿠키 값이 key-value로 표현된다.

3. Body

  • HTTP Request가 전송하는 데이터를 담고 있는 본문, 보통 post 요청일 경우, HTML 폼 데이터가 포함되어 있다.

 

2. 응답(Responses) 

응답 메세지 구조는 Status Line, Headers, Body 3가지 부분으로 나누어 진다.

HTTP/1.1 200 OK -> Status line
Date: Sat, 09 Oct 2010 14:28:02 GMT -> 여기서부터 headers
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html

<!DOCTYPE html... (here comes the 29769 bytes of the requested web page) -> body

1. Status line

  • HTTP 프로토콜의 버전
  • Status Code : 요청의 성공 여부와, 그 이유를 나타내는 상태 코드
  • Status Text : 상태 코드의 짧은 설명을 나타내는 상태 메시지

2. Headers

  • 요청 헤더와 비슷한 HTTP 헤더들, 다만 response에서만 사용되는 header 값들이 있다. 예를 들어, User-Agent 대신에 Server 헤더가 사용된다.

3. Body

  • HTTP Response가 전송하는 데이터를 담고 있는 본문, 데이터 전송이 없을 경우 body가 비어있다.

 

 

<참고>

 

[네트워크/HTTP] HTTP란? - 특징(무상태와 비 연결성) - 하나몬

⚡️ HTTP 개념, 역사, 특징 간략히 알아보기 ❗️HTTP란? HTTP는 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol)이다. HTTP는 1989년부터 1991년에 발명되었다. HTTP는 월드 와이드 웹(WWW)에 내재된 프

hanamon.kr

 

HTTP 메시지 - HTTP | MDN

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 메시지 타입은 두 가지가 있습니다. 요청(request)은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지

developer.mozilla.org

 

[간단정리] HTTP Request/Response 구조

개요 HTTP Request(요청)/Response(응답) 구조 알아보기 HTTP HyperText Transfer Protocol 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약). 즉 웹상에서 네트워크로 서버끼리 통신을 할때

hahahoho5915.tistory.com