Web

HTTP의 특징 및 쿠키, 세션, 캐시 비교

나는나는용 2023. 8. 5. 15:08
728x90

HTTP 특징

1. Stateless : 무상태성

클라이언트 상태정보를 갖지 않는 서버 처리 방식.

 

클라이언트와 첫 번째 통신에서 데이터를 주고받았어도, 다음 통신에서 이전 통신한 데이터들을 유지하지는 않음.

2. Connectionless : 비연결성

클라이언트가 서버에 요청 → 그에 맞는 응답 보냄 → 연결 끊음.

 

( + HTTP 1.1 버전에서 keep - alive값으로 변경 가능 )

keep - alive : 연결 유지하고 재활용하는 기능이 Default.

 

상태 유지 ( Stateful )

HTTP의 Stateless 특징을 보완하는 방법.

쿠키 ( Cookie )

웹사이트 접속 시 '사용자의 브라우저'에 저장되는 작은 텍스트 파일 ▶ 서버와 통신 시 HTTP 헤더에 포함됨.

 

'키 + 값'으로 구성 됨. 이름, 값 만료 기간(지정 가능)으로 구성됨.

 

오랜 시간 유지될 수 있으며, JavaScript로 접근할 수 있기에 쿠키에 민감한 정보를 담는 것은 위험하다.

∴ 주로, 노출 상관 없는 정보들(ex. 로그인 유지 상태, 팝업창 설정 ···)을 저장.

통신 방법

https://velog.io/@gwanuuoo/%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-%EC%BA%90%EC%8B%9C%EB%9E%80

1. 클라이언트 서버에 요청.( 첫 요청에는 쿠키가 없음 )

 

2. 서버에서 이 요청에 쿠키가 없음을 판별.

(통신상태(usesrId, Email, 로그인상태···)를 저장한 쿠키를 응답으로 보냄 : Set - Cookie)

 

3. 클라이언트의 브라우저가 받은 쿠키를 생성·보존.

 

4. 두번째 연결부터는 HTTP헤더에 쿠키를 실어 서버에 요청.

 

제약 조건

클라이언트는 총 300개의 쿠키를 저장할 수 있다.

 

하나의 도메인 당 20개의 쿠키를 가질 수 있다. 만일 20개를 넘는다면, 가장 적게 사용되는 것부터 삭제된다.

 

하나의 쿠키는 4KB ( 4096byte ) 저장 가능하다.

세션 ( Session )

클라이언트가 아닌, '서버'에 저장하는 쿠키.

 

유출되면 안되는 중요한 데이터를 저장함.

 

브라우저 종료시까지 유지됨.

통신 방법

1. 클라이언트가 서버에 접속하면 세션Id를 발급.

 

2. 서버에서는 클라이언트로 발급해준 세션Id를 쿠키를 이용하여 저장함.

 

3. 클라이언트가 다시 페이지에 접속할 시, 쿠키에 저장된 세션 Id를 서버에 전달함.

 

4. 서버는 요청 헤더에 쿠키 정보( 세션Id )로 클라이언트를 판별함.

 

▶한마디로, 쿠키 안의 세션Id신분증처럼 사용.

쿠키 v/s 세션

  쿠키 세션
저장 위치 웹 브라우저(클라이언트) 웹 서버
저장 기간 유효기간 설정 가능.
미지정시 웹브라우저 종료와 함께 삭제.
저장 방식 하드디스크 내 텍스트파일 웹 컨테이너 내 객체
용량 제한 총 300개, 도메인 당 20개, 쿠키 당 4KB 서버 허용 범위 내 가능(제한 없음)
속도 쿠키 > 세션
보안 낮음 ( 하드에서 꺼내 읽을 수 있음 ) 높음 ( 서버가 해킹당하거나 통신 중 세션 Id 탈취당하지만 않는다면 )

캐시 ( Cache )

리소스 파일들의 임시 저장소.

웹 브라우저가 동일한 주소로 연속 요청할 경우, 첫 번째 요청의 결과를 '로컬 PC의 캐시'에 저장해둔 뒤,

두 번째 요청 시 서버에 접근하는 것 대신 로컬PC의 캐시를 가져옴.

 

요청 결과값은 보통, 변경사항이 크지 않고 용량이 큰 파일들. ( ex. jpg, png, css, js, 베너 ··· )

▶ 이런 데이터들은 다시 사용될 가능성이 높아 매번 다시 다운받으려면 시간이 오래걸림.

∴ 저장소(캐시)에 저장하고 다시 재사용함으로써 페이지 로딩 속도를 빠르게 함.

 

+) 자주 변경되는 데이터를 캐시로 개발한다면, 클라이언트가 이전 캐시를 삭제하지 않는 한, 변경된 데이터가 아닌 이전 데이터만 출력되기 때문에, 목적에 맞는 저장 방식을 사용해야 한다.

728x90

'Web' 카테고리의 다른 글

HTTP 상태 코드 정리  (2) 2023.08.05
Get 과 Post 의 차이  (0) 2023.08.05