본문 바로가기

CS/네트워크

[응용 계층] HTTP 와 Web Cache (Proxy Server)

반응형

 

HTTP (HyperText Transfer Protocol)

HTTP 는 응용 계층의 대표적인 프로토콜이다.

HyperText Transfer Protocol  의 약자로 웹 상에서 데이터를 주고 받기위해 만들어졌다.

 

특히 웹 브라우저와 서버 사이의 HTML 문서 및 관련 자료를 주로 전송에 사용되며 HTML 문서 만이 아닌 IMAGE, 음성, 영상, 파일, JSON 등 거의 모든 형태의 데이터 전송이 가능히다.

 

HTTP의 특징

  1. Client - Server 구조
    • 클라이언트는 서버에 요청을 보내고 서버는 요청에 대한 응답을 만들어 클라이언트에게 보내는 구조이다.
  2. 무상태 프로토콜 (Stateless)
    • 서버가 클라이언트의 상태를 유지하지 않는다. 
    • 그렇기 때문에 서버를 자유롭게 확장 가능하다. (스케일 아웃)
  3. 비연결성 (Connectionless)
    • 서버의 응답 후 연결을 유지하지 않는다. 
    • 서버 자원을 효율적으로 사용할 수 있지만 요청 마다 새롭게 연결 과정을 진행하기 때문에 효율적이지 않다.

HTTP 의 성능 향상

  1. Persistent Connection
    • 서버 응답 후 연결을 바로 끊어버리면 다음 요청에 다시 새로운 연결을 진행하기 때문에 성능이 떨어진다.
    • 이를 해결하기 위해 서버 응답 후 바로 연결을 끊어버리지 않고 일정 시간 동안은 재사용할 수 있도록 연결을 유지하는 것을 말한다.
  2. Pipelining
    • 요청을 하고 응답을 받고 또 다음 요청을 하고 응답을 하는 식으로 (동기식) 통신을 하게되면 속도가 느리기 때문에 응답을 받기 전에 다음 요청을 하여 여러 요청이 함께 처리되도록 하는 것을 말한다.

 

Cookie

HTTP 는 Stateless 하기 때문에 사용자 정보를 서버에서 알 수 없다.

그럼 로그인 후 사용자 구분을 어떻게 할 수 있을까? 쿠키를 활용할 수 있다. 

쿠키란 서버가 클라이언트의 정보를 파악하기 위해 브라우저에 있는 저장 공간이다.

기억해야 할 정보를 쿠키에 담아 클라이언트가 기억하고 요청마다 쿠키 정보를 담아 서버에 보낸다.

 

하지만 클라이언트에 너무 많은 권한과 정보를 준다는 문제가 있고 이를 Session 을 사용해 해결할 수 있다.

 

Session

세션은 서버에서 관리하는 저장 공간이다. 따라서 민감한 정보는 서버의 세션에 저장하고 해당 정보에 접근하기 위한 세션 ID 만 클라이언트의 쿠키에 전달하여 정보를 좀 더 안전하게 보관할 수 있다.

 


 

Web Cache (Proxy Server)

우리가 인터넷으로 구글에 방문할 때 항상 이 페이지는 저 멀리있는 구글 서버에서 제공하나? 아니다

중간에 KT 같은 ISP (Internet Service Provider) 가 웹 캐시 역할을 하며 제공해준다.

 

ISP 는 비용 절감을 위해서 이전에 가져온 적 있는 문서는 DB에 임시 저장해두고 동일한 문서가 다시 요청되면 재사용한다.

 

이를 통해 아래와 같은 이득을 얻을 수 있다.

  1. 요청에 대한 응답시간 단축
  2. 더 적은 서버 용량으로 더 많은 사용자 지원
  3. 네트워크의 혼잡도를 낮춤

하지만 실제 서버의 데이터와 웹 캐시가 제공하는 데이터가 일치하는가에 대한 문제가 발생한다.

 

그래서 웹 캐시에서는 데이터를 제공하기 전에 해당 데이터의 업데이트 여부를  실제 서버에 물어보고 제공한다.

이를 Conditional Get - 조건부 요청이라 한다.

헤더에 If-modified-since 필드를 이용해서 해당 시간 이후에 수정이 있었는지 묻는다.

 

반응형

'CS > 네트워크' 카테고리의 다른 글

Socket 간단 정리  (1) 2024.06.01
[응용 계층] DNS 정리  (0) 2024.05.31
OSI 7계층과 TCP/IP 4계층 간단 요약  (0) 2024.05.30