
HTTP란?
HTTP (Hyper Text Transfer Protocol ) 란 HTTP는 월드 와이드 웹 (World Wild Web, WWW) 에 내재된 프로토콜로
HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.
웹에서 이루어지는 모든 데이터 교환의 기초이며 클라이언트-서버 프로토콜이기도 하다.
클라이언트 서버 프로토콜(Client-Server Protocol) - 클라이언트에서 요청을 보내면 서버에서 응답을 하는 규칙
프로토콜 (Protocol) - 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계
HTTP의 시작과 진화
HTTP의 진화과정을 간단하게 설명하면 아래 그림과 같다.

HTTP/0.9 ( = 원-라인 프로토콜)
HTTP는 1990년대 초 팀 버너스리로부터 제안된 인터넷 기반의 시스템이다.
초창기에는 클라이언트에서 HTML을 요청하면 서버는 그에 맞는 HTML을 전송하는 것이 전부인
단순한 서버-클라이언트 구조를 따랐다.
이때 요청 메서드 종류도 GET 하나였다.
요청
GET /mypage.html
응답
<HTML>
A very simple HTML page
</HTML>
HTTP/1.0
웹이 인기를 끌면서 매우 제한적인 기존 HTTP 만으로는 모든 요구사항을 충족할 수 없게 되었고,
브라우저와 서버 모두 좀 더 융통성을 가지도록 빠르게 확장되었다.
1.요청메서드가 GET, HEAD, POST 세가지로 확장됐다.
2.버전정보가 각 요청 사이내로 전송되기 시작했다.
3.상태 코드 라인 또한 응답의 시작 부분에 붙어 전송되어,
브라우저가 요청에 대한 성공과 실패를 알 수 있고 그 결과에 대한 동작을 할 수 있게 되었다.
4.메타데이터 전송을 허용하고 포로토콜을 확장가능하도록 유연하게 만들었다.
5.새로운 HTTP 헤더인 Content-Type의 도움으로 평이한 HTML 파일들 외에 다른 문서들을 전송하는 기능이 추가됐다.
요청
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
<IMG SRC="/myimage.gif">
</HTML>
응답
GET /myimage.gif HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK
Date: Tue, 15 Nov 1994 08:12:32 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/gif
(image content)
HTTP/1.1 표준 프로토콜
97년 초에 공개된 HTTP의 표준 버전이다.
이는 HTTP/1.0의 불완전함, 고려하지 못한 부분(계층적 프록시, 캐싱, 연결지속 등)에 대한 문제점,
모호함 등을 개선하기 위해 제안되었다.
추가된 개선사항으로는 대표적으로 아래와 같다.
1.연결 상태 유지 (Persisted connection)
- HTTP/1.0에서는 요청에 따른 응답이 수신되면 TCP 연결을 바로 종료하는데 웹페이지가 복잡해지면서 속도가 느려지는 문제점이 발생했다.
HTTP/1.1에서는 이를 해결하기위해 한 번 수립한 연결을 재사용한다. 연결을 맺고 끊는 과정이 줄어들기 때문에 시간을 절약할 수 있다. (아래그림 참고)

2.파이프라이닝(Pipelining)
- 파이프라이닝은 클라이언트가 여러 요청을 연달아 보낼 때 응답을 기다리는 것이 아니라 우선 요청을 전송하는 방식이다.
HTTPS
HTTP는 암호화되지 않은 텍스트로 전송하는 방식이었기 때문에 많은 문제점이 있었다.
광고주, 불특정 개인, 혹은 범죄자가 다른사람인 척 가장하거나 전송된 데이터를 수정된 데이터로 대치시키거나, 개인정보를 빼내려고 하는 등 암호화된 전송 계층에 대한 필요성이 대두되었다.
이런 범죄를 방지하기 위해 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security) 라는 프로토콜로 암호화하는 방식을 사용했다.
HTTP의 특징
1. 간단하다
- HTTP는 사람이 읽고 이해할 수 있어 간단하다.
2. 확장가능하다
- HTTP/1.0의 HTTP 헤더는 HTTP를 확장하기 쉽게 만들었다.
3. 무상태성 (Stateless)
- HTTP는 요청에 답하는 동시에 연결을 끊고 통신을 종료하기 때문에 상태를 저장하지 않는다.
4.비연결성(Connectionless)
- HTTP는 연결을 유지하지 않는다.
클라이언트와 서버가 한 번 연결을 맺은 후에 서버가 응답을 완료하면 연결을 끊어버리는 성질을 가지고 있다.
참고 :
mdb web docs - HTTP 개요
https://yozm.wishket.com/magazine/detail/1686/
'CS공부' 카테고리의 다른 글
동기와 비동기 / 블록과 논-블록 (0) | 2023.07.20 |
---|---|
[HTTP] HTTP 메서드 및 상태코드 (0) | 2023.07.14 |
API (애플리케이션 프로그래밍 인터페이스) 란? (0) | 2023.07.07 |
RESTful API 란? (0) | 2023.07.05 |
절차지향 언어 VS 객체지향 언어 (0) | 2023.07.03 |

HTTP란?
HTTP (Hyper Text Transfer Protocol ) 란 HTTP는 월드 와이드 웹 (World Wild Web, WWW) 에 내재된 프로토콜로
HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.
웹에서 이루어지는 모든 데이터 교환의 기초이며 클라이언트-서버 프로토콜이기도 하다.
클라이언트 서버 프로토콜(Client-Server Protocol) - 클라이언트에서 요청을 보내면 서버에서 응답을 하는 규칙
프로토콜 (Protocol) - 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계
HTTP의 시작과 진화
HTTP의 진화과정을 간단하게 설명하면 아래 그림과 같다.

HTTP/0.9 ( = 원-라인 프로토콜)
HTTP는 1990년대 초 팀 버너스리로부터 제안된 인터넷 기반의 시스템이다.
초창기에는 클라이언트에서 HTML을 요청하면 서버는 그에 맞는 HTML을 전송하는 것이 전부인
단순한 서버-클라이언트 구조를 따랐다.
이때 요청 메서드 종류도 GET 하나였다.
요청
GET /mypage.html
응답
<HTML>
A very simple HTML page
</HTML>
HTTP/1.0
웹이 인기를 끌면서 매우 제한적인 기존 HTTP 만으로는 모든 요구사항을 충족할 수 없게 되었고,
브라우저와 서버 모두 좀 더 융통성을 가지도록 빠르게 확장되었다.
1.요청메서드가 GET, HEAD, POST 세가지로 확장됐다.
2.버전정보가 각 요청 사이내로 전송되기 시작했다.
3.상태 코드 라인 또한 응답의 시작 부분에 붙어 전송되어,
브라우저가 요청에 대한 성공과 실패를 알 수 있고 그 결과에 대한 동작을 할 수 있게 되었다.
4.메타데이터 전송을 허용하고 포로토콜을 확장가능하도록 유연하게 만들었다.
5.새로운 HTTP 헤더인 Content-Type의 도움으로 평이한 HTML 파일들 외에 다른 문서들을 전송하는 기능이 추가됐다.
요청
GET /mypage.html HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
A page with an image
<IMG SRC="/myimage.gif">
</HTML>
응답
GET /myimage.gif HTTP/1.0
User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)
200 OK
Date: Tue, 15 Nov 1994 08:12:32 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/gif
(image content)
HTTP/1.1 표준 프로토콜
97년 초에 공개된 HTTP의 표준 버전이다.
이는 HTTP/1.0의 불완전함, 고려하지 못한 부분(계층적 프록시, 캐싱, 연결지속 등)에 대한 문제점,
모호함 등을 개선하기 위해 제안되었다.
추가된 개선사항으로는 대표적으로 아래와 같다.
1.연결 상태 유지 (Persisted connection)
- HTTP/1.0에서는 요청에 따른 응답이 수신되면 TCP 연결을 바로 종료하는데 웹페이지가 복잡해지면서 속도가 느려지는 문제점이 발생했다.
HTTP/1.1에서는 이를 해결하기위해 한 번 수립한 연결을 재사용한다. 연결을 맺고 끊는 과정이 줄어들기 때문에 시간을 절약할 수 있다. (아래그림 참고)

2.파이프라이닝(Pipelining)
- 파이프라이닝은 클라이언트가 여러 요청을 연달아 보낼 때 응답을 기다리는 것이 아니라 우선 요청을 전송하는 방식이다.
HTTPS
HTTP는 암호화되지 않은 텍스트로 전송하는 방식이었기 때문에 많은 문제점이 있었다.
광고주, 불특정 개인, 혹은 범죄자가 다른사람인 척 가장하거나 전송된 데이터를 수정된 데이터로 대치시키거나, 개인정보를 빼내려고 하는 등 암호화된 전송 계층에 대한 필요성이 대두되었다.
이런 범죄를 방지하기 위해 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security) 라는 프로토콜로 암호화하는 방식을 사용했다.
HTTP의 특징
1. 간단하다
- HTTP는 사람이 읽고 이해할 수 있어 간단하다.
2. 확장가능하다
- HTTP/1.0의 HTTP 헤더는 HTTP를 확장하기 쉽게 만들었다.
3. 무상태성 (Stateless)
- HTTP는 요청에 답하는 동시에 연결을 끊고 통신을 종료하기 때문에 상태를 저장하지 않는다.
4.비연결성(Connectionless)
- HTTP는 연결을 유지하지 않는다.
클라이언트와 서버가 한 번 연결을 맺은 후에 서버가 응답을 완료하면 연결을 끊어버리는 성질을 가지고 있다.
참고 :
mdb web docs - HTTP 개요
https://yozm.wishket.com/magazine/detail/1686/
'CS공부' 카테고리의 다른 글
동기와 비동기 / 블록과 논-블록 (0) | 2023.07.20 |
---|---|
[HTTP] HTTP 메서드 및 상태코드 (0) | 2023.07.14 |
API (애플리케이션 프로그래밍 인터페이스) 란? (0) | 2023.07.07 |
RESTful API 란? (0) | 2023.07.05 |
절차지향 언어 VS 객체지향 언어 (0) | 2023.07.03 |