2018-03-22-쿠키와 세션의 차이점.md

쿠키와 세션의 차이점

default

우리가 특정한 웹사이트에서 로그인을 할 때, "ID와 비밀번호를 저장하시겠습니까?" 하는 말은 쿠키를 만들것이냐 란 말이드아

 

그럼 쿠키와 세션을 왜 사용할까?

HTTP프로토콜의 특성상 존재하는 단점을 보완하기 위해 존재하는데

두가지의 특성이 무엇이냐 하면 ConnectionlessStateless입니다

  • Connectionless - 클라이언트가 서버로 Request를 보내고 , 서버가 클라이언트에게 Response를 하면 접속을 끊는 특성
  • Stateless - 접속을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태 정보를 유지하는 특성

 

이 특성은 통신을 유지하지 않기 때문에, 그 쪽에 대한 자원의 낭비를 줄일 수 있지만, 만약 같은 웹사이트를 들어 갈 때마다 내가 누구인지 인증을 해야합니다.

예를 들어 네이버 로그인을 한 후 서비스를 이용시 다른 서비스를 이용할 때 다시 로그인을 해야 하는 상황이 발생합니다.

쿠키와 세션은 HTTP프로토콜을 이용 할때 서버가 클라이언트를 식별할 수 있게 도와주는 역할을 해주는 것

 

쿠키와 세션에 대해 알아보자

쿠키(Cookie)

  • 서버측에서 클라이언트측에 상태 정보를 저장하고 추출할 수 있는 메커니즘
  • 클라이언트의 매 요청마다 웹 브라우저로부터 서버에게 전송되는 정보패킷의 일종
  • HTTP에서 클라이언트의 상태 정보를 클라이언트의 하드 디스크에 저장하였다가 필요 시 정보를 참조하거나 재사용할 수 있음

 

쿠키 원리

클라이언트가 웹브라우저를 통하여 웹페이지 접속 -> 클라이언트가 요청한 웹페이지(HTTP)를 전송하면서 쿠키 설정(클라이언트의 하드디스크에 저장) -> 웹페이지에 재방문시 HTTP요청과 함께 쿠키도 같이 전송

 

사용 예

  • 방문했던 사이트에 다시 방문 하였을때 아이디와 비밀번호 자동 입력
  • 팝업에서 "오늘 이 창을 다시 보지 않음"체크
  • 쇼핑몰의 장바구니 역할

 

쿠키의 제약조건

  • 클라이언트에 총 300개 까지 쿠기 저장가능
  • 하나의 도메인 당 20개의 쿠키값만을 가질 수 있음
  • 하나의 쿠키 값은 4096Byte까지 저장 가능

 

만약에 한 도메인당 쿠키값이 20개를 초과해버리면, 가장 적게 사용된 쿠키부터 사라짐.

 

세션(Session)

  • 사용자가 웹 서버에 접속해 있는 상태
  • 사용자가 브라우저를 열어 서버에 접속한뒤 접속을 끊을(브라우저 종료)시점까지를 세션
  • 클라이언트가 웹서버에 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID(쿠키)를 부여, ID를 세션이라고 함
  • 세션의 정보를 서버에 저장, 따라서 보안면에서 쿠키보다 우수

 

HTTP 프로토콜은 비접속형 프로토콜이므로, 매 접속시마다 새로운 네트워크 연결이 이루어진다

이 ID는 쿠키를 사용하여 유지되며, 이 쿠키의 이름이 JSESSIONID이며, 서버는 JSESSIONID를 웹 브라우저에 전달하고, 클라이언트는 새로운 접속시 쿠키를 통해서 세션 ID값을 서버에 전달한다.

  • 세션 ID를 임시로 저장하여 페이지 이동 시 이용하거나, 클라이언트가 재 접속 했을 때 클라이언트를 구분할 수 있는 유일한 수단

 

세션의 단점

  • 서버에 저장되는 세션때문에 서버에 처리를 요규하는 부하와 저장 공간을 필요로 함

 

쿠키와 세션의 차이점

쿠키(Cookie)와 세션(Session)은 기능상 비슷한 역할을 하고, 동작원리도 비슷하다. 왜냐하면, 일반적인 세션은 쿠키를 바탕으로 동작하기 때문, 그러다 가장 중요한 차이점은 저장되는 곳이 다르다

쿠키는 클라이언트의 하드디스크에 저장되고, 세션은 서버에 저장된다.

그래서 쿠키는 서버의 자원을 전혀 이용하지않으며, 세션은 서버에 저장되기 때문에 서버의 자원을 사용할 수 있다.

 

마지막으로 짧게 간추리면

쿠키세션HTTP프로토콜의 웹사이트를 접속할 때 생기는 단점(Connectless , Stateless)을 보완하기 위해 사용되며, 쿠키는 클라이언트의 하드디스크에 저장되며 웹브라우저에서 서버로 HTTP프로토콜을 통해 웹사이트를 요청할때 같이 보내는 녀석.()

세션은 서버에 저장되며, 클라이언트에 각각의 ID(쿠키)를 부여하며 이것을 세션이라 한다. 이놈을 통해 나중에 웹사이트에 재접속 할때 클라이언트를 구분짓는 유일한 수단이 된다.

 

 

 

 

 

 

'WEB관련' 카테고리의 다른 글

웹브라우저가 서버와 통신하는 과정  (2) 2018.03.22

웹브라우저가 서버와 통신하는 과정

우리가 일상생활에서 컴퓨터나 스마트폰의 웹브라우저(chrome , explorer, Safari)를 통해 보고 싶은 웹페이지를 볼때 무슨 일이 발생하는지 알아봅시당.


 

클라이언트와 서버

web웹브라우저는 요청 , 웹서버는 응답

 

클라이언트란 웹브라우저(chrome, explorer 등)와 같은 웹에 접근할 수 있는 소프트웨어인터넷이 연결된 장치(데스크탑, 스마트폰)들을 말합니다.

 

서버는 웹페이지, 사이트,또는 앱을 저장하는 컴퓨터입니다. 클라이언트의 장비가 웹페이젱 접근하길 원할 때, 서버로부터 클라이언트의 장치로 사용자의 웹브라우저에게 보여지기 위한 웹페이지의 사본이 다운로드 됩니다.

 


 

기본적으로 알아야 하는 것들

지금은, 웹이 도로라고 상상해봅시다. 도로의 한 쪽 끝은 여러분의 집 같은 클라이언트 입니다. 다른 한 쪽 끝은 여러분이 뭔가를 사길 원하는 상점같은 서버입니다.

 

default

 

  • 인터넷 연결: 여러분이 웹에서 데이터를 보내고 받을 수 있게 해줍니다. 기본적으로 여러분의 집과 상점 사이의 거리와 같습니다.

  • TCP/IP: Transmission Control Protocol (전송 제어 규약) 과 Internet Protocol (인터넷 규약) 은 데이터가 어떻게 웹을 건너 여행해야 하는지 정의하는 통신 규약입니다. 이것은 주문을 하고, 상점에 가고, 또 여러분의 상품을 살 수 있게 해주는 운송 장치와 같습니다. 우리 예시에서, 이것은 차 또는 자전거 (또는 여러분의 두 다리) 와 같습니다.

  • DNS: Domain Name System Servers (도메인 이름 시스템 서버) 는 웹사이트를 위한 주소록과 같습니다. 여러분이 브라우저에 웹 주소를 입력할 때, 브라우저는 그 웹사이트를 검색하기 전에 DNS 를 살펴봅니다. 브라우저는 HTTP 메시지를 올바른 장소로 전송하기 위해 그 웹사이트가 있는 서버가 어떤것인지 찾아야 합니다 (아래를 보세요). 이것은 여려분이 접근하기 위해 상점의 주소를 찾아보는 것과 같습니다.

  • HTTP: Hypertext Transfer Protocol (하이퍼텍스트 전송 규약) 은 클라이언트와 서버가 서로 통신할 수 있게 하기 위한 언어를 정의하는 어플리케이션 규약 입니다. 이것은 여러분의 상품을 주문하기 위해 여러분이 사용하는 언어와 같습니다.

  • 컴포넌트 파일

    : 한 웹사이트는 여러분이 상점에서 사는 다양한 종류의 상품들과 같이 많은 다른 파일들로 만들어집니다. 이 파일들은 두개의 주요한 타입이 있습니다:

    • 코드 파일: 다른 기술들도 잠시 뒤 보게 되실것이지만, 웹사이트는 근본적으로 HTML, CSS, 그리고 JavaScript 로 생성됩니다.
    • 자원: 이것은 이미지, 음악, 비디오, 단어 문서, 그리고 PDF 같은, 웹사이트를 만드는 모든 다른 것들을 위한 공동적인 이름입니다.

 


 

웹브라우저의 동작 과정

여러분이 브라우저에 웹 주소를 입력할 때 (우리의 비유에서 상점으로 걸어가는 것과 유사합니다):

  1. 브라우저는 DNS 서버로 가서 웹사이트가 있는 서버의 진짜 주소를 찾습니다 (여러분이 상점의 주소를 찾습니다).
  2. 그 다음 브라우저는 서버에게 웹사이트의 사본을 클라이언트에게 보내달라는 HTTP 요청 메세지를 서버로 전송합니다.(상점으로 가서 상품을 주문합니다.) 이 메세지, 그리고 클라이언트와 서버 사이에 전송된 모든 데이터는 TCP/IP 연결을 통해서 전송됩니다.
  3. 이 메세지를 받은 서버는 클라이언트의 요청을 승인하고, "200 OK" 메세지를 클라이언트에게 전송합니다. "200 OK"는 "물론이죠. 당신은 웹 사이트를 볼 수 있어요! 여기 있어요" 라는 의미입니다. 그 다음 서버는 웹사이트의 파일들을 데이터 패킷이라 불리는 작은 일련의 덩어리들로 브라우저에 전송하기 시작합니다.(상점은 여러분이 주문한 상품을 전달하고, 여러분은 그것을 집으로 가져갑니다.)
  4. 브라우저는 이 작은 덩어리들을 완전한 웹 사이트로 조립하고, 당신에게 보여줍니다. (상품이 당신의 문에 도착합니다. — 새 것이죠, 멋저요!)

 


 

DNS(Domain Name Server)란

실제 웹 주소는 멋지거나, 여러분이 선호하는 웹사이트를 찾기위한 주소 막대에 입력하는 기억할만한 문자가 아닙니다. 그것은 숫자들의 문자열입니다, 이렇게요: 63.245.217.105.

이것은 IP 주소라고 하고, 웹의 하나뿐인 특정 위치를 나타냅니다. 그런데, 기억하기 아주 쉽진 않습니다, 그렇죠? 그것이 도메인 이름 서버가 발명된 이유입니다. 도메인 이름 서버는 여러분이 브라우저에 입력하는 웹주소 ("mozilla.org" 같은) 를 웹사이트의 실제 (IP) 주소에 맞춰주는 특별한 서버입니다.

웹사이트는 그들의 IP 주소를 통해 직접 접근될 수도 있습니다. 새 브라우저 탭의 주소막대에 63.245.217.105를 입력하는것으로 모질라 웹사이트에 가보세요.

 


 

패킷 설명

앞서 우리는 서버에서 클라이언트로 전송되는 데이터의 포맷을 설명하기 위해 "패킷" 이라는 용어를 사용했습니다. 이게 무엇을 의미하는 걸까요? 기본적으로, 데이터가 웹을 거쳐서 전송될 때, 수천개의 작은 덩어리들로 전송됩니다. 그래서 다양한 웹 사용자들은 동시에 같은 웹 사이트를 다운로드 할 수 있게 됩니다. 만약 웹 사이트가 하나의 큰 덩어리들로 전송된다면, 오직 한 번에 하나의 사용자만 다운로드 할 수 있을 것입니다. 이는 분명 웹을 매우 비효율적이고, 사용하기에 재미없게 만들 것입니다.

 

마지막으로 짧게 간추리면

웹브라우저에서 들어가고 싶은 웹사이트를 DNS를 통해 실제 주소(IP)를 알아낸 다음, HTTP 요청 메세지를 서버에게 보냄, 물론 TCP/IP 연결방식으로... 그 후 서버웹브라우저에게 패킷들을 쫘르르륵 보낸다음 웹브라우저가 그것들을 조립해서 사용자에게 보여준드아.

 

 

출처 : https://developer.mozilla.org/ko/docs/Learn/Getting_started_with_the_web/%EC%9B%B9%EC%9D%98_%EB%8F%99%EC%9E%91_%EB%B0%A9%EC%8B%9D

 

 

'WEB관련' 카테고리의 다른 글

쿠키와 세션의 차이점  (0) 2018.03.22

+ Recent posts