일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java jdk 오류
- 코드로 배우는 스프링 웹프로젝트
- 공개 암호화키
- 정보처리기사
- org.mybatis.spring.MyBatisSystemException
- 쿠키와 세션의 차이
- 코드로 배우는 스프링 웹 프로젝트
- 의존성 주입
- pom.xml 설정
- HTTP와 HTTPS의 차이
- 코드로 배우는 스프링부트 웹 프로젝트
- Tomcat version 8.5 only supports J2EE 1.2
- @RediretAttribute
- 테스트코드 작성
- @RequiredArgsConstructor
- java 면접질문
- 스프링 게시판 만들기
- 게시판 만들기
- oracle Database 설정
- 톰캣에러
- WAS와 WEB서버 차이
- Junit Test 에러
- 쿠키와 세션의 특징
- and 7 Web modules
- 정보처리기사 해설
- 정보처리기사 1과목
- and Java EE 5
- 인터페이스와 추상클래스 차이
- 정보처리기사 20년
- HTTP
- Today
- Total
모아이티
[면접질문] WEB_쿠키와 세션의 차이 & 용도와 특징 본문
오늘의 주제는 쿠키와 세션의 차이를 알아보겠습니다!
앞서 쿠키와 세션을 왜 사용할까?
-> HTTP의 특징이자 약점을 보완하기 위해 사용한다.
그럼 HTTP 프로토콜은 무엇일까?
-> 요약하자면 HTTP 특징으로 두가지가 있다. 비연결지향(Connectionless)와 상태없음(Stateless)가 있다.
비연결지향
- HTTP는 클라이언트가 요청을(request) 서버에 보내고 서버는 클라이언트에게 응답(response)을 주고 연결을 끊는 특성을 가지고 있다.
상태없음
- Connection을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성
그래서 위와 같은 특성을 보완하기 위해 쿠키와 세션이 필요한 것이다!
만약 쿠키와 세션이 없다면 페이지를 이동할 때마다 인증을 다시 받아야 되는 상황이 벌어진다.
쿠키(Cookie)
-> 클라이언트 Local에 저장되는 key, value가 들어 있는 작은 데이터 파일이다.
-> 쿠키는 이름, 값, 만료날짜/시간(쿠키 저장 시간), 경로 정보가 담겨 있다.
-> 쿠키는 서버측에서 만료 날짜/시간을 참조하여 정해진 시간동안 데이터를 유지할 수 있다.
세션쿠키(Session Cookie) & 지속 쿠키(Persistent Cookie)
쿠키는 세션쿠키와 지속 쿠키로 나뉜다.
세션쿠키는 만료 날짜/시간을 지정하지 않으면, 메모리에 있는 동안 계속 유효 하면 세션쿠키에 저장이 되고
지속쿠키는 만료 날짜/시간을 지정하면 프로세스가 종료되더라도
특정 만료날짜/시간까지 유효해 저장되는 것을 말한다.
세션(Session)
-> Server에 클라이언트의 상태 정보를 저장하는 기술 = 논리적인 연결
-> 웹 서버에 클라이언트에 대한 전보를 저장하고 클라이언트에게는 클라이언트를 구분할 수 있는 ID를 부여하는데 이것을 세션이라고 한다.
-> 결과적으로 세션을 통해 클라이언트의 정보는 서버에 두고, Session ID를 이용해 인증받고 정보를 이용하는 방식
세션의 사용 예) 로그인 정보 유지
*쿠키와 세션의 차이?
크게 4가지로 구분할 수 있다. '저장위치, 보안, 라이프 사이클, 속도'
A. 저장위치
- Cookie -> 클라이언트의 메모지 또는 파일에 저장
- Session -> 서버 메모리에 저장
B. 보안
- 쿠키는 클라이언트 로컬에 저장되기도 해서 특히 파일로 저장되면 탈취, 변조될 위험이 있고
- 세션은 클라이언트 정보가 서버에 저장되어 안전하다.
C. 라이프 사이클
- 쿠키는 브라우저를 종료하더라도 저장될 수 있다.
- 세션은 서버에서 만료시간/날짜를 지워버리면 브라우저 종료시 세션아이디가 삭제될 수 있다.
D. 속도
- 쿠키에 정보가 있어 서버에 요청하면 헤더를 바로 참조해 속도에서 유리하다.
- 세션은 제공받은 세션아이디를 이용해 서버에 다시 데이터를 참조해야하므로 속도가 비교적 느리다.
세션이 더 좋아보이는데 왜 쿠키를 사용할까?
-> 세션은 서버에 데이터를 저장해 서버의 자원을 사용하기 때문에 서버에 대한 자원의 한계가 있고 메모리 사용으로 속도 저하가 일어난다.
쿠키와 세션은 다른 존재로 봐야한다.
브라우저 캐시는 이미지(.png, .jpg, ...)나 .css, .js파일 등이 사용자의 브라우저에 저장이 되는 것이다.
이를 이용해 같은 자원을 로드(load)해야할 때, 해당 자원을 다시 불러오지 않고 캐시되어 있는 자원을 써서 클라이언트 자원을 아끼는 것이다.
해당 자원이 한 번 브라우저 캐시에 저장되면 다음 필요시에도 브라우저에 있는 걸 재사용하기 때문에
경우에 따라 해당 자원이 변경되어도 변경된 자원을 참조할 수 없는 경우가 생길 수 있다.
따라서 사용자는 브라우저 캐시를 지워주거나 서버에서 클라이언트로 응답을 보낼 때 header에 자원 캐시 만료시간을 명시하는 방법등을 이용하여 캐시를 회피할 수 있다.
출처: https://jeong-pro.tistory.com/80?category=793347 [기본기를 쌓는 정아마추어 코딩블로그]
더 자세한 내용을 보고 싶으신 분들은 밑에 블로그를 참고하세요. 저는 요약했을 뿐...
참고 사이트
-> https://jeong-pro.tistory.com/80?category=793347
'면접질문' 카테고리의 다른 글
[면접질문] WEB_HTTP와 HTTPS는 무엇인가? 차이점은? (0) | 2021.11.11 |
---|---|
[면접질문] JAVA 인터페이스 & 추상클래스 공통점과 차이점 (0) | 2021.11.10 |
[면접질문] WEB_ WAS와 웹서버 차이 (0) | 2021.11.05 |