HTTP의 기초 - 4
전에 다루었던 HTTP의 특성중에 로그인은 어떤 상태인지 알아보자
앞서 HTTP는 stateless 상태, 서버에 상태를 저장할수 없다고 했었다.
그렇기 때문에 사용자 구분을 위해서 쿠키를 사용한다.
사용자 식별에는 다음과 같은 방법이 있다.
1) IP 추적
2) HTTP Authentication
3) URL에 식별자 포함
4) Cookie
이 중에서 쿠키를 제일 많이 사용한다.
쿠키는 서버에서 먼저 요청한다.
브라우저가 서버에 데이터를 요청을 했을때 서버에서 사용자 확인이 필요하다면
Set-Cookie라는 명령에 세션 아이디를 실어 보낸다.
그러면 클라이언트는 이 세션 아이디를 받아 쿠키 값을 생성한다.
그리고 다음부터 서버에 쿠키 데이터와 함께 요청을 전송 해준다.
세션은 상당히 긴 숫자로 되어있는데 이유는 세션이 해킹 당하게되면
다른 사용자가 자신의 권한으로 서버에 요청을 보낼수 있기 때문이다.
쿠키의 용도는 다음과 같다.
1) 세션관리
2) 개인화(예: 장바구니)
3) 트래킹(사용자 정보 추적)
이렇게 만들어진 쿠키값을 가지고 세션을 관리할수 있게된다.
그럼 세션이 어떻게 생성되고 관리되는지 알아보자
클라이언트가 로그인을 POST로 보내게 되면
먼저 세션 아이디를 하나 생성하고 쿠키값에 세션 아이디를 돌려준다.
서버의 데이터 베이스에도 세션의 정보와 유저의 정보를 저장한다.
서버가 Set-Cookie라는 명령어를 통해서 해당 정보를 세팅한다
이 명령을 이용해서 클라이언트에게 세션 아이디를 넘기면
클라이언트는 쿠키에 이 정보를 저장한다.
HTTP는 stateless 이기 때문에 클라이언트로 정보를 넘겨준 후
연결이 끊어지게 된다.
클라이언트 request 요청이 서버로 전달될때 쿠키값에 세션아이디가 전달된다.
서버는 세션 아이디와 매칭되는 유저가 있는지 데이터베이스를 조회하게된다.
데이터베이스에 유저가 있을 때 서버는 세션이 만료되어있지 않은지 다시 검사한 후
response를 클라이언트에게 보내주게 된다.
결론적으로 다음과 같은 세션 처리의 과정들이 일어나는 이유는
HTTP가 stateless, 상태를 저장하지 못하기 때문에 발생하는 일이다.
'개발' 카테고리의 다른 글
[Web] HTML(Hypertext Mark-up Language) (0) | 2017.04.18 |
---|---|
[Web] Mac Bitnami 설치 (0) | 2017.04.18 |
[네트워크] HTTP의 기초 - 3 (0) | 2017.04.18 |
[네트워크] HTTP의 기초 - 2 (0) | 2017.04.18 |
[네트워크] HTTP의 기초 - 1 (0) | 2017.04.18 |
댓글