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를 생성하는데 쓰인다.
반응형