HTTP의 특성
무상태성 (Stateless)
-> 상태정보를 가지지 않기 때문에 통신을 주고 받은 후, 이전 데이터를 유지하지 않는다.
비연결성 (Connectionless)
-> 서버는 클라이언트의 요청에 응답을 보낸 후 연결을 끊는다.
그러나 로그인, 데이터 등 상태를 유지할 필요가 있다. 이를 해결하기 위해 서버와 주고받은 통신 데이터를 저장해두는 방법으로 쿠키, 캐시, 세션이 있다.
1. 쿠키
- 사용자의 브라우저에 저장되는 텍스트 파일
- 서버와 통신 시, HTTP 헤더에 포함된다.
- 이름, 값, 만료기간, 경로 정보가 들어 있고, 키와 값으로 구성되어 있다.
- 쿠키는 오랜시간 유지될 수 있고, 자바스크립트를 통해 쿠키에 접근할 수 있으므로 민감한 정보를 담지 않는다.
- 통신과정
- 클라이언트가 서버에 요청
- 클라이언트가 보낸 요청의 헤더에 쿠키가 없으면 통신 상태를 저장한 쿠키를 응답으로 보냄
- 클라이언트의 브라우저가 쿠키를 생성하고 저장한다.
- 다음 요청에서는 HTTP 헤더에 쿠키를 실어서 서버에 요청한다.
2. 세션
- 서버에 저장하는 쿠키 -> 쿠키에 비해 속도가 느리다.
- 노출되지 않기 때문에 중요한 데이터가 저장된다.
- 브라우저를 종료할 때까지 유지된다. (유지기간을 설정할 수도 있다)
- 통신과정
- 클라이언트가 서버에 접속하면, 세션ID를 발급받는다.
- 서버에서는 세션ID를 쿠키를 이용하여 저장한다.
- 클라이언트가 다시 페이지에 접속할 때, 세션ID를 서버에 전달한다.
- 서버는 요청 헤더에 있는 쿠키에서 세션ID를 통해 클라이언트를 판별한다.
3. 캐시
- 리소스 파일들의 임시 저장소
- 변경사항이 크지 않고 용량이 큰 파일들을 저장한다. (ex. css/js 파일)
- 페이지 로딩 속도가 빨라진다.
- 통신과정
- 웹 브라우저가 처음으로 서버에 요청하면 결과를 로컬 PC의 캐시에 저장해둔다.
- 다음 요청 시, 서버에 접근하지 않고 로컬 PC의 캐시를 가져온다.
'CS Study > 네트워크' 카테고리의 다른 글
웹 동작 방식 (0) | 2022.04.19 |
---|---|
CORS란 + 스프링부트에서 CORS 에러 해결하기 (0) | 2022.04.06 |
HTTP와 HTTPS의 차이 (0) | 2022.03.23 |
HTTP 메소드 (0) | 2022.03.14 |
OSI 7계층 (0) | 2022.03.07 |