코드 저장소.

http의 특징 및 구조 본문

ComputerScience/네트워크

http의 특징 및 구조

slown 2023. 12. 31. 17:01

목차

1.http?
2.http의 특징
3.http의 구조

4.http의 응답상태

1.http?

  • http는 Hypertext Transfer Protocol의 약자로 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을수 있는 프로토콜입니다.
  • 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있습니다.

2.http 특징

    • 클라이언트 서버 구조
      • 클라이언트가 서버에 요청을 보내면, 서버가 요청에 대한 응답을 보내는 클라이언트-서버 구조입니다.
    • 무상태 프로토콜(Stateless) 
      • 서버가 클라이언트의 상태를 보존하지 않으므로 응답과 요청이 독립적이다.
      • 이러한 특징으로 인해서 응답 서버를 쉽게 바꿀 수 있기 때문에 무한한 서버 증설이 가능하다.(Scale-Out)
      •  상태를 보존하지 못하는 특성 때문에 쿠키와 세션,토큰을 사용해서 상태를 유지합니다.
    • 비연결성
      • 비연결성은 클라이언트와 서버가 한 번 연결을 맺은 후, 클 라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질입니다.
      • 불필요한 연결을 하지 않아 서버 유지 자원이 감소하므로 서버 유지 자원을 효율적으로 사용 가능하다.
      • 하지만 매번 새로운 연결을 시도/해제의 과정을 거쳐야하므로 연결/해제에 대한 오버헤드가 발생한다는 단점이 있습니다.

3.http의 구조

http는 Request와 Response 2가지로 나누어져 있고 이 2가지는 공통적으로 startline, header, body의 3개의 구조로 나누어져 있습니다. 

 

[HTTP Request Message 구조]

  • Start Line
  • Headers
  • Body

start line

HTTP Request Message의 시작 라인

HTTP request의 start line 3가지 부분으로 구성

  • HTTP method
  • Request target
  • HTTP version
GET /test.html HTTP/1.1
[HTTP Method] [Request target] [HTTP version]

 

  • HTTP method 는 요청의 의도를 담고 있는 GET, POST, PUT, DELETE 등이 있습니다. GET은 존재하는 자원에 대한 요청, POST는 새로운 자원을 생성, PUT은 존재하는 자원에 대한 변경, DELETE는 존재하는 자원에 대한 삭제와 같은 기능을 가지고 있습니다.
  • Request target 은 HTTP Request가 전송되는 목표 주소입니다.
  • HTTP version version에 따라 Request 메시지 구조나 데이터가 다를 수 있어서 version을 명시합니다.

headers

해당 request에 대한 추가 정보(addtional information)를 담고 있는 부분
예를 들어, request 메세지 body의 총 길이 (Content-Length) 등 Key:Value 형태로 구성

headers도 크게 3가지 부분으로 나뉨(general headers, request headers, entity headers)

Host: google.com
Accept: text/html
Accept-Encoding: gzip, deflate
Connection: keep-alive
...
  • Host 요청하려는 서버 호스트 이름과 포트번호
  • User-agent 클라이언트 프로그램 정보. 이 정보를 통해 서버는 클라이언트 프로그램(브라우저)에 맞는 최적의 데이터를 보내줄 수 있다.
  • Referer 바로 직전에 머물렀던 웹 링크 주소
  • Accept 클라이언트가 처리 가능한 미디어 타입 종류 나열
  • If-Modified-Since 여기에 쓰여진 시간 이후로 변경된 리소스 취득. 페이지가 수정되었으면 최신 페이지로 교체한다.
  • Authorization 인증 토큰을 서버로 보낼 때 쓰이는 Header
  • Origin 서버로 Post요청을 보낼 때 요청이 어느 주소에 시작되어쓴닞 나타내는 값. 이 값으로 요청을 보낸 주소와 받는 주소가 다르면 CORS (Cross-Origin Resource Sharing) 에러가 발생한다.
  • Cookie 쿠키 값이 key-value로 표현한다.

Body

HTTP Request가 전송하는 데이터를 담고 있는 부분

전송하는 데이터가 없다면 body 부분은 비어있습니다.

보통 post 요청일 경우, HTML 폼 데이터가 포함되어 있습니다.

POST /test HTTP/1.1

Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: google.com
User-Agent: HTTPie/0.9.3

{
    "test_id": "tmp_1234567",
    "order_id": "8237352"
}

 

 

[HTTP Response Message 구조]

  • Status Line
  • Headers
  • Body

Status Line

HTTP Response의 상태를 간략하게 나타내주는 부분

HTTP Response의 status line또한 3가지 부분으로 구성

  • HTTP version
  • Status Code
  • Status Text
HTTP/1.1 200 OK
[HTTP version] [Status Code] [Status Text]

headers

Request의 headers와 동일하다.

다만 response에서만 사용되는 header 값들이 있다.

예를 들어, User-Agent 대신에 Server 헤더가 사용된다.

Body

Response의 body와 일반적으로 동일하다.

Request와 마찬가지로 모든 response가 body가 있지는 않다.

데이터를 전송할 필요가 없을경우 body가 비어있게 된다.

 

4.http의 상태코드

HTTP 상태코드는 클라이언트가 보낸 요청의 처리 상태를 서버에서 응답으로 알려주는 기능이다.

  • 1xx(Information): 요청이 수신되어 처리중(거의 사용되지 않는다.)
  • 2xx(Successful): 요청 정상 처리
  • 3xx(Redirection): 요청을 완료하려면 추가 행동이 필요
  • 4xx(Client Error): 클라이언트 오류. 잘못된 문법으로 서버가 요청을 수행할 수 없음
  • 5xx(Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함

 

참고

https://hahahoho5915.tistory.com/62

 

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

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

hahahoho5915.tistory.com

https://velog.io/@leesomyoung/HTTP-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%98-%ED%8A%B9%EC%A7%95#4-%EB%8B%A8%EC%88%9C%ED%99%95%EC%9E%A5-%EA%B0%80%EB%8A%A5

 

HTTP 프로토콜의 특징

HTTP(HyperText Transfer Protocol) 모든 형태의 데이터를 전송할 때 HTTP를 사용한다. 우리는 HTTP/1.1 버전을 사용한다. 이러한 HTTP/1.1의 특징에는 크게 네 가지가 있다. Client-Server 구조 무상태성(Statel

velog.io

https://victorydntmd.tistory.com/286

 

[HTTP] HTTP 특성(비연결성, 무상태)과 구성요소 그리고 Restful API

이번 글에서는 HTTP의 가장 큰 특징인 비연결성, 무상태 그리고 HTTP 상태코드(status)와 메서드(method), 헤더(header)에 대해 알아보도록 하겠습니다. 1. 비연결성 ( Connectionless )비연결성은 클라이언트

victorydntmd.tistory.com

 

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

TCP 네트워크 계층  (0) 2024.01.04
OSI 7계층  (0) 2023.12.31