Always Be Wise

네트워크 프로토콜(HTTP / HTTPS) 본문

컴퓨터 시스템/CSAPP

네트워크 프로토콜(HTTP / HTTPS)

bewisesh91 2021. 12. 22. 14:54
728x90

HTTP(Hyper Text Transfer Protocol)

HTTP(Hyper Text Transfer Protocol)은 하이퍼 텍스트의 교환, 전송을 위한 통신 규약이다. HTTP는 응용 계층에 해당하며

TCP/IP 프로토콜 위에서 동작한다. 또한 서버가 클라이언트의 상태를 보존하지 않는 비상 태성(Stateless), 연결을 유지하지 않는

비연결성(Connectionless)이라는 중요한 특징이 있다.

HTTP 1.0 vs HTTP 1.1

HTTP 1.0과 비교하여 HTTP 1.1가 갖는 특징은 커넥션 유지, 호스트 헤더 2가지이다.

 

1. 커넥션 유지(Persistent Connection)

HTTP 프로토콜은 클라이언트, 서버 간 데이터를 주고받는 응용 계층의 프로토콜이다. HTTP를 이용한 데이터 전달은 TCP 세션 기반에서

이루어진다. HTTP 1.0과 1.1의 차이는 이 TCP 세션을 지속적으로 유지할 수 있는가이다. 아래 그림과 같이 HTTP 1.0은 요청 콘텐츠마다 TCP 세션을 맺어야 한다. 반면, HTTP 1.1은 Persistent 기능을 이용하여 한 개의 TCP 세션을 통해 여러 가지의 콘텐츠 요청이

가능하다. 이를 통해 서버는 TCP 세션 처리 부하를 줄일 수 있고, 클라이언트는 개선된 응답속도를 기대할 수 있다.

 

또한, Persistent 기능을 통한 커넥션 유지와 함께 HTTP 1.1에서는 파이프라이닝이 가능하다. 기본적으로 HTTP 요청과 응답은

순차적으로 이루어진다(요청#1 -> 응답#1 -> 요청#2 -> 응답#2 -> 요청#3 -> 응답#3). 다시 말해, 요청#1에 대한 응답#1을 

정상적으로 받아야만 다음 요청#2가 진행되고, 마찬가지로 응답#2를 받아야 요청#3이 진행된다. 그런데 어떤 이유로 응답#1이

이루어지지 않으면 이후 요청이 진행되지 않는다. 그런데 파이프라이닝은 이를 개선한 기능이다. 아래 그림(왼쪽)과 같이 동시에

요청#1, 요청#2, 요청#3을 보내고 이에 대한 응답을 각각 받아서 처리한다.

 

2. 호스트 헤더(Host Header)

HTTP 1.0 환경에서는 하나의 IP에 여러 개의 도메인을 운영할 수 없다. 도메인 마다 IP를 구분해서 준비해야 한다. 따라서 도멘인 만큼

서버의 수도 늘어날 수 밖에 없는 구조이다. 그러나 HTTP 1.1에서는 호스트 헤더(Host: www.google.com:80)를 이용하여 하나의 IP에

여러 가지의 도메인을 운영할 수 있다. 버츄얼 호스팅이 가능해진 것 역시 HTTP 1.1로의 발전 덕분이라고 할 수 있다.

SSL/TLS와 HTTPS

SSL(Secure Socket Layer)은 네트워크로 연결된 컴퓨터 사이에 인증되고 암호화된 링크를 설정하기 위한 보안 프로토콜이다.

TLS(Transport Layer Security)는 SSL의 업그레이드 버전을 의미한다. 즉, SSL 암호화 통신이라는 것은 SSL 또는 TLS라는

보안 프로토콜을 통해 클라이언트와 서버 간 보안이 향상된 통신을 하는 것을 의미한다.

 

SSL과 TLS는 '보안 계층'이라는 독립적인 프로토콜 계층을 만들어, 위 그림과 같이 응용 계층과 전송 계층 사이에 속하게 된다.

HTTPS(Hypertext Transfer Protocol Over Secure Socket Layer)는 SSL 또는 TLS 위에 HTTP 프로토콜을 얹어 보안이

향상된 통신을 하는 프로토콜을 의미한다. SSL/TLS는 HTTP 뿐만 아니라, FTP, SMTP와 같이 다른 프로토콜에도 적용할 수 있다.

 

SSL 암호화 통신은 여러 가지 조건과 과정을 통해 설립된다. 우선, SSL 핸드 셰이크를 수행한다. 이때 데이터를 주고받기 위해

서로의 상태를 파악한다. SSL은 TCP 기반의 프로토콜이다. 따라서 TCP 3-way 핸드 셰이크를 수행하고 SSL 세션이 생성되면

클라이언트와 서버는 원하는 데이터를 주고받는다. 이후 데이터 전송의 끝을 서로에게 알리며 세션을 종료한다.

 

'컴퓨터 시스템 > CSAPP' 카테고리의 다른 글

가상 메모리  (0) 2022.01.13
예외적인 제어 흐름  (0) 2021.12.23
네트워크 계층 모델  (0) 2021.12.21
웹 서버  (0) 2021.12.20
시스템 수준 입출력  (0) 2021.12.20
Comments