프로토콜

프로토콜은 주는 쪽과 받는 쪽간의 약속이다. 데이터를 전달하기 위한 절차이다. 통신 규약에 해당된다. 상호간에 그 내용을 이해하기 위해서 서로 약속을 한다. 무슨 데이터를 먼저 보내고 그 다음에 무슨 데이터를 보내고, 그 내용이 뭔가에 따라서 계속 전달이 되거나 멈추거나 하는 등의 약속이다. 내용 자체라기 보다는 전달해주거나 전송을 위한 모든 것을 포함한다. 본문의 내용까지 해석을 의미하지는 않는다. TCP/IP 같은 것이 통신 프로토콜이다. 프로토콜은 연결시에는 모두 필요하다. 마우스를 컴퓨터에 연결해서 사용할 때 USB로 연결한다면 이때도 통신 프로토콜이 필요하다.

인터넷 쿠키와 세션

컴퓨터에서의 쿠키도 먹는 쿠키에서 표현이 나왔을지 모른다. 개발을 하다보면 쿠키로 구웠냐 라는 표현을 하는 것 봐서는 그럴 수 있다. 변수 값을 단말, 클라이언트쪽에 저장하는 개념이 쿠키이다. 달리 서버에 저장되는 것을 세션이라고 한다.

클라이언트나 서버에 왜 무엇을 저장할까 보면 이것이 왜 나왔을지 생각해보면서 개념을 이해하면 좋을 것이다. 웹은 기본적으로 한번 호출하고 응답을 받고 끊긴다. 계속 연결되어 있지 않아서 페이지 호출마다. 클라이언트가 누군인지를 알아야 한다. 최소 어떤 데이터들을 보여주려면 어떤 사람의 것인지는 알아야 하는데, 그 사람이라는 것을 매번 알려준다는 것은 번거로운 일일 수도 있고, 보안상 취약점이 노출될 수도 있다. 그러면 값을 저장을 해야 한다. 그러면 이 값을 어떤식으로 어떻게 저장할 것인가가 문제가 된다. 그것을 단말쪽 클라이언트쪽에 어딘가 파일에 저장하는 것이 쿠키이다. 물론 이 파일은 시스템쪽 폴더에 있다. 사실 들어가보면 누구나 내용을 볼수가 있다. 그래서 바로 나오는 것은 쿠키에 아이디 패스워드같은 것을 저장하게 되면 굉장히 위험하다.

내가 사용하는 컴퓨터이지만 공용에서 사용하는 컴퓨터라면 다른 사람이 내 정보를 볼 수 있다는 얘기다. 쿠키나 세션은 세션을 물론 채팅과 같은 클라이언트가 지속적으로 연결되어 있는 상황에서도 쓸 수 있는 얘기지만, 데이터를 저장한다는 의미에서는 웹사이트에 관련된 내용이다. http 프로토콜의 특성상 한번 연결하고 끊기 때문에 데이터를 저장해야 하는 것이고 쿠키는 클라이언트 세션은 서버에 저장된다. 쿠키를 지금도 사용하기는 한다. 개인정보 관련 없는 내용들을 저장하기에는 좋을 수 있다.

세션 세션은 서버에 저장되는 데이터이다. 세션에는 좀더 보안이 필요한 데이터를 저장할 수 있다. 그럼 세션에도 데이터가 저장이 된다면 데이터베이스에 저장되는 데이터와 어떤 차이일까 데이터베이스에 저장되는 되는 데이터는 사용자 데이터, 정보 데이터 등이다. 웹사이트 상에서 세션 정도에 저장되는 데이터는 기록을 해둬야 하는 정보성이 아니라 상황을 저장하는 데이터가 주이다. 로그인 여부라든가 현재 사용자의 계정정보라든가 하는 데이터가 많아서 저장하는 것이 아니라 데이터베이스까지 연결하지 않고도 확인할 수 있게 하고자 하는 데이터들이다. 이 사용자가 로그인해서 들어왔는데, 다른페이지를 이동했는데, 이동하는 순간 다른 페이지이기때문에 해당페이지에서도 로그인 여부를 필요하다. 누구인지도 알아야 한다. 이런 내용들을 세션 변수에 담아뒀다가 사용할 수 있다. 빠른 속도로 알 수 있다. 데이터베이스는 웹서버, WAS서버와 별도로 있기때문에 거기까지 물어보려면 데이터베이스를 연결하고, 조회해와야 한다. 하지만 세션 변수는 대개 어플리케이션 서버 정도에 있기때문에 그 정보를 바로 알 수 있다.