HCN DEV

네트워크 정리 2

본 내용은 kocw의 한양대학교 이석복 교수님 강의인 컴퓨터 네트워크를 듣고 정리한 내용입니다.

Application Layer

Application Layer는 OSI 7계층 중 사용자가 인터넷을 사용하면서 실제 체감할 수 있는 서비스를 제공합니다. 여기서 말하는 서비스를 제공한다는 것은 특정 프로토콜을 지원한다는 의미로 이해하면 되는데, Application Layer에서 제공하는 가장 대표적인 프로토콜이 HTTP 프로토콜입니다.

HTTP

HTTP - Hypertext Transfer Protocol, 하이퍼텍스트를 전송하는 프로토콜
  • HTTP의 메세지는 요청(request)과 응답(response)으로 이뤄져 있다.

HTTP는 매우 단순한 프로토콜로 클라이언트의 요청과 서버의 응답으로 이뤄진 프로토콜입니다. 예를 들어 어떤 모바일 앱이 클라이언트고 모바일 앱에 정보를 제공하는 서버가 있다고 할 때, 클라이언트는 서버로부터 정보를 받아오기 위해 GET이든 POST든 어떤 요청을 서버쪽으로 전송합니다. 여기서 요청을 수행하는 방법은 URL을 접속하는 형태로 이뤄집니다. 그리고 서버는 클라이언트의 요청에 따른 응답을 클라이언트쪽으로 전달합니다.

  • HTTP는 상태가 없다(stateless).

HTTP에서 클라이언트와 서버는 서로 지속적으로 연결되어 있는 상태가 아닙니다. HTTP에서는 데이터를 보내고 받는 순간에만 연결되기 때문에 HTTP는 상태가 없다고 얘기합니다. 즉, 클라이언트 측에서 앱 UI를 업데이트한다고 했을 때, HTTP 프로토콜을 사용하면 실시간으로 서버로부터 정보를 받아서 업데이트하는 것은 HTTP가 아닌 다른 프로토콜을 사용해야 합니다.

이러한 HTTP의 상태가 없는 속성은 효율적으로 네트워크 자원을 활용하는 장점도 있지만, 서버의 클라이언트에 대한 정보가 부족하다는 단점도 있습니다. 그래서 이를 보완하기 위해 브라우저는 Cookie라는 저장공간을 지원합니다.

An HTTP cookie (also called web cookie, Internet cookie, browser cookie, or simply cookie) is a small piece of data sent from a website and stored on the user's computer by the user's web browser while the user is browsing. Cookies were designed to be a reliable mechanism for websites to remember stateful information (such as items added in the shopping cart in an online store) or to record the user's browsing activity (including clicking particular buttons, logging in, or recording which pages were visited in the past).

출처: HTTP Cookie - wikipedia

쿠키를 활용되는 과정은 다음과 같습니다. 아래 과정은 일반 인터넷 사용자가 아마존 서버에 접속할 때의 상황을 서술합니다.

  1. 사용자가 처음 아마존 서버에 접속하면 쿠키에는 아마존 관련 정보가 하나도 없기 때문에 사용자는 쿠키 데이터 없이 클라이언트는 아마존 서버에 요청을 보냅니다.
  2. 이 때 아마존 서버는 클라이언트측 요청에 쿠키 관련 정보가 없는 것을 확인하고, 응답에 쿠키 번호를 함께 보냅니다.
  3. 클라이언트에 있는 웹브라우저는 이 쿠키를 클라이언트 컴퓨터에 저장합니다.
  4. 시간이 지나서 다음번에 클라이언트가 아마존 서버에 요청을 보내게 되었습니다. 이 때 웹브라우저는 아마존 서버에 대한 쿠키를 가지고 있기 때문에 쿠키번호를 요청에 같이 보냅니다.
  5. 아마존 서버는 해당 쿠키번호와 클라이언트의 접속기록을 조합하여 사용자가 좋아할 법한 내용을 응답 html에 포함시켜서 전송합니다.

쿠키는 서버가 클라이언트의 특징을 파악하는데 도움을 주지만, 쿠키 데이터가 컴퓨터에 과도하게 쌓이게 되면 웹 브라우징 성능 저하의 원인이 됩니다. 그렇기 때문에 웹 브라우저 성능 개선을 위해 주로 삭제하는 데이터이기도 합니다.

Web Caches(프록시 서버)

A web cache (or HTTP cache) is an information technology for the temporary storage (caching) of web documents, such as HTML pages and images, to reduce server lag. A web cache system stores copies of documents passing through it; subsequent requests may be satisfied from the cache if certain conditions are met. A web cache system can refer either to an appliance, or to a computer program.

출처: HTTP Web Cache - wikipedia

웹 캐시는 클라이언트의 요청을 대신해서 서버쪽으로 전달해주는 역할을 하는 일종의 중간 서버입니다. 그래서 실제 서버로부터 받아온 응답을 자신이 소유하고 있다가 클라이언트가 동일한 서버에 접속하게 되면 자신이 소유하고 있는 응답을 보냅니다.(Forward Position System)

웹 캐시의 장점은 다음과 같습니다.

  1. 클라이언트 측에서 속도가 빠르다.
  2. 서버 측에서는 서버 부하가 적다.
  3. 외부로 트래픽이 적게 나가기 떄문에 비용이 적게 든다.

하지만 웹 캐시는 갱신된 정보가 업데이트되지 않는 문제(Consistency)를 갖고 있습니다. 즉, 실제로 서버쪽에서 정보가 변경되었는데 웹 캐시에서는 변경사항을 반영하지 않는 문제가 발생할 수 있는 것입니다. 이러한 문제를 극복하기 위해, 즉 웹 캐시의 데이터를 최신의 것으로 업데이트하기 위해 HTTP 헤더에서 if-modified-since 필드에 현재 날짜를 보냅니다. 그리고 이 요청에 대한 응답으로 200 OK이 오면 웹 캐시를 새롭게 업데이트를 하고, 304 Not Modified가 오게 되면 현재 웹 캐시가 죄신이기 떄문에 업데이트를 할 필요가 없습니다.


참고자료