IT/Network

[Network] Application Layer (애플리케이션 계층) - 2.2 웹 애플리케이션 정리 2.2.4 Cookie (쿠키)

wookiist 2018. 1. 7. 14:51

2.2.4 User-Server Interaction: Cookies


HTTP Server는 Stateless (상태가 없다)이다.
이는 동시에 수천의 TCP 연결을 처리할 수 있는 웹 서버를 디자인하는 것을 쉽게 해준다.
그러나 종종 웹 사이트가 사용자를 인지하고 있을 필요가 있다.


• 서버가 사용자의 접근 권한을 제어해야 할 때.
• 서버가 사용자에 따른 맞춤 서비스를 제공해야 할 때.


이러한 목적으로 HTTP는 "Cookies"를 사용한다. [RFC 6265]

Cookie는 4 개의 요소로 구성된다.


1) HTTP Response Message의 'cookie header line'
2) HTTP Request Message의 'cookie header line'
3) 유저의 end system과 유저의 브라우저에의해 유지되는 'cookie file'
4) Web site에 존재하는 'back-end database'


일화를 예로 들어 보면 다음과 같다.
우선 설명에 앞서 몇 가지 가정을 하자.


• Susan은 IE로 현재 Amazon.com에 접속하려 한다.
• Susan은 이전에 Amazon.com에 접속한 적이 없다.
• Susan은 이전에 eBay.com에 접속한 적이 있다.


1) Susan이 Amazon Web Server에 HTTP Request Message를 보낸다.
2) Amazon Web Server는 유일한 id number를 생성하고, 이를 id number로 인덱스 되어 있는 'back-end database'에 추가한다.
3) Amazon Web Server는 Susan의 Web Browser에 HTTP Response Message를 보낼 때, 헤더 라인에 다음과 같이 id number를 추가하여 보낸다.
	• Set-cookie: 1678
4) Susan의 Web Browser가 HTTP Response Message를 받으면, Set-cookie: 헤더를 발견할 것이다.
5) Web Browser는 Browser만의 Cookie Manage File에 이 번호를 추가한다.
6) 마찬가지로 이미 eBay에 대한 Susan의 Cookie 파일은 이 Manage File에 추가되어있음을 주목하라.
7) Susan이 다음 번에 Amazon site에 접속하러 오면, 그녀의 Web Browser는 그녀의 cookie 파일을 열어보고, 이 Web site를 위한 그녀의 id number를 찾아낼 것이다. 그리고 HTTP Request Message에 그 id number를 head line에 다음과 같이 추가하여 보낼 것이다.
	• Cookie: 1678

이러한 방식으로, Amazon Web Server는 Susan의 행동을 추적할 수 있다.

Cookie는 이렇게 statless HTTP에 user sesson layer를 생성하는데 쓰인다.

반응형