HTTP는 클라이언트와 서버 간에 통신을 합니다. 요청을 하는 쪽을 클라이언트, 요청을 받고 응답하는 쪽을 서버라고 할 수 있습니다. 2대의 컴퓨터가 통신하는 경우 반드시 한쪽은 클라이언트, 나머지는 서버를 담당해야합니다. HTTP 프로토콜에서 이는 명확하게 구별되어야합니다.
클라이언트가 요청하는 것을, 리퀘스트 라고 합니다. 반대로 서버가 응답하는 것을 리스폰스라고 합니다. 리퀘스트 없이 리스폰스를 할 수 없습니다.
HTTP는 상태를 유지하지 않는 스테이트리스(stateless) 프로토콜입니다. 즉 이미 실행된 리퀘스트와 리스폰스에 대해 전혀 기억을 하지 못한다는 말 입니다.
그런데 현대 웹에서는 로그인과 같이 상태를 유지해야하는 경우들이 발생합니다.
이러한 경우들을 처리하기 위해 쿠키(cookie)라는 기술이 도입 되었습니다.
쿠키로 인해 http를 이용한 통신에서도 상태를 계속 관리할 수 있게 되었습니다.
HTTP 초기 버전에서는 HTTP 통신을 한 번 할 때마다 TCP에 의해 연결과 종료를 할 필요가 있었습니다. 이렇게 통신과 종료를 하게 되는 쓸모없는 일은 통신량이 늘어나게 됩니다.
이를 해결하기 위해 지속 연결이라는 방법을 사용합니다. 이는 간단하게 말하면, 한 쪽이 연결을 종료하지 않는 이상 TCP연결을 계속 유지하는 것 입니다.
파이프라인화는 리스폰스가 오는 것을 기다리지 않고 리퀘스트를 보낼 수 있도록 하는 것을 말합니다. 병렬처리가 가능하다는 것은 그만큼 효율적으로 동작할 수 있는 웹을 말합니다.
HTTP는 스테이트리스 프로토콜이라고 말했습니다. 그렇기 때문에 쿠키가 등작했다고 말했습니다.
쿠키를 가지지 않은 상태에서의 리퀘스트
클라이언트 -> 리퀘스트 -> 서버 -> 쿠키 붙여서 리스폰스 -> 클라이언트한테 쿠키 전달
위와 같은 방식으로 서버에서 쿠키를 전달해 줍니다. 그러면 이제 쿠키를 가진 클라이언트가 리퀘스트 하는 걸 보면
쿠키를 가진 상태에서의 리퀘스트 -> 쿠키를 가져야 확인할 수 있는 내용을 리퀘스트로 전달 -> 클라이언트에서 확인
예를들면 로그인해야 볼 수 있는 웹사이트 같은 것이 있습니다. 쿠키가 없으면 로그인이 안돼있다면, 화면을 보여주지 않습니다. 로그인이 되어있다. 즉, 쿠키를 갖고 있다면 이를 서버가 확인하고 적절한 응답을 해주는 것
이것이 쿠키를 사용한 상태 관리입니다.