aJax통신
HTTP(Hypertext Transfer Protocol)이란?
쿠키와 세션을 이해하기 위해서는 이 개념이 등장한 배경을 이해해야한다. 생활코딩님이 강의에서 드신 예시가 적절할 것 같다.
예시
고객(client:클라이언트/browser 등)이 총기를 구매한다고 상상해보자.
1.고객이 총포상에 들어온다..(connection in)
2.손님은 총포상에 가서 자신에게 쓸만한 총이 있는지 요구한다.(request)
3.그리고 점원(Server)은 그에게 적합한 총들을 보여준다.(response)
4.다시 고객은 그가 제시한 총들 중에서 필요한 것들을 골라 구매를 요청한다.(request)
5.요청 받은 직원은 총들의 가격 및 필요 부품 및 지시사항등을 알려준다.(response)
6.손님은 요구받은 가격을 지불한다.(request)
7.점원은 총을 손님에게 준다.(response)
8.총을 받은 손님은 그대로 가게를 나간다.(connection out)
이런 일련의 과정은 괄호에 명시한 것처럼 요청(request)과 응답(response)의 상호작용인 것이다.
그런데 하필 방문한 손님이 외계인이라면??
지구인들의 사회적 양식을 제대로 이해하고 있는 외계인이 아니라면 점원은 그 외계인이 왜 온것인지 모를 테고, 외계인은 그 점원에게 총을 어떻게 구매해야하는지 모를 것이다.
(어쩌면,,구매해야한다는 개념이 없을지도 모른다.)
이런 문제 속에서 중요한 점은 단순한 request와 response를 넘어서 이것들의 포함하는 상위 개념의 상호작용을 표현한 양식. 다른 말로 규약(Protocol)이라고 할 수 있다.
인터넷 내에서 상호작용을 위한 규약은 Hypertext(text를 초월한 image, video, media, animation 등, 종합적으로 data라 표현하고 싶다.)을 전송(Transfer)할 때 이러이러하자고 정하였고, 우리는 이 규약을 HTTP라고 부른다.
이러한 HTTP는 비연결성(Connectionless : FTP와는 달리 상태가 끊기는 점.)과 비상태성(Stateless:요청에 대한 응답받은 결과 A는, 후에 서버에서 수정한 결과 A’와 동일한 상태를 가지지 않는다.)을 지니기 때문에,
Server 입장에서 Client가 보내는 각각의 Requset를 동일한 대상이 보낸 것이라고 간주 하지 않는다.
위에 든 예시를 보면, 3차례의 request가 있었음에도 점원은 해당 고객이 같은 사람인지 모르고 다 다른 요청으로 생각한다는 것이다. 이는 누가 총을 요구했는지, 어떤 총을 요구했는지, 돈을 받더라도 누구에게 총을 줘야할지 모르는 상태라는 것이다.
점원입장에서 UZI를 요구한 사람에게 UZI의 값을 받고 UZI를 줘야 하고, AK74를 요구한 사람에게 AK74에 해당하는 값을 받고 AK74를 줘야한다.
이렇게 점원이 손님을 식별하는것, Server가 Client를 식별하도록 도와주는 것이 Cookie와 Session의 주요한 기능 중 하나이다.
Cookie
개념
- 서버가 사용자의 웹브라우저에 저장하는 데이터
웹 사이트에 최초 접속 시, 서버가 브라우저에
댓글남기기