Cookies, Web caches (Proxy server)
Cookie
쿠키는 문자와 숫자의 조합으로 된 작은 파일이다. 쉽게 말해, 서버가 주는 일종의 인덱스이다.
서버는 쿠키를 통해서 클라이언트를 식별하고 이에 맞춰 다양한 서비스를 제공한다. 아마존 사이트에 들어가면 내가 클릭했던 상품 목록들을 보여 주는데, 이런 것들이 모두 쿠키를 이용하기 때문에 가능한 것이다.
사용자가 특정 사이트에 처음 접속하면, 그 사이트 서버는 사용자에게 Cookie header라는 숫자를 부여해준다.
브라우저는 부여받은 Cookie header와 사이트 이름을 조합하여 만들어진 쿠키 파일을 사용자의 컴퓨터에 저장한다.
이후 사용자가 그 사이트에 접속할 때마다 해당 쿠키파일을 보내주면 서버는 이를 통해 사용자를 식별할 수 있다.
이처럼 쿠키를 사용하면 HTTP의 stateless한 특성을 state하게 만들 수 있다.
쿠키의 전체적인 동작 과정은 아래와 같다.
- (1) 서버가 cookie를 initiate 해 set-cookie 라는 필드로 넣어 response
- (2) 다음에 다시 요청할 때 cookie 값을 담아서 요청
- 서버는 해당 클라이언트를 cookie로 관리할 수 있음
- 클라이언트는 컴퓨터를 껐다 켜더라도 cookie값으로 다시 요청할 수 있음
위의 내용들을 종합해보았을 때, 쿠키를 사용하려면 다음과 같은 4가지 구성요소가 필요하다.
- HTTP response 메시지의 Cookie header line
- HTTP request 메시지의 Cookie header line (HTTP response 메시지 바로 다음에 등장)
- 클라이언트의 컴퓨터에 저장되는 쿠키파일과 이를 관리해주는 브라우저
- 웹사이트에서 사용자들의 쿠키파일을 관리할 데이터베이스
Cookie가 사용되는 곳은 아래와 같다.
- 웹브라우저에 대한 로그인 정보 기억 (로그인했던 웹페이지에 다시 접속해보면 로그인 정보가 기억돼 있는 것)
- 온라인 몰에서의 구매목록 기능
- email 정보 기억
등등 state가 필요한 곳에서 사용된다.
하지만, 쿠키는 사용자 정보를 담고 있기 때문에 privacy 이슈가 있다.
그래서 보통 서버쪽에서는 쿠키를 사용할 때, 개인정보활용 동의가 수반된다.
Web caches (Proxy server)
캐시라는 말은 컴퓨터의 다양한 분야에서 자주 쓰인다. CPU에서의 캐시 메모리, 운영체제에서의 페이지 캐시, 파일 시스템에서도 캐시라는 말이 등장할 정도로 다양한 분야에서 쓰인다.
그 중에서도 웹에서 쓰이는 웹 캐시는 서버와 클라이언트 사이에서 서버로부터 컨텐츠를 더 빨리 받아, 클라이언트에게 더 빠르게 컨텐츠를 제공하기 위해서 사용한다.
웹 캐시는 프록시 서버(Proxy server)를 통해 구현하며, 클라이언트와 서버 사이에 위치한다.
- 프록시 서버는 클라이언트가 서버에게 요청하는 것을 듣고
- (1) 만약 요청하는 컨텐츠가 자신(프록시 서버)에게 있을 경우, 바로 클라이언트에게 컨텐츠를 제공하고
- (2) 요청하는 컨텐츠가 자신에게 없을 경우 오리지널 서버에게 컨텐츠를 요청하고 이를 프록시 서버에 저장한 후 클라이언트에게 제공하는 형태로 동작한다.
그래서 최초 클라이언트의 최초 요청을 제외한 나머지 요청들은 프록시 서버에서 정보를 받아올 수 있게 된다.
- 웹 캐시의 장점
- (1) 요청-응답 시간(response time)을 줄일 수 있다.
- 웹 캐시는 굳이 멀리 있는 오리지널 서버로 가지 않고, 가까이 있는 프록시 서버로 가서 정보를 가져오기 때문에 요청-응답 시간을 줄일 수 있다.
- (2) 서버의 트래픽(traffic)을 줄일 수 있다.
- 웹 캐시를 사용하면 클라이언트의 요청이 모두 서버로 가는 것이 아닌, 프록시 서버로 트래픽이 분산되기 때문에, 그만큼의 요청에 대한 트래픽을 아낄 수 있다.
- 만약 40%가 hit되어 오리지널 서버로 오지 않는다면, 40%만큼 트래픽을 아낄 수 있는 것이다.
- (1) 요청-응답 시간(response time)을 줄일 수 있다.
- 웹 캐시의 단점
- 프록시 서버가 제공하는 컨텐츠는 최신 컨텐츠가 아닐 수 있다.
- 만약 오리지널 서버에서 컨텐츠를 계속해서 업데이트 하고 있지만, 프록시 서버는 오래된 컨텐츠를 제공할 수 있다.
- 프록시 서버가 제공하는 컨텐츠는 최신 컨텐츠가 아닐 수 있다.
참고 자료
- Computer Networking: A Top Down Approach 6th edition - Jim Kurose, Keith Ross Addison-Wesley March 2012
- https://ddongwon.tistory.com/73
- https://inyongs.tistory.com/58
- https://inyongs.tistory.com/59
'Computer Science > Computer Network' 카테고리의 다른 글
[네트워크] "Napster", "Gnutella" - P2P applications (1) (0) | 2022.10.18 |
---|---|
[네트워크] DNS (Domain Name System, 도메인 네임 시스템) (0) | 2022.10.18 |
[네트워크] Web, HTTP(Hyper Text Transfer Protocol) (0) | 2022.10.17 |
[네트워크 애플리케이션 구조] client-server, P2P (0) | 2022.10.17 |
[네트워크] IP 주소 vs 포트 번호 - Addressing processes (0) | 2022.10.17 |