HTTP

한윤재·2024년 4월 14일

HTTP

HTTP - HyperText Transfer Protocol
하이퍼텍스트 전송 규약(약속)

HyperText - 하이퍼 텍스트란 클릭시 다른 문서로 연결되는 문자열. 혹은 그러한 문자열을 포함한 문서.

HTML - HyperText Markup Language 하이퍼텍스트 문서를 만들기 위한 표준 문법

HTTP란

웹에서 컴퓨터와 컴퓨터가 HyperText를 주고받기 위해 만들어진 약속이다.

편지가 전달 되기 위해서 보내는 이 받는 이, 주소, 연락처 등등 본문을 제외하고도 여러가지 정보를 함께 동봉해야하는 규칙이 있듯이, 웹에서도 문서를 주고받기 위해 약속 된 규칙이 존재한다.
웹은 간단히 컴퓨터 사이에 데이터가 오고가기 위한 교통 시스템 정도로 설명할 수 있겠다.

http는 웹이라는 교통 시스템을 통해 html 문서를 주고받기 위한 절차 또는 약속이다.

어디에 사용되나요?

웹 브라우저(클라이언트) 와 서버 사이의 데이터 전달에 사용됩니다.

앞서 말한 HTML 문서 뿐만 아니라 이미지, 텍스트, json, xml, 음성, 영상, 파일 같은 다양한 형식의 문서를 주고받는데 사용됩니다.

서버와 서버간의 데이터 전달에도 사용된다.

컴퓨터 사이의 데이터 전달이라고 하는 것이 더 올바르겠네요.

구조 및 특징

핵심 키워드

  • 클라이언트 서버 구조
  • 무상태 프로토콜
  • 비연결성
  • HTTP 메시지
  • 확장 가능성

클라이언트 서버구조

요청자와 응답자가 구분되는 구조. 응답자는 먼저 응답하지 않으며, 요청에 대해서만 응답을 보내준다.

주는 사람과 받는 사람이 명확하게 구분되어 있다는 의미로 받아들이자.

이를 위해 요청(Request), 응답(Response)이라는 중요한 개념이 등장한다. HTTP 메시지도 요청 메시지와 응답 메시지로 구분된다.

요청자는 요청 http 메시지를 통해 서버의 자원(html, 이미지 등)을 요구하며, 서버는 이에 응답 http 메시지를 만들어 요청받은 자원을 실어 보낸다.

무상태 프로토콜

HTTP 는 무상태 프로토콜이다.

상태란 무엇인가? 애둘러 표현하자면 기억이다. 서버(응답자)는 요청자(유저)를 기억하지 않는다.

프로그램이 어떤 특정 상태를 저장해놓는 것을 떠올려보자. 상태를 저장한다는 것은 무언가를 기억하겠다는 것이다. 기억은 메모리를 사용한다. 서버 프로그램이 가동중인 컴퓨터는 한정 된 메모리를 갖는다.

HTTP 프로토콜은 기본적으로 상태를 저장하지 않는다. 서버 프로그램은 다수의 요청자가 동시에 이용하기 때문에 상태를 저장하면 서버 컴퓨터에 큰 부담이 된다.

서버가 상태를 기억하지 않으면 대신 클라이언트가 이를 기억해야한다. 이런 사실은 서버가 무수히 증설 될 수 있게 만든다.
만일 서버 프로그램이 상태를 기억해서 동작 한다면 수백개의 서버가 해당 상태를 공유 해야하기 때문에 서버의 증설이 어려울 것이다.

HTTP 메시지

컴퓨터가 주고받는 텍스트로 이루어진 데이터이다.

클라이언트 서버 구조에서 Request와 Response를 언급한 바 있는데, HTTP 메시지도 이처럼 요청과 응답 두개의 메시지로 구분되어있다.

각 메시지는 헤더와 바디로 구역이 존재하며, 헤더에는 편지의 주소, 보내는 이, 받는 이 같은 정보가 포함되며 바디에는 전달하고자 하는 본문이 실린다.

HTTP 메시지가 문자열(text) 라는 사실은 중요한데, http 메시지를 통해 보내지는 이미지, 음성파일 등 모든 것이 text의 형태로 변환되어 전달되기 때문이다.

비 연결성

HTTP 1.1 의 기반 프로토콜인 TCP는 연결 지향형이다. 따라서 HTTP도 연결된다. 그러나 연결을 유지하지 않는다.

연결 유지를 최소화

HTTP는 브라우저의 요청에 서버가 응답을 보내는 것으로 연결을 마무리 한다.
그러나 하나의 HTML문서(페이지) 를 구성하는 모든 자원의 요청 에 새로 연결을 생성하지 않는다. 연결 과정도 비용이기 때문에 모든 페이지 구성요소 요청에 대해 하나의 연결을 유지한다.

연결은 TCP프로토콜이 제공하는 기능으로, 3 way handshake라는 과정을 통한 컴퓨터 사이의 논리적 연결이다.

모든 자원의 요청 - 브라우저는 HTML 문서에 연결된 이미지, css, js같은 파일에 대해 서버로 요청을 자동으로 보낸다.

결론 - 연결을 하지만 응답할 때 끊는다. 유지하지 않는다.

0개의 댓글