Computer Theory/Web

HTTP란 무엇인가?

JHeaon 2024. 5. 3. 11:38

 

이번에는 HTTP 통신에 대해서 알아보고자 한다. 

 


 

HTTP의 의미

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 하는 프로토콜을 의미한다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트 - 서버 프로토콜이기도 하다. 

 

- 클라이언트 서버 프로토콜 : 주로 클라이언트가 서버에게 요청을 보내여 리소스를 획득하는 프로토콜을 의미한다.

 

 

클라이언트와 서버들은 개별적인 메시지를 교환을 통해 통신을 한다. 보통 브라우저인 클라이언트에 의해 전송되는 메시지 요청을 request라고 부르며 이로 인해 서버에서 응답하는 메시지를 responses라고 부른다.

 

 

HTTP는  애플리케이션 계층의 프로토콜로, 신뢰가능한 전송 프로토콜이라면 이론상으로는 무엇이든 사용가능하나, TCP혹은 암호화된 연결인 TLS을 통해 전송된다. 이런 HTTP의 확장으로 현재 HTML 뿐만 아니라 이미지, 비디오, HTML 폼 같은 결과를 서버로 POST 하기 위해 사용되기도 한다. 

 

 

 

HTTP 기반 시스템의 구성요소

HTTP는 클라이언트 - 서버 프로토콜이다. 요청은 하나의 객체, 사용자에 의해 전송된다.

 

각각의 개별적인 요청들은 서버로 보내지며 서버는 요청을 처리하고 response라는 응답을 회신한다. 이 요청과 응답 사이에는 여러 개체들이 존재하는데 다양한 작업을 수행하는 게이트웨이 또는 캐시 역활을 하는 프록시가 존재한다. 

 

 

 

- 클라이언트

사용자 에이전트는 사용자를 대신하여 동작을 하는 모든 도구를 의미한다. 이 역활을 주로 브라우저에 의해 수행된다. 브라우저는 항상 요청을 보내는 개체이며, 웹 페이지를 표시하기 위해 브라우저는 페이지의 HTML문서를 가져오기 위한 요청을 전송하고 파일 구문을 분석하여 실행해야 할 스크립트와 페이지 내 포함된 하위 리소스들을 잘 표시하기 위한 레이아웃 정보인 CSS에 대응하는 추가적인 요청들을 가져온다. 그런 뒤에 완전한 문서인 웹 페이지를 표시하기 위해 해당 리소스들을 혼합하고 웹 페이지를 갱신하게 된다. 

 

- 웹 서버  

통신 채널의 반대편에는 클아이언트에 의한 요청에 대한 문서를 제공하는 서버가 존재한다. 서버는 사실 논리적으로 단일 기계이나, 이는 로드 밸런싱 혹은 그때그때 다른 컴퓨터들의 정보를 얻고 완전하게 혹은 부분적으로 문서를 생성하는 소프트웨어의 복잡한 부분을 공유하는 서버들의 집합일 수 도 있기 때문이다. 

 

서버가 단일 머신일 필요는 없으나, 여러개의 서버를 동일한 머신 위에 호스팅 할 수 있다. HTTP/1.1과 Host 헤더를 이용하여 동일한 IP 주소를 공유할 수도 있다. 

 

 

- 게이트웨이

게이트웨이란 한 네트워크에서 다른 네트워크로 이동하기 위해서 거쳐야 하는 지점을 의미한다. 

 

- 프록시

프록시 서버란 인터넷상의 여러 네트워크들에 접속할 때 중계역할을 해주는 프로그램 혹은 컴퓨터를 의미한다. 프록시는 요청을 을 가로챈 뒤 응답을 돌려주며 가로챈 응답을 전달하지 않거나 수정할 수도 있다. 

 

프록시는 사용자의 로컬 컴퓨터에 존재할 수도 있고, 인터넷상에서 사용자의 컴퓨터와 목표서버 사이 그 어디든지 존재할 수 있다. 주로 2가지의 프록시 서버가 존재한다. 

 

1. 포워드 프록시 : 인터넷상에서 어디로든지 요청을 전송해 주는 프록시를 의미 

2. 리버스 프록시 : 인터넷에서 요청을 받으면 내부망 내의 서버로 전송해 주는 프록시를 의미

 

- 캐시

캐시란 HTTP 응답들을 일시적으로 저장하는 컴포넌트를 의미한다. 이를 통해 그 다음 HTTP 요청에서 특정 조건을 만족될 때까지  캐시에 저장된 리소스를 사용할 수 있다. 

 

 

HTTP 특성

HTTP는 다음과 같은 특성을 가진다. 

 

  • HTTP는 사람이 읽을 수 있게 간단하게 고안되었다. 
  • HTTP 헤더는 HTTP을 확장하고 실험하기 쉽게 만들었다. 
  • HTTP는 상태를 저장하지 않지만, HTTP 쿠키는 상태가 있는 세션을 만들도록 해준다. 또한 헤더의 확장성을 이용하면,동일한 컨텍스트 또는 동일한 상태를 공유하기 위해 각각의 요청들에 세션을 만들도록 HTTP 쿠키가 추가된다. 
  • HTTP는 주로 TCP 연결기반에 의존한다. 

 

 

HTTP 흐름

HTTP 통신은 다음과 같은 흐름으로 이어진다. 

 

1. TCP 연결을 연다. TCP 연결은 단일 혹은 여러개의 요청을 보내거나 응답을 받는 데 사용된다. 클라이언트는 새 연결을 열거나, 기존 연결을 재사용하거나, 서버에 대한 여러 TCP 연결을 열 수 있다. 

 

2. HTTP 메세지를 전송한다. 주로 해당 형식으로 HTTP메시지가 보내진다. 

GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: fr

 

3. 서버에 의해 전송된 응답을 읽는다. 

HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html

<!DOCTYPE html... (here comes the 29769 bytes of the requested web page)

 

4. 연결을 닫거나 혹은 다른 요청들을 위해 재사용한다. 

 

 

 

HTTP 메시지 

HTTP 메시지의 자세한 분석 내용은 아래에 정리하였으므로 참고하면 좋을 듯하다. 

 

https://jheaon.tistory.com/94

 

HTTP 와 HTTP Request/Response 구조

HTTP HyperText Transfoer Protocol 이라고 하며, HTML 문서를 교환하기 위해 만들어진 protocol (통신 규약)을 의미한다. TCP/IP 기반으로 되어있으며 request와 response 구조로 되어있다. 주로 http request을 서버에

jheaon.tistory.com

https://jheaon.tistory.com/93

 

HTTP 메서드 종류

HTTP Method 종류 HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청, 응답에 대한 데이터 전송 방식을 말한다. 주요 메소드 GET : 리소스 조회 POST: 요청 데이터 처리, 주로 등록에 사용 PUT : 리

jheaon.tistory.com

 

 


참조 : 

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

 

HTTP 개요 - HTTP | MDN

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버

developer.mozilla.org

https://melonicedlatte.com/network/2020/04/28/201100.html

 

게이트웨이(Gateway)란? 개념 정리 - Easy is Perfect

게이트웨이(Gateway)란? 개념 정리 1. 게이트웨이(Gateway)란? 1.1. 정의 컴퓨터 네트워크에서 게이트웨이(Gateway)란 한 네트워크(segment)에서 다른 네트워크로 이동하기 위하여 거쳐야 하는 지점입니다.

melonicedlatte.com

 

'Computer Theory > Web' 카테고리의 다른 글

호스팅(Web Hosting)  (0) 2024.06.07
도메인과 DNS 그리고 DNS의 작동원리  (0) 2024.05.23
HTTP 메서드 종류  (1) 2024.05.03
API에 대하여  (0) 2023.12.12
Transaction과 ACID  (0) 2023.12.09

'Computer Theory/Web'의 다른글

  • 현재글 HTTP란 무엇인가?

관련글