HTTP

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

개발자-제이 2023. 10. 26. 15:09

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