jacketList

쿠키(Cookie)와 세션(Session) 본문

Cs/네트워크

쿠키(Cookie)와 세션(Session)

ukkkk7 2023. 11. 18. 17:43
728x90
반응형

 

HTTP는 클라이언트의 상태 정보를 저장하지 않는 Stateless한 특징과 요청에 응답한 후 연결을 끊는 Connectionless한 특징을 갖고 있다. 그렇다면 매번 요청이 들어올때마다 올바른 사용자인지 검사하고 연결하는 작업을 반복해야 한다는 것이다. 이는 매우 비효율적인 작업이고 이를 해결하기 위해 쿠키(Cookie)와 세션(Session)이 등장하게 되었다.

 

 

 

쿠키(Cookie)는 무엇인가요?

쿠키는 사용자가 웹 사이트에 방문했을 경우 사용자의 컴퓨터에 저장되는 작은 기록 파일을 의미한다.

클라이언트의 상태정보를 쿠키형태로 클라이언트의 PC에 저장해 놓고 필요시 해당 정보를 참조하거나 재사용 할 수 있다.

 

 

 

쿠키는 어떻게 동작하나요?

쿠키의 동작방식

  • 사용자가 서버로 로그인 요청을 보낸다
  • 서버는 요청을 확인한 후 응답헤더에 set-cookie:를 추가하여 응답한다.
  • 클라이언트는 이후 서버에 요청을 할 때 받은 쿠키를 자동으로 요청헤더에 추가하여 요청을 한다. 요청헤더에 추가하는 작업은 브라우저가 자동으로 처리한다.

 

쿠키의 특징은 무엇인가요?

  • 이름, 값, 만료일(저장 기한 설정),경로정보를 담고 있다.
  • 클라이언트에 총 300개의 쿠키를 저장할 수 있다.
  • 하나의 도메인 당 20개의 쿠키를 저장할 수 있다.
  • 하나의 쿠키는 4KB(=4096Byte)까지 저장 가능하다.
  • key-value쌍으로 구성되어 있다.

 

 

세션(Session)은 무엇인가요?

일정시간 동안 사용자로부터 들어오는 일련의 요청을 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술

웹 서버에 접속한 시점부터 웹 브라우저를 종료한 시점까지 유지된다.

즉 사용자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 이를 세션이라 부른다.

 

 

 

 

세션은 어떻게 동작하나요?

 

  • 클라이언트는 서버에 로그인 요청을 보낸다.
  • 서버는 요청헤더(Request-Header)필드의 cookie를 확인하여 클라이언트가 해당 session-id를 보냈는지 확인한다.
    • 만약 session-id가 없다면 새로운 id를 생성하고 이를 클라이언트에 넘겨준다.
  • 클라이언트는 서버로 부터 받은 session-id를 쿠키에 저장한다.
  • 서버에 요청을 보낼 때 쿠키의 session-id값을 같이 전달한다.
  • 서버는 session-id값을 확인하여 session에 저장된 클라이언트의 정보를 가지고 요청을 처리 후 응답한다.

 

세션의 특징은 무엇인가요?

세션은 클라이언트의 정보를 서버에 저장하기 때문에 저장 데이터에 제한이 없다.

각 클라이언트마다 고유의 session-id를 발급하고 해당 id를 통해 클라이언트의 요구에 맞게 응답한다.

 

 

 

그렇다면 쿠키와 세션의 차이점이 있나요?

 

  • 쿠키
    • 쿠키에 사용자의 정보가 있기 때문에 서버에 요청시 속도가 빠르다.
    • 쿠키는 파일로써 로컬에 저장되기 때문에 브라우저를 종료해도 정보가 사라지지 않으며 사용자가 만료기간을 지정하면 쿠키가 삭제될 때까지 정보를 유지시킬 수 있다.
    • 로컬에 저장되어 있기 때문에 서버에 요청을 보낼 때 스니핑 당할 우려가 있어 보안적인 측면에서 세션보다 좋지 않다.

 

  • 세션
    • 정보가 서버에 있기 때문에 처리 과정을 한 번 더 거치게 되어 쿠키에 비해 속도가 느리다.
    • session-id를 통해 서버에 저장된 정보를 확인하기 때문에 쿠키에 비해 보안적인 측면이 좋다.
    • 만료 기한을 지정할 수 있지만 브라우저가 종료되는 순간 세션 또한 삭제된다.

 

세션과 쿠키 뭐가 더 좋음?

세션이 쿠키에 비해 보안적인 측면에서는 좋은편 이지만 서버에 정보를 저장하기 서버 자원을 사용하는데 한계가 있고 응답 속도 또한 느리다. 그렇기에 자원관리 측면에서 세션과 쿠키를 적절히 혼용해서 사용하면 웹 사이트의 속도를 높이며 서버 자원의 낭비를 방지 할 수 있다.

 

 

 

 

References

 

https://dev-coco.tistory.com/61

https://velog.io/@octo__/%EC%BF%A0%ED%82%A4Cookie-%EC%84%B8%EC%85%98Session

 

 

 

 

 

 

 

728x90
반응형

'Cs > 네트워크' 카테고리의 다른 글

TCP/UDP  (1) 2023.11.21
SOP 와 CORS  (1) 2023.11.21
프록시 서버[Proxy Server]  (5) 2023.11.19