본문 바로가기
혼자 노력하면서 기록하는 것들/FRONT-END

03. HTTP란 무엇인가 (쿠키,세션,캐시..)

1.HTTP!?

 HTTP Hyper Text Transfer Protocol 약자,

'인터넷에서 데이터를 주고받을 있는 프로토콜' 웹서버와 클라이언트 간의 통신을 하기 위한 통신규약이다.

(프로토콜이란 규칙인데, 이렇게 규칙을 정해두면 모든 프로그램이 규칙에 맞춰 개발돼 서로 정보를 교환할 있게 된다.)

HTTP 웹에서만 사용하는 프로토콜 이며, TCP/IP 기반으로 서버-클라이언트끼리 Request/Response 전송한다.

 

 

 

2.HTTP특징

Request-Response형태로 작동함. HTTP 'Connectless' 'Stateless'이다.

Connectless(비연결성)

클라이언트가 서버에 요청을 보내면 서버는 응답한 후에 접속을 끊는다.

(HTTP1.1에서 Connection헤더에 keep-alive라고 설정하면 커넥션을 유지할 이긴 )

 

Stateless(상태정보유지안함)

HTTP통신은 요청에 응답하고 접속을 끊기 때문에 클라이언트의 상태정보를 없다. 이를 Stateless라고 한다.

 

위와 같은 단점을 해결하기 위해 쿠키/세션의 개념이 등장한다.

 

3.쿠키/세션

(1) 쿠키

쿠키는 클라이언트 로컬에 저장되는 key-value 쌍의 작은 데이터파일!

클라이언트의 상태정보를 로컬에 저장했다가 요청(request) 참조된다.

구성요소는 쿠키이름, 쿠키값, 만료시간, 전송할 도메인명, 전송할 경로, 보안연결여부, HttpOnly여부

      • 쿠키 프로세스
        1. 브라우저에서 웹페이지에 접속한다.
        2. 클라이언트가 요청한 웹페이지를 응답으로 받으면서 HTTP 헤더를 통해 해당 서버에서 제공하는 쿠키 값을 응답으로 준다. (이러면 클라이언트는 해당 쿠키를 저장한다.)
        3. 클라이언트가 웹페이지를 요청한 서버에 재 요청시 받았던 쿠키 정보도 같이 HTTP 헤더에 담아서 요청한다.
        4. 서버는 클라이언트의 요청(Request)에서 쿠키 값을 참고하여 비즈니스 로직을 수행한다. (ex 로그인 상태 유지, ...)
        • 쿠키 사용 사례
        • 자동로그인, 팝업에서 "오늘 더 이상 이 창을 보지 않음" 체크, 쇼핑몰의 장바구니, ...
        • 쿠키의 한계
        • 클라이언트에 최대 300개 까지 쿠키를 저장할 수 있다.
        • 서버 도메인 하나당 최대 20개의 쿠키를 저장할 수 있다.
        • 하나의 쿠키 값은 최대 4KB까지 저장할 수 있다.

 

 

 

(2) 세션

브라우저가 종료되기 전까지 클라이언트의 요청을 유지하게 해주는 기술, 서버에 클라이언트의 상태를 저장하는 기술이다. 서버에 클라이언트에 대한 정보를 저장하고, 클라이언트 별로 ID 부여하는데 이를 세션아이디라 한다.

 

      • 세션 프로세스
      1. 클라이언트가 서버에 요청했을 때, 필요에 따라 세션에 클라이언트에 대한 데이터를 저장하고 세션 아이디를 응답을 통해 발급해준다. (브라우저 단에서 관리될 수 있도록 쿠키로 발급하는게 일반적인 구조)
      2. 클라이언트는 발급받은 세션 아이디를 쿠키로 저장한다. (ex. JSESSIONID)
      3. 클라이언트는 다시 서버에 요청할 때, 세션 아이디를 서버에 전달하여 상태 정보를 서버가 활용할 수 있도록 해준다.

결과적으로 세션을 통해 클라이언트의 정보는 서버에 두고, 세션 아이디를 이용해서 인증받고 정보를 이용하는 방식이다.

      • 세션 사용 사례
      • 로그인 정보 유지

 

출처: https://jeong-pro.tistory.com/80 [기본기를 쌓는 정아마추어 코딩블로그]

 

 

누군가 나에게 쿠키와 세션의 차이에 대해 물어본다면!?

저장위치, 보안성, 라이프사이클, 속도에 관해 말할 있다.

쿠키의 저장위치는 클라이언트(브라우져)메모리나 파일이구, 세션은 서버메모리

보안성은 쿠키같은 경우 로컬에 저장되기도 하고, 파일로 저장될 경우 탈취 변조될 위험이 있고, Request/Response 스니핑 당할 위험이 있다.

반면 세션은 클라이언트 정보자체는 서버에 저장되어 있으므로 비교적 안전하다.

라이프사이클은 쿠키같은 경우, 브라우저를 종료하더라도 저장될 있다. 반면 세션은 세션쿠키에 세션 아이디를 정한 경우 브라우저 종료 세션 아이디가 날아갈 있다.

 

(쿠키와 캐시의 차이 http://www.differencebetween.info/difference-between-cache-and-cookie )