티스토리 뷰

Network

[Network] 쿠키, 세션 이란?

감자형 2019. 4. 14. 01:26

안녕하세요, 감자코딩에 감자개발자 입니다.

서버쪽에 대한 포스팅도 꾸준히 해 나갈 생각이므로, 이번에 살펴볼 내용은 "세션"과 " 쿠키"입니다.

 

 

1. 쿠키, 세션 이란?

인터넷을 사용하시다 보면 흔히 접했던 말입니다. 가끔 홈페이지 접속이 되지 않거나, 에러가 나는 경우

" 인터넷 옵션에 들어가서 쿠키를 삭제하고 다시 시도해보시길 바랍니다. " 

혹은, 로그인을 하였는데 아이디와 비밀번호를 저장하시겠습니까? 라는 글을 보셨을 겁니다.

이것은 제 Github.com에 로그인 되어있는 현재 사이트에 대한 정보를 가져왔습니다. 

 

- 쿠키 세션 왜 써요?

서버와 클라이언트가 통신을 할 때 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어진다. 따라서 서버는 클라이언트가 누구인지 계속 인증을 해주어야 하는데, 여기서 쿠키와 세션을 이용하여 인증을 하게 된다.

- 쿠키란? 

 

클라이언트 웹 브라우저에서 관리 되는 작은 기록의 텍스트 파일(정보 파일) 입니다. 특정 시간 동안에 유효한 시간을 설정하여, 브라우저를 다시 재부팅하여도 인증이 되는 경우 입니다. 

 

- 쿠키 동작 방식

1) 클라이언트가 로그인을 하기 위해 웹 페이지를 요청합니다.

2) 쿠키는 HTTP 통신 헤더에서 전송 됩니다. 따라서, 통신 헤더에 쿠키값이 들어가게 되며, 응답 헤더에 쿠키 값을 웹 서버에 전송 시킵니다.

3) 이제, 웹 서버에서 쿠키를 생성 시킵니다.

4) 현재 HTTP 헤더에는 쿠키값을 가지고 있기 때문에, 나중에 로그인을 다시 요청하여도 그 값을 읽어 이전상태의 정보를 변경 시킵니다.

5) 쿠키 값을 새로 발급 받거나 변화가 있을 경우 새로운 쿠키 값을 HTTP 헤더에 포함시켜 응답하게 됩니다.

 

- 쿠키 사용 예제

 

1) 티스토리 블로그를 방문하였다고 가정 할때, 로그인을 하고 나면 아이디와 비밀번호르 저장하시겠습니까? 라는 문구를 확인 할 수 있습니다.

2) E-commerce b2c 플랫폼인 쇼핑몰이나 전자상거래 사이트등에서 장바구나 같은것들을 예로 들 수 있겠습니다.

 

- 세션이란?

세션이라고 하는것은, 쿠키 값을 이용하여 사용자 정보 파일을 서버측에서 관리 하게 됩니다.

쿠키와의 차이점은 쿠키는 클라이언트쪽에서 관리를 하였습니다. 쿠키 값을 이용한 세션 값들이 서버측에 저장되어 그 값을 이용하여 사용자 인증을 받는 구조입니다.

 

- 세션 동작 방식

1) 클라이언트가 서버에 접속 시 세션 ID 값을 발급을 받게 됩니다.

2) 그 이후에 서버에서는 발급 받은 세션 ID값을 이용하여 쿠키를 사용해서 세션을 저장하게 됩니다.

3) 로그인을 진행한다면, 클라이언트쪽에서 요청 받은 경로에 대한 세션 ID 값을 다시 전달하여 인증하는 방식입니다.

 

세션의 특징

1) 각 클라이언트에게 고유 ID를 부여 시킨다.

2) 보안면에서 쿠키보다 우수합니다(서버측면에서 관리하기 때문)

3) 세션 ID값으로 클라이언트를 구별 할 수 있습니다.

4) 쿠키와 다르게, 서버측에서 메모리를 관리하기 때문에 서버측에서 용량의 과부하가 생길 수 있습니다.

5) 이것을 해결하기 위해서 나온것이 JWT(JSON WEB TOKEN)방식 입니다. 추후에 따로 포스팅 할 계획이오니, 확인해주시면 되겠습니다.

 

2. 쿠키와 세션의 차이?
차이점

쿠키와 세션의 큰 차이점은

1)

쿠키 = 클라이언트(웹 브라우저)

세션 = 서버(웹 서버)

 

2) 보안측면에 대해서는 쿠키 값 보다 세션이 조금 더 유리합니다. 이것에 대해서 추후에 자세히 설명 드리도록 하겠습니다.

3) 쿠키와 세션의 메모리 용량에 대한 차이점입니다. 세션은 쿠키에 비해 서버쪽에서 메모리를 차지하고 있기 때문에 문제가 과부하가 걸릴 가능성이 있습니다.

 

3. 마무리

이렇게 쿠키와 세션에 대한 개념들을 알아보는 시간을 가졌고, 이러한 쿠키와 세션 방식을 대체하기 위한 방식들이 많이 나오고 있습니다.

예를 들어, 위에서 말씀드린 JWT 토큰 인증 방식이라던지, Auth 방식(Facebook, Google, Slack) 등이 있습니다. 계속해서 추후에 강의를 올릴 계획이니 조금만 기다려주세요^^

 

이상 감자코딩에 감자개발자였습니다. 감사합니다 :) 

도움이 되셨다면 공감을 꾸욱 눌러주세요 ☜

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함