본문 바로가기
IT 지식/Web

[Web] HTTP와 HTTP 메시지 구조

by 쪼짱 2023. 3. 30.
728x90
반응형
SMALL

HTTP란?

HTTP는 HyperText Transfer Protocol(하이퍼텍스트 전송 프로토콜)의 약자로, HTML과 같은 하이퍼미디어 문서를 전송하기 위한 애플리케이션 레이어 프로토콜이다. 즉, 인터넷에서 데이터를 주고 받는 데 사용되는 프로토콜이다. HTTP는 클라이언트와 서버 간에 데이터를 전송하고 웹페이지, 이미지, 비디오, 오디오 등을 요청하고 전송하기 위해 사용된다.

 

HTTP는 TCP/IP 프로토콜을 기반으로 하며, 보통 80번 포트를 사용한다. 클라이언트는 HTTP 요청을 서버에 보내고, 서버는 이 요청에 대한 응답을 보낸다. HTTP 요청과 응답에는 여러 가지 종류가 있으며, 가장 흔한 종류는 GET 요청과 200 OK 응답이다.

HTTP는 무상태(Stateless) 프로토콜이다. 이는 서버가 이전 요청을 기억하지 않는다는 것을 의미한다. 따라서 각각의 요청은 독립적으로 처리된다. 이러한 무상태성은 서버 측의 부담을 줄이고, 더욱 확장 가능한 시스템을 만드는 데 도움이 된다.

마지막으로, HTTPS는 HTTP의 보안 버전으로, SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 암호화 프로토콜을 사용하여 데이터를 암호화한다. HTTPS는 중요한 개인 정보나 민감한 정보를 전송할 때 사용되며, 일반적으로 443번 포트를 사용한다.


HTTP 메시지 구조

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식이다. 이 메시지는 요청(Request) 메시지응답(Response) 메시지로 나뉜다. 요청은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지고, 응답은 요청에 대한 서버의 답변이다.

 

HTTP 요청 메시지 구조

HTTP 요청 메시지 구조

[메서드] [URL] [HTTP 버전]
[헤더1]: [값1]
[헤더2]: [값2]
...
[헤더N]: [값N]

[본문 데이터]
  • 메서드: 요청 메서드는 GET, POST, PUT, DELETE, PATCH 등이 있으며, 서버에 요청을 보내는 목적을 나타낸다.
  • URL: 요청하려는 리소스의 URL 또는 프로토콜, 포트, 도메인의 절대 경로로 나타낼 수 있다. 요청 타겟 포맷은 HTTP 메소드에 따라 달라진다.
    • 포멧의 종류
    • origin 형식: 끝에 '?'와 쿼리 문자열이 붙는 절대 경로다. 이는 가장 일반적인 형식이며, GET, POST, HEAD, OPTIONS 메서드와 함께 사용한다.  ex) POST / HTTP 1.1 , GET /background.png HTTP/1.0 , HEAD /test.html?query=alibaba HTTP/1.1, OPTIONS /anypage.html HTTP/1.0
    • absolute 형식: 완전한 URL 형식이다. 프록시에 연결하는 경우 대부분 GET과 함께 사용된다. ex) GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
    • authority 형식: 도메인 이름 및 옵션 포트(':'가 앞에 붙는다)로 이루어진 URL의 authority component 이다. HTTP 터널을 구축하는 경우에만 CONNECT와 함께 사용할 수 있다. ex) CONNECT developer.mozilla.org:80 HTTP/1.1
    • asterisk 형식: OPTIONS와 함께 별표('*') 하나로 간단하게 서버 전체를 나타낸다. ex) OPTIONS * HTTP/1.1
  • HTTP 버전: 사용 중인 HTTP 버전을 나타낸다.
  • 헤더: HTTP 요청 메시지에는 여러 가지 헤더가 포함될 수 있다. ex) Accept, Content-Type, Authorization, Cookie 등
    • Request 헤더: User-Agent (en-US), Accept-Type와 같은 헤더는 요청의 내용을 좀 더 구체화 시키고(Accept-Language), 컨텍스를 제공하기도 하며(Referer), 조건에 따른 제약 사항을 가하기도 하면서(If-None) 요청 내용을 수정합니다.
    • General 헤더: Via와 같은 헤더는 메시지 전체에 적용됩니다.
    • Entity 헤더: Content-Length와 같은 헤더는 요청 본문에 적용됩니다. 당연히 요청 내에 본문이 없는 경우 entity 헤더는 전송되지 않습니다

요청 헤더

  • 본문 데이터: 요청과 함께 보내는 데이터가 있을 경우, 이 부분에 포함된다. POST 메서드와 같이 데이터를 전송할 때 사용된다.

 

HTTP 응답 메시지 구조

HTTP 응답 메시지 구조

[HTTP 버전] [상태 코드] [상태 메시지]
[헤더1]: [값1]
[헤더2]: [값2]
...
[헤더N]: [값N]

[본문 데이터]
  • HTTP 버전: 사용 중인 HTTP 버전을 나타낸다. 보통 HTTP/1.1 이다.
  • 상태 코드: HTTP 상태 코드는 요청에 대한 응답 상태를 나타내며, 1xx, 2xx, 3xx, 4xx, 5xx의 범위로 구분된다.
  • 상태 메시지: 상태 코드에 대한 설명을 나타낸다. 일반적으로 HTTP/1.1 404 Not Found.  같이 생겼다.
  • 헤더: HTTP 응답 메시지에는 여러 가지 헤더가 포함될 수 있다. ex) Content-Type, Content-Length, Cache-Control 등
    • General 헤더: Via와 같은 헤더는 메시지 전체에 적용된다.
    • Response 헤더: Vary와 Accept-Ranges와 같은 헤더는 상태 줄에 미처 들어가지 못했던 서버에 대한 추가 정보를 제공한다.
    • Entity 헤더: Content-Length와 같은 헤더는 요청 본문에 적용된다. 당연히 요청 내에 본문이 없는 경우 entity 헤더는 전송되지 않는다.

응답 헤더

  • 본문 데이터: 요청 결과로 받은 데이터가 있을 경우, 이 부분에 포함된다.

 


출처

https://developer.mozilla.org/ko/docs/Web/HTTP

https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

https://beomy.github.io/tech/etc/http/

https://softuni.org/dev-concepts/everything-you-need-to-know-about-http-protocol/

https://rendaritfactory.tistory.com/20

 

728x90
반응형
LIST