[CH.02] Web & HTTP

Web page는 object들로 구성된다. object는 인터넷 브라우저를 통해 사용할 수 있는 자원들로, HTML 파일, JPEG 이미지, 오디오 파일... 등이 될 수 있다.

또한, 웹 페이지는 base HTML-file로 구성되는데, 이는 여러 개의 참조된 객체(object)를 포함한다. 각 개체는 URL로 주소를 지정할 수 있다.

→ Web Page = HTML + object


HTTP

HTTP는 웹의 애플리케이션 계층 프로토콜이다. HTTP는 클라이언트-서버로 구현된다.

 

클라이언트(Client)HTTP를 사용하여 Web object를 요청, 수신하고 출력하는 브라우저(browser)이다.

서버(Server)요청에 의한 응답으로 HTTP 프로토콜을 사용하여 객체를 전달하는 역할을 한다.

 

HTTP는 TCP를 사용한다.

  1. 클라이언트는 서버와 port# 80으로 TCP 연결을 시작한다.
  2. 서버는 클라이언트로부터 온 TCP 연결을 수락(accept)한다.
  3. 브라우저(web client)와 웹 서버(web server) 사이에서 HTTP 메시지(application-layer protocol msg)를 교환한다.
  4. 모두 수행했으면, TCP 연결을 종료(close)한다.

HTTP는 "stateless" protocol이다.

여기서 stateless라는 것은 history(이전에 수행했던 것)가 지금 상황에 영향을 끼치지 않는 것을 뜻한다.

만약 서버가 클라이언트에 대한 정보를 유지하게 된다면, 수많은 클라이언트의 정보를 관리하기가 매우 복잡하고 이로 인해 유지보수가 매우 어려워지게 된다. 또한 보안 문제도 증가하기 때문에 따로 과거 클라이언트의(요청에 대한) 정보를 저장하지 않는다.

→ 이러한 특징으로 인한 단전을 보완하기 위해 "쿠키(Cookie)"가 등장.

 

HTTP 연결에는 크게 2가지가 있다. 하나씩 살펴보자.

Non-persistent HTTP (HTTP 1.0)

Object 하나당 한 개의 TCP 연결을 하는 연결 방식이다. 따라서, 여러 object를 다운로드하기 위해서는 여러 번의 TCP 연결이 필요하다. 

Persistent HTTP (HTTP 1.1)

단일 TCP 연결에 여러 개의 object가 전달될 수 있는 연결 방식이다.


RTT(Round Trip Time) = 패킷 하나가 클라이언트에서 서버로 갔다가 다시 클라이언트로 돌아오는 시간.

RTT를 이용하여 두 방식의 response time을 비교해보자.

Non-persistent HTTP

위 그림은 Non-persistent HTTP의 연결 과정을 나타낸 그림이다.

첫 번째 RTT는 TCP 연결에 걸리는 시간이고, 두 번째 RTT는 HTTP 요청을 하고 HTTP 응답으로 처음 몇 바이트를 받는데 걸리는 시간이다. 여기에 파일을 전송하는 데 걸리는 시간도 더해야 한다. 따라서 다음과 같은 식이 나온다.

여기서 확인할 수 있는 것은 단일 object당 최소 2RTT가 소요된다.

 

다음으로 Persistent HTTP를 보면, TCP 연결을 끊지 않고 object들을 전송하기 때문에 TCP 연결은 1번이면 된다. 즉, 단일 object 당 1RTT만큼 소요된다. 

 

∴ Persistent HTTP는 Non-persistent HTTP보다 적은 시간이 걸린다. 


Non-persistent HTTP에서는 객체 당 2RTT가 필요하고, 각 TCP 연결을 위한 OS의 overhead가 발생한다. 

반면, persistent HTTP는 응답을 보낸 후 서버가 TCP 연결을 그대로 열어두고, 이 열린 연결을 통해 동일한 클라이언트-서버 사이에서 후속 HTTP 메시지를 전송한다. 참조된 모든 객체에 대해 1RTT가 소요된다. 

'컴퓨터망' 카테고리의 다른 글

[Network] 라우터(Router)  (0) 2022.07.05
[Network] Network layer  (0) 2022.07.04
[CH.02] Application의 구조  (0) 2022.04.13
[CH.02] Application Layer  (0) 2022.04.12
[CH.01] Protocol Layers, Service models  (0) 2022.04.11