네트워크 하향식 접근

[컴퓨터 네트워킹 하향식 접근] 2.2 웹과 HTTP

김치진주 2023. 3. 13. 20:51

HTTP 개요

웹의 애플리케이션 프로토콜은 HTTP(HyperText Transfer Protocol)이다.
HTTP는 서버, 클라이언트 두 프로그램으로 구현된다.

웹 페이지는 객체들로 구성된다. 객체는 단일 URL로 지정할 수 있는 하나의 파일이다(HTML, JPEG 등).

HTML 파일은 페이지 내부의 다른 객체를 URL로 참조한다. URL은 2개의 요소, 서버의 호스트 네임과 객체의 경로를 갖고 있다.

 

HTTP는 TCP를 전송 프로토콜로 사용한다.

클라이언트가 요청할 메시지를 소켓 인터페이스로 보내면 메시지는 클라이언트의 손을 떠나고, TCP의 손에 쥐어진다.

이것은 보낸 메시지가 궁극적으로 서버에 잘 도착한다는 것을 뜻한다. 계층구조의 장점으로 애플리케이션단에서 메시지를 보내기만 한다면 나머지 전송은 트랜스포트계층의 책임이기 때문에, 애플리케이션은 '메시지를 보냈다'는 행동만 하면 된다.

 

서버는 클라이언트에 관한 어떠한 상태 정보도 저장하지 않는다. 그래서 HTTP를 비상태 프로토콜(stateless protocol)이라 한다.

상태를 기억하고 싶다면 쿠키-세션을 사용한다.

 

 

지속연결(persistent connection)과 비지속연결(non-persistent connection)

HTTP 1.0은 비지속 연결이다.

페이지를 서버에서 클라이언트로 전송한다고 했을 때 작동은 다음과 같다.

http://kimchijinju.tistory.com/27 에 접속, html파일 하나에 jpeg 5개로 구성되어 있다고 가정한다.

 

1. 클라이언트는 기본 포트 80번을 통해 kimchijinju로 TCP 연결을 시도한다.

2. 클라이언트는 연결된 TCP 소켓을 통해 서버로 HTTP Request를 보낸다. 이 메시지는 주소 27을 포함한다.

3. 서버는 연결된 TCP소켓을 통해 요청 메시지를 받는다. 저장장치로부터 kimchijinju.tistory.com/27에 매핑된 객체를 추출하여 클라이언트에게 응답 메시지를 보낸다.

4. 서버는 TCP 연결을 끊는다.(실제로는 클라이언트가 응답 메시지를 올바로 받을 때까지 연결을 끊지 않는다..)

5. 클라이언트가 응답 메시지를  다 받으면 TCP 연결이 종료된다. 

6. 받은 HTML 파일을 참조하여 남은 5개의 JPEG 파일을 가져오기 위해 1~5 과정을 반복한다.

 

파일 하나를 주고받을 때마다 새로운 연결을 위해 3-way handshake가 발생한다.

이를 보완한 방법이 HTTP 1.1이다. 1번 과정 이후, 4번을 수행하지 않고 한 번의 TCP 연결로 필요한 객체를 모두 받아온다. (pipelining)

 

 

웹 캐싱

웹 캐시(프록시 서버)는 웹서버를 대신하여 응답받는 네트워크 개체다. 웹 캐시는 자체 저장소를 가지고 있어 최근 호출된 객체의 사본을 저장한다.

 

1. 브라우저는 프록시서버와 TCP 연결하고 프록시 서버에 있는 객체에 대한 HTTP 요청을 보낸다.

2. 프록시 서버는 객체의 사본이 자신에게 저장되어 있는지 확인하고, 저장되어 있다면 클라이언트에게 응답한다.

3. 만약 객체의 사본을 갖고 있지 않다면, 프록시 서버는 원래의 서버에 TCP 연결을 하고 필요한 객체를 응답받는다.

4. 프록시서버가 원래의 서버에게 응답받은 후 객체를 지역 저장장치에 복사하고 클라이언트에 응답한다.

 

캐시는 서버이며 클라이언트다. 브라우저 -> 캐시에서는 서버, 캐시 -> 서버에서는 클라이언트이다.

 

웹 캐시를 사용하는 이유

1. 클라이언트의 요구에 대한 응답 시간을 줄일 수 있다.

2. 한 기관에서 인터넷으로 접속하는 링크상의 트래픽을 대폭으로 줄일 수 있다.

 

웹 캐싱을 통해 받은 복사본 객체가 최신본이 아닐 수 있다. 다행히 HTTP는 객체가 최신 객체임을 확인하면서 캐싱하는 방식을 갖고 있다.

이를 조건부 GET(conditional GET)이라 한다.

 

콘텐츠 전송 네트워크(CDN, Content Distribution Network)의 사용을 통해 웹 캐시는 인터넷에서 점진적으로 중요한 역할을 하고 있다. CDN 회사는 인터넷 전역을 통해 지역적으로 분산된 캐시를 설치하고 있고, 이를 통해 많은 트래픽을 지역화하고 있다.