본문 바로가기

프로그래밍/네트워크

네트워크(7) - 쿠키 ( Cookie )

우리가 인터넷을 사용하면 쿠키를 통해 정보가 저장되거나 혹은 쿠키를 삭제하는 일을 한번씩 겪어봤을 것이다.

오늘은 이 쿠키에 대해 다뤄볼 것이다.

 

 

 


Cookie?

앞서 우리는 저번 포스트에서 Http 에 대해 많은 것을 다뤘다.

큰 특징 중 하나에 대해 기억해보자면 http는 stateless 하여 유저의 어떠한 정보도 기억하지 않는다는 것이었다.

좋은 점도 물론 있겠지만, 이에 대한 단점으로는

user의 id나 정보를 읽을 수 없다. 그래서 콘텐츠 제공, 차단 등과 같은 서비스를 제공하지 못한다.

그래서 우리는 state를 저장하고 있는 쿠키를 사용한다

이 덕분에 사용자 정보를 읽어와 사용자 식별, 콘텐츠 제공등이 가능하게 된다.

 

 

 


Cookie의 네가지 요소

일단 아래의 그림을 보자

클라이언트가 서버에 접속하는 예시

 

일단 쿠키 기술은 네가지 요소

1. HTTP response message의 header line에 Cookie

2. HTTP request message의 header line에 Cookie

3. user의 host, user의 browser에 의해 관리되는 Cookie

4. 웹사이트 백엔드 데이터베이스 상에 있는 Cookie

가 존재한다.

 

 

그림의 과정을 보면서 해당 요소를 관찰해보자

 

1. client가 Amazon server로 request msg를 보냄

 2. Amazon server에서 user ID(1678)를 생성하고, 데이터베이스에 기입하고 response 데이터에 담아서 보냄.  (1. response Cookie)

 3. client는 자체 웹에서 amazon 1678이라는 Cookie 파일 생성 (3. user brower Cookie)

 4. 다시 접속할때 Cookie가 있으므로 request에 Cookie 파일을 담아서 보냄. (2. request Cookie)

 5. server는 Cookie가 있다는 신호를 받고, 데이터베이스에서 Client의 정보를 꺼내 보내줌. (4. back end database Cookie)

 6. client는 지난번에 했던 행동들을 다시 확인 및 수행

 

 

요약하자면

 - Client에 Cookie 파일이 없으면 server에서 user ID 만들고 response msg에 Cookie 파일에 담아 보내준다. 그리고 이 user ID는  백엔드 데이터베이스에 기입한다.

 - Client에 Cookie 파일이 있으면 request msg에 Cookie 파일을 함께 보내고, server의 백엔드 데이터베이스에서 user의 state에 해당하는 response msg를 보내준다.

 

 

 

기억해야 할 것은 HTTP가 State를 가지고 있는게 아니다. 전달하는 cookie 가 state를 가지고 있는것이다.