dev_dbdb1114

세션은 무엇인가? 본문

프로그래밍/server

세션은 무엇인가?

dbdb1114 2023. 7. 18. 14:58

세션이란? 


  1. 클라이언트 최초요청 : 웹 브라우저를 켜서, naver와 같은 사이트에 요청을 한다. 
  2. 서버측 최초 응답1 : 서버에서는 해당 주소에 맞는 메소드를 찾는다.
  3. 서버측 최초 응답2 : 그 메소드에서 요청에 맞는 html파일을 리턴해준다. ( http header를 붙인다. )
  4. 서버측 최초 응답3 : header에 쿠키를 만들어서 sessionID를 담아서 보내준다. 서버측에서는 해당 sessionID를 저장해두고, 로그인 유저의 경우, 해당 유저의 정보를 sessionID와 같이 저장해둔다.
  5. 클라이언트 두 번째 요청 : 웹브라우저에서는 쿠키를 받아서 저장한다. ( session ID )
  6. 클라이언트 두 번째 요청 : 이후에 발생되는 웹브라우저의 요청 부터는 header에 sessionID를 붙여서 보내준다. 
  7. 서버측 두번째 응답 : header에 같이 온 sessionID를 가지고 있는지 확인한다.

세션이 사라지는 경우


  1. 서버측에서 저장해둔 세션ID를 삭제하는 경우
  2. 클라이언트가 브라우저를 모두 종료시켰을 경우
  3. 특정 시간(30분)이 지나면 세션값이 서버측에서 사라지는 경우

세션의 이용 


  1. 로그인시 많이 사용.
  2. 보안적으로 많이 이용.

세션의 단점 


  1. 서버측에서 로드밸런싱을 사용할 경우 서버마다 세션관리를 따로 하는 상황이라면, 로그인을 다시 해야하는 경우가 발생.
    -1 sticky 서버라는 것을 구현하여, 처음에 로그인 할때 sessionID를 발급해준 서버로만 요청을 보내게끔 하는 방법이 있음. 
    -2 session관리를 전부 복제하여 통일적으로 관리를 하는 방법도 있음. 
    -3 애초에 DB에 세션값을 저장해두고 쓰는 방법도 있음. 하지만 이런 방식을 사용할 경우 메모리를 이용하는 것이기 때문에 속도가 느려질 가능성이 높음 ( 입출력 / IO 가 일어나기 때문 ) 
    -4 메모리 서버를 사용하여 서로다른 서버들이 해당 메모리 서버에서 세션 ID를 관리하게끔 할 수 있음 ( ex: Redis )

 

 

'프로그래밍 > server' 카테고리의 다른 글

MSA란 무엇인가?  (0) 2023.09.13
OAuth2.0, 인증과 인가  (0) 2023.09.12
이미지 호스팅 서비스 Cloudinary with React  (0) 2023.09.04
JWT토큰에 대해서  (0) 2023.07.19
ProxyServer에 대해서  (0) 2023.07.05
Comments