공부해봅시당
[네트워크] Session을 이해해보자(feat. 웹 세션, 네트워크 세션, 데이터베이스 세션...) 본문
세션이라는 단어를 접할 때, 웹 세션과 네트워크 세션, 데이터베이스 세션 등 여러 세션에 대해 접하면서 세션의 의미에 대해 혼란스러워 했었다.
그래서 세션이 무엇인지, 세션에는 어떤 것들이 있는지, 세션 중에서 어떤 것이 쿠키와 비교되는 것인지, 그리고 같이 혼동하게 되는 개념인 토큰과 캐시에 대해서도 총망라하여 이번 글과 다음 글에서 정리해보고자 한다.
세션
세션이란?
영어단어로 먼저 이해해보자
대부분의 용어가 영어 단어로 이뤄져 있기 때문에(당연하다... 영어권 사람들이 만들었다...),
영어 단어로서 어떻게 사용되는지 알아야 컴퓨터 과학에서 용어의 진짜 의미를 파악할 수 있다.
영어에서 `세션`은 `일반적으로 모임이나 회의의 기간`을 의미한다.
예를 들어 'The conference session lasted for two hours'는 '회의 세션은 두 시간 동안 지속되었다'는 뜻이 된다.
이런 식으로 the conference session과 같이 `어떤 특정 기간`을 의미하는 것이 세션이다.
적용해보자
그럼 이 단어를 영어권 사람들이 왜 컴퓨터 과학에 도입했을까?
`어떠한 특정 기간이라는 것을 명시할 필요가 생겨서` 세션이라는 용어가 컴퓨터 과학에도 도입된 것이라고 유추해 볼 수 있다.
그래서 컴퓨터 과학에서는 일반적으로 `사용자와 시스템 간의 상호작용 기간`을 의미하게 된다.
상태 유지: HTTP와 같은 무상태 프로토콜에서 사용자의 상태를 유지하는 데 사용됩니다.
보안: 사용자의 인증 상태를 관리하고, 보안 정책을 적용하는 데 도움을 줍니다.
리소스 관리: 세션을 통해 시스템 자원을 효율적으로 관리하고, 필요한 자원을 할당 및 해제합니다.
사용자 경험: 사용자 경험을 개선하여, 사용자가 지속적으로 시스템과 상호작용할 수 있도록 합니다.
따라서 웹 세션, 네트워크 세션, 사용자 세션, 데이터베이스 세션 모두 상호작용하는 기간이라고 편하게 이해하면 된다.
그럼 각각이 무엇인지 간단하게 살펴보고, 웹 세션에 대해 더 자세히 알아보도록 하자.
어떤 세션들이 있을까?
위에서 언급했던 웹 세션, 네트워크 세션, 사용자 세션, 데이터베이스 세션에 대해 간략하게만 살펴보자.
유형 | 정의 | 시작 조건 | 유지 조건 | 종료 조건 |
웹 세션 | 사용자가 웹 서버와 상호작용하는 기간 | 사용자가 웹사이트를 방문하여 세션 ID 생성 | 서버가 세션 ID로 사용자의 상태를 추적 | 사용자가 웹사이트를 떠나거나 타임아웃 발생 |
네트워크 세션 | 두 네트워크 엔티티 간의 통신 기간 | 핸드셰이크 과정을 통해 연결 설정 (예: TCP의 SYN-ACK 패킷 교환) | 데이터 전송이 활발히 이루어짐 | FIN-ACK 패킷 교환으로 연결 종료 |
사용자 세션 | 사용자가 시스템 또는 애플리케이션에 로그인하여 활동하는 기간 | 사용자가 시스템에 로그인 | 사용자의 활동을 시스템이 추적하고 필요한 권한을 관리 | 사용자가 로그아웃하거나 시스템이 로그아웃 시킴 |
데이터베이스 세션 | 클라이언트 애플리케이션이 데이터베이스에 연결되어 있는 기간 | 클라이언트가 데이터베이스에 연결 요청 | 클라이언트가 데이터베이스에 쿼리를 실행하고 트랜잭션 수행 | 클라이언트가 연결을 종료하거나 타임아웃 발생 |
웹 세션
웹 세션은 사용자가 `웹 서버와 상호작용하는 기간`을 의미합니다.
웹 세션 동작 과정
1. 세션 시작
사용자가 웹사이트를 방문하면 세션이 시작된다.
이때 서버는 세션 ID를 생성하고, 이를 사용자에게 전송한다.
세션 ID는 쿠키, URL 파라미터, 혹은 히든 필드 등을 통해 전달될 수 있다.
2. 세션 상태 유지
세션 동안 서버는 세션 ID를 사용하여 사용자의 상태를 추적한다.
예를 들어, 로그인 상태, 장바구니 내용 등이 포함될 수 있다.
3. 세션 종료
세션은 사용자가 웹사이트를 떠나거나 일정 시간 동안 활동이 없을 때 종료된다.
세션 타임아웃 기간은 서버 설정에 따라 다를 수 있다.
네트워크 세션
네트워크 세션은 `두 네트워크 엔티티 간의 통신 기간`을 의미한다.
예를 들어, 클라이언트와 서버 간의 TCP/IP 연결이 네트워크 세션의 예이다.
네트워크 세션 동작 과정
1. 세션 설정
세션은 보통 핸드셰이크 과정을 통해 설정된다.
예를 들어, TCP의 경우, SYN-ACK 패킷 교환이 세션 설정을 시작한다.
2. 데이터 전송
세션이 설정되면, 두 엔티티는 데이터를 주고받을 수 있다.
세션 동안 전송되는 데이터는 일관성을 유지하며, 오류 제어 및 흐름 제어 메커니즘이 적용된다.
3. 세션 종료
세션이 끝나면 연결이 종료된다.
이는 일반적으로 FIN-ACK 패킷 교환을 통해 이루어진다.
사용자 세션
사용자 세션은 `특정 시스템 또는 애플리케이션 내에서 사용자의 활동 기간`을 의미한다.
예를 들어, 운영체제에서의 사용자 로그인 세션이 있다.
사용자 세션 동작 과정
1. 세션 시작
사용자가 시스템에 로그인하면 세션이 시작된다.
이때 사용자의 인증 정보를 확인하고, 필요한 리소스를 할당한다.
2. 세션 유지
세션 동안 사용자는 시스템 자원에 접근할 수 있으며, 다양한 작업을 수행할 수 있다.
시스템은 사용자의 작업을 추적하고 필요한 권한을 관리한다.
3. 세션 종료
사용자가 로그아웃하거나 시스템이 강제로 로그아웃 시키면 세션이 종료된다.
이때 시스템은 사용자의 작업을 저장하고, 할당된 자원을 해제한다.
데이터베이스 세션
데이터베이스 세션은 `클라이언트 애플리케이션과 데이터베이스 관리 시스템(DBMS) 간의 연결`을 의미한다.
데이터베이스 세션 동작 과정
1. 세션 시작
클라이언트가 데이터베이스에 연결을 요청하면 세션이 시작된다.
2. 쿼리 실행
세션 동안 클라이언트는 데이터베이스에 쿼리를 실행하고, 데이터를 검색, 삽입, 갱신, 삭제할 수 있다.
3. 세션 종료
작업이 끝나면 클라이언트는 데이터베이스 연결을 종료하고 세션을 끝낸다.
다음 글에서는 세션, 쿠키, 토큰, 캐시에 대해 다루도록 하겠다.
참고
https://velog.io/@juhyeon1114/%EC%84%B8%EC%85%98
세션(Session)이란?
⚡
velog.io
'STUDY > 네트워크' 카테고리의 다른 글
[네트워크] 계속 헷갈리는 MAC 주소와 IP 주소 완벽정리 (그런데 이제 OSI 7Layer와 함께하는...) (1) | 2024.04.27 |
---|---|
[네트워크] Socket 통신 (0) | 2024.03.20 |
[네트워크] HTTP vs HTTPS (0) | 2024.03.20 |
[네트워크] TCP vs UDP (0) | 2024.03.20 |
[네트워크] OSI 7 Layer (0) | 2024.03.20 |