오늘은 항해톡에서 소개해준 캐시, 세션, 쿠키에 대한 개념과 http 와 https의 개념에 대해 정리를 해 보았다. 그 이외에 코딩테스트 문제 및 제공된 알고리즘 강의를 들으며 혼자 자습하는 시간을 가졌다.
Hypertext transfer protocol의 약자로 인터넷에서 정보를 주고 받을 수 있는 프로토콜이다. 클라이언트쪽에서 사용자가 브라우저의 url을 통해서 어떠한 서비스를 요청하면 서버에서는 해당 요청사항에 맞는 결과를 도출하여 응답하는 형태로 동작한다.
HTML, Plain text, JSON, XML과 같은 형태의 정보를 주고 받을 수 있다.
오직 요청/응답 방식으로 동작하고, 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
(쿠키, 세션의 등장이유)
HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불리는 HTTP에 데이터 암호화가 더해진 통신 규약이다. 네트워크상에서 중간에 제3자가 정보를 볼 수 없도록 공개키 암호화를 지원한다.
공개키/개인키 암호화방식을 이용해 데이터를 암호화하고 있고 다음과 같은 효과를 얻을 수 있다.
공개키 암호화: 공개키로 암호화를 하면 개인키로만 복호화할 수 있다. -> 개인키는 나만 가지고 있으므로, 나만 볼 수 있다.
개인키 암호화: 개인키로 암호화하면 공개키로만 복호화할 수 있다. -> 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있다.
보안: HTTP < HTTPS
전송속도: HTTP > HTTPS
비용: HTTP < HTTPS
개인정보와 같은 민감정보를 주고 받아야 한다면 HTTPS를, 단순한 정보 조회 등만을 처리하고 있다면 HTTP를 이용
클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일로써, 사용자 인증이 유효한 시간을 명시할 수 있고, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지 된다. 사용자가 따로 요청하지 않아도 브라우저가 데이터 요청시 request header를 넣어서 자동으로 서버로 전송 한다.
쿠키의 사용 예시
세션은 쿠키를 기반으로 하지만 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 서버측에서 관리를 한다. 서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할때 인증상태를 유지한다. 정보를 서버에 두기 떄문에 쿠키보단 보안에 좋지만, 사용자가 많아질수록 서버 메모리가 받쳐주어야 한다. 동접자 수가 많은 웹사이트인 경우 서버 과부하를 주게 되므로 성능 저하의 요인이 되기도 한다. 클라이언트가 데이터 요청시, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는데 이것이 세션 ID이다.
세션의 사용 예시
쿠키와 세션의 비교[출처]
동작원리 및 역할: 쿠키 == 세션
요청 속도: 쿠키 > 세션
보안: 쿠키 < 세션
라이프 사이클: 쿠키 > 세션
캐시는 이미지나 css, js파일 등을 브라우저나 서버 앞단에 저장해놓는것으로 웹페이지를 빠르게 렌더링 하는 목적이지만 쿠키/세션은 사용자의 정보 등을 저장하여 사용자 인증을 좀더 용이하게 해주는 목적이다. 캐시는 사용자가 직접 수동으로 삭제를 해주어야하고, 쿠키/세션은 만료기간이 있어서 시간이 지나면 자동 삭제된다.
공부 많이했다 오늘