HTTP 프로토콜
1) 특징
(1) 비연결성(Connectionless)
(2) 무상태(Stateless)
2) 상태 유지의 필요성
- HTTP 프로토콜의 특징으로 인해 Request 간 의존관계가 없음
- 연결을 유지하지 않기 때문에 리소스 낭비가 줄어드나, 통신할 때마다 새로 연결하기 때문에 클라이언트는 매 요청마다 인증이 필요
- 이전 요청과 현재 요청이 같은 사용자로부터의 요청인지 알기 위해 상태를 유지해야함
쿠키(Cookie)
- 클라이언트에 대한 상태 정보를 key와 value의 형태로 로컬에 저장해 참조하는 방식
- 클라이언트의 상태 정보를 브라우저에 저장해 참조
1) 동작 방식
(1) 웹 브라우저가 서버에 요청
(2) 상태를 유지하고 싶은 값을 쿠키(Cookie)로 생성
(3) 서버가 응답할 때 HTTP 헤더(Set-cookie)에 쿠키 정보를 포함해 전송
(4) 전달받은 쿠키는 웹 브라우저에서 관리하고 있다가, 다음 요청 시 쿠키를 HTTP 헤더에 넣어서 전송
(5) 서버에서 쿠키 정보를 읽어 이전 상태 정보와 일치하는 지 확인 후 응답
2) 사용 예
(1) 아이디와 비밀번호 저장
(2) 쇼핑몰 장바구니
세션(Session)
- 일정시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술
1) 동작 방식
(1) 웹 브라우저가 성버에 요청
(2) 서버가 해당 웹 브라우저(클라이언트)에 세션 ID를 부여
(3) 서버가 응답할 때 HTTP 헤더(Set-cookie)에 세션 ID를 포함해 전송
(4) 웹 브라우저는 이후 웹 브라우저를 닫기까지 다음 요청 때 부여된 세션 ID가 담겨있는 쿠키를 HTTP 헤더에 담아 전송
(5) 서버는 세션 ID를 확인 후 해당 세션에 관련된 정보를 확인하고 응답
2) 사용 예
(1) 로그인
쿠키와 세션의 차이
- 세션도 쿠키를 사용해 값을 주고받으며 클라이언트의 상태 정보 유지
- 즉, 세션의 상태 정보 유지의 수단은 쿠키
쿠키 | 세션 | |
저장위치 | 클라이언트 | 서버 |
보안 | 취약 | 비교적 안전 |
라이프 사이클 | 만료시간 | 브라우저의 종료 |
속도 | 빠름 | 느림 |
'CS > Network' 카테고리의 다른 글
[네트워크] 웹 소켓(Web Socket) (0) | 2020.06.27 |
---|---|
[네트워크] CSRF(Cross Site Request Forgery) (0) | 2020.06.27 |
[네트워크] CORS(Cross Origin Resource Sharing) (0) | 2020.06.27 |
[네트워크] 혼잡 제어(Congestion Control) (0) | 2020.06.26 |
[네트워크] 흐름 제어(Flow Control) (0) | 2020.06.26 |
댓글