HTTP란???
HTTP는 클라이언트와 서버 사이에 이루어지는 요청 / 응답 프로토콜 이다.
HTTP는 클라이언트( 브라우저 ) 와 서버 사이의 의사소통의 방식
HTTP는 비연결성(Connectionless)와 무상태(Stateless)라는 특성을 가지고 있다.
비연결성이란 클라이언트가 요청(Reqeust)을 하고, 서버가 해당 요청에 적합한 응답(Response)를 하게 되면 바로 연결을 끊는 성질.
무상태(Stateless)
비연결적인 특성으로 연결이 해제됨과 동시에 서버와 클라이언트는 클라이언트가 이전에 요청한 결과에 대해서 잊어버리 게 된다. 즉 ,클라이언트가 이전과 같은 데이터를 원한다 해도 다시 서버에 연결하여 동일한 요청을 시도해야 한다.
HTTP는 이러한 특성으로 인해 Statelee Protocol 이라고 불리며 독립적인 쌍의 요청과 응답을 처리함으로
단순하고 상태를 저장해야 하는 서버의 부담을 감소
서로의 연결성과 상태를 유지하지 않는 서버와 클라이언트간의 로그인을 처리할때는??
서로간의 인증을 위해서 HTTP에서는 쿠키와 세션을 제공해주고 있다.
쿠키( Cookie )
쿠키는 웹 브라우저가 보관하고 있는 데이터로 웹 서버는 쿠키를 생성하여 브라우저에 전송할 수 있다.
쿠키는 Key-Value 형태로 브라우저의 쿠키 저장소에 저장되게 된다.
서버로 부터 쿠키를 전달받은 브라우저는 이후 서버에 요청을 보낼 때 쿠키를 HTTP헤더에 실어서 함께 전송하게 된다.
이를 이용하면 서버와 클라이언트는 필요한 값을 공유하고 상태를 유지 할 수 있다.
쿠키는 유효기간의 설정이 가능하고, 유효기간이 지나면 자동적으로 소멸하게 된다.
유효기간을 설정하지 않을시에는 브라우저가 종료되면 자동 삭제처리 된다.
하지만 쿠키로 로그인을 구현하는데는 한계가 있다 왜냐하면 쿠키는 네트워크를 통해 전송되기 때문에 중간에 쿠키를 탈취할 수 있는 취약점이 존재하고 이를 보완하고자 우리는 세션(Session)을 사용 한다.
세션( Session )
세션도 쿠키와 마찬가지로 클라이언트의 상태를 저장 할 수있다 . 쿠키와 다른점은 쿠키는 각 브라우저 의 별도 쿠키저장소에 저장되는 반면 세션은 서버에 저장이 된다.
브라우저는 각각 별도의 세션을 가지게 되는데, 각 세션을 구분하기 위해 고유의 ID 를 할당 하고 , 웹 서버는 각 브라우제어 세션 ID를 전송한다. 웹 브라우저는 웹 서버에 연결 시 매번 세션 ID를 보내서 웹 서버가 어떤 세션을 사용 할 지 알 수 있도록 합니다. 이 때, 웹 서버와 웹 브라우저가 세션 ID를 주고 받기 위해서 사용되는것이 쿠키!!