본문 바로가기
HTTP

HTTP (Hyper Text Transfer Protocol), HTTP 메시지

by 재성스 2023. 10. 26.
반응형

HTTP(Hyper Text Transfer Protocol)

HTTP란?

HTTP는 Hyper Text Transfer Protocol의 약어이며, 월드 와이드 웹(www)에서 정보를 주고받을 때 사용하는 대표적인 프로토콜이다. 

HTTP는 클라이언트와 서버 간의 통신을 위한 프로토콜이며, HTTP 메시지에 html, text, image, 음성 영상, 파일, json, xml(api) 등 겅의 모든 형태의 데이터 전송이 가능하다.

 

기반 프로토콜

  • 현재 사용되는 HTTP 버전은 1.1, 2, 3이 사용된다.
  • HTTP/1.1 버전이 가장 많이 사용되며, 2와 3은 1.1에서 성능이 개선된 형태.* TCP: HTTP/1.1, HTTP/2
  • * UDP: 현재 HTTP/1.1을 주로 사용하며, HTTP 2, 3도 점점 증가하고 있는 추세

HTTP의 특징

  • 클라이언트 서버 구조
  • 2무상태 프로토콜(Stateless)
  •  HTTP 메시지
  • 단순함과 확장 가능

클라이언트 서버 구조

  • 요청(request(클라이언트 요청))과 응답(response(서버 응답)) 구조

클라이언트 (요청)

  • 클라이언트는 HTTP 요청을 생성하고 서버에 전송하는 역할을 함.

서버 (응답)

  • 클라이언트의 HTTP 요청을 받아서 처리하고 응답을 반환하는 역할을 함.
  • 서버는 클라이언트의 요청에 따른 리소스(웹페이지, 데이터, 이미지 등)을 제공하고 클라이언트에게 반환

클라이언트-서버 상호작용

  • (클라이언트) 웹 브라우저를 통해 URL을 입력하거나 링크를 클릭하는 등의 동작을 통해 웹 페이지를 '요청'
  • 클라이언트 요청이 HTTP 요청 메시지로 패키지되어 서버로 전송
  • 요청 메시지는 클라이언트의 요청 메서드(GET, POST 등)와 요청된 리소스(URL)을 포함
  • (서버) 서버는 받은 요청에 맞는 리소스를 찾고, 필요한 처리를 수행한 후 HTTP 응답 메시지를 생성하여 클라이언트에게 반환
  • (클라이언트) 응답받은 반환 값에 따라 클라이언트 측 UI에 해당 데이터가 로드 됨.

 

무상태 프로토콜 (stateless)

  • 무상태 프로토콜이란 서버가 클라이언트의 상태를 보존하지 않는 상태를 말한다.
  • 즉, 각 HTTP 요청은 서로 독립적이며, 이전 요청에서의 정보나 상태를 서버는 기억하지 않는다.
  • 따라서, 서버는 각 요청을 처음부터 처리하고 클라이언트에 대한 이전 상태나 상호작용을 고려하지 않는다.
  • 장점: 확장성, 서버는 각 요청을 별도로 처리하고 서버가 클라이언트와 연결 정보를 유지할 필요가 없기 때문에 여러 클라이언트 요청을 효과적으로 처리할 수 있다.
    • 무상태는 연결 정보를 유지하지 않아서 응답 서버를 쉽게 바꿀 수 있으므로, 무한한 서버 증설 가능할 수 있다.
    • 예를들어 같은 시간에 딱 맞추어 발생하는 대용량 트래픽(선착순 이벤트 등)에 대해 무상태로 서버를 설계하면 매우 유리하다.
  • 단점: 클라이언트와 서버 간의 연속성을 제공하지 않는다는 점, 예를들어 로그인 상태를 유지하거나 이전 페이지에서의 상호작용을 유지하는 데 어려움을 줄 수 있음.
    • 모든 것을 무상태로 설계할 수 있는 경우도 있고 없는 경우도 있음. (단, 상태 유지는 최소한만 사용하는 것이 좋다.)
  • 세션 및 쿠키: HTTP는 무상태 프로토콜이지만, 세션 관리 및 사용자 상태 유지를 위해 보통 쿠키와 세션과 같은 기술을 사용한다.

 

HTTP 메시지

  • HTTP 메시지는 요청과 응답으로 분류되며, 기본적 구조는 아래와 같다.

HTTP 메시지 구조


요청 메시지

HTTP 요청 메시지

1. 시작 라인 (start-line = request-line)

  • request-line = method SP(공백) request-target SP HTTP-version CRLF(엔터)
  • GET /search.naver?......ie=utf8&query=헬로월드 HTTP/1.1
  • GET: HTTP 메서드(GET: 조회)
    • HTTP 메서드 종류 :GET,POST,PUT,DELETE 등
    • 서버가 수행해야 할 동작 지정
    • GET: 리소스 조회
    • POST : 요청 내역 처리
  • /search.naver?......ie=utf8&query=헬로월드: 요청 대상
    • path?query로 구성
  • HTTP/1.1 : HTTP 버전

2.헤더

  • hearer-field = field-name ":" OWS field-value OWS (OWS: 띄어쓰기 허용이라는 뜻)
  • Host: www.naver.com
  • field-name은 대소문자 구문 없음

3. 공백

4. Body (요청은 포함될 수도있고 안될수도 있음.)

 


응답 메시지

HTTP 응답 메시지

1. 시작 라인 (start-line = status-line)

  • HTTP/1.1 200 OK
  • status-line = HTTP-version SP status-Code SP reason-phrase CRLF
  • HTTP/1.1 : HTTP 버전
  • 200 : 상태 코드, 요청 성공 또는 실패를 나타냄.
    • 200 : 성공
    • 400 클라이언트 요청 오류
    • 500: 서버 내부 오류
  • OK : 사람이 이해할 수 있는 짧은 상태 코드를 설명하는 글

2.헤더

  • Content-Type: text/html;charset=UTF-8
    Content-Length: 2425
  • hearer-field = field-name ":" OWS field-value OWS (OWS: 띄어쓰기 허용이라는 뜻)
  • HTTP 전송에 필요한 모든 부가정보(메타데이터)
    • 예) 메시지 바디내용, 바디 크기, 압축, 인증, 서버 애플리케이션 정보, 캐시관리 정보 등
    • 필요시 임의의 헤더 추가 가능

3. 공백

4. body

  • 실제 전송할 데이터
  • HTML 문서, 이미지, 영상, JSON등 byte로 표현할 수 있는 모든 데이터 전송 가능

정리

  • HTTP 메시지에 모든 것을 전송한다
  • 클라이언트 서버 구조
  • 무상태 프로토콜(Stateless)
  • HTTP 메시지 구조
반응형

'HTTP' 카테고리의 다른 글

http method  (0) 2023.11.10
http 상태코드  (0) 2023.11.10
인터넷 네트워크 통신, TCP/IP패킷  (0) 2023.10.27
웹 브라우저 요청 흐름 (간략)  (0) 2023.10.27
URI(Uniform Resource Identifier)란?  (0) 2023.10.26