쿠키와 세션을 얘기하기 전에 네트워크의 연결성에 대해 설명하겠다.
네트워크 연결성(connectivity)은 네트워크에서 각 노드(컴퓨터, 라우터 등)들이 서로 얼마나 잘 연결되어 있는지를 나타내는 중요한 개념이다. 연결성은 네트워크의 성능, 안정성, 효율성에 큰 영향을 미친다.
연결성의 정의
네트워크의 연결성은 네트워크 내의 두 노드 간의 통신이 얼마나 잘 이루어질 수 있는지를 나타낸다. 네트워크가 잘 연결되어 있으면, 각 노드는 다른 노드로 데이터를 효율적으로 전송할 수 있다. 연결성은 네트워크의 물리적 연결, 데이터 전송 경로, 그리고 라우팅 프로토콜에 의해 결정된다.
2. 연결성의 유형
1) 물리적 연결성 (Physical Connectivity)
- 정의: 네트워크의 물리적 토폴로지에서 노드들이 어떻게 물리적으로 연결되어 있는지를 의미합니다.
- 예시: 두 컴퓨터가 케이블을 통해 직접 연결되어 있는 경우, 또는 여러 컴퓨터가 스위치나 허브를 통해 연결된 경우.
- 중요성: 물리적 연결성은 네트워크의 기본 구조를 결정하며, 네트워크가 확장될 수 있는 범위와 효율성을 좌우합니다.
2) 논리적 연결성 (Logical Connectivity)
- 정의: 네트워크 내에서 데이터가 실제로 이동하는 경로와 관련된 연결성을 의미합니다. 이는 물리적 연결성 외에 소프트웨어적으로 정의된 경로를 포함합니다.
- 예시: VPN(가상 사설망)이나 VLAN(가상 로컬 네트워크)처럼, 물리적으로는 연결되어 있지 않지만 논리적으로 연결된 네트워크 구성.
- 중요성: 논리적 연결성은 물리적 연결을 넘어서, 네트워크 상에서 데이터가 어떻게 흐르는지를 이해하는 데 필수적입니다.
3. 연결성의 측정 방법
1) 경로 길이 (Path Length)
- 정의: 두 노드 간의 경로에서 거치는 홉(hop)의 수, 또는 중간 노드의 수를 의미합니다.
- 중요성: 경로가 짧을수록 연결성은 더 좋다고 평가될 수 있습니다. 짧은 경로는 더 낮은 지연 시간과 높은 효율성을 제공합니다.
2) 가용 대역폭 (Available Bandwidth)
- 정의: 특정 경로에서 사용할 수 있는 데이터 전송 용량을 의미합니다.
- 중요성: 높은 대역폭은 더 많은 데이터를 동시에 전송할 수 있어 네트워크 성능을 향상시킵니다.
3) 연결의 안정성 (Reliability of Connection)
- 정의: 네트워크에서 통신이 얼마나 안정적으로 유지되는지를 나타냅니다. 네트워크 장애가 적을수록 안정성이 높습니다.
- 중요성: 안정성이 높은 연결은 데이터 손실이나 전송 오류가 적어 신뢰성이 높습니다.
4. 연결성의 중요성
1) 네트워크 성능
- 연결성이 높은 네트워크는 데이터 전송 속도가 빠르고 지연이 적습니다. 이는 전체적인 네트워크 성능을 향상시킵니다.
2) 네트워크 가용성
- 연결성이 좋은 네트워크는 장애가 발생해도 다른 경로를 통해 데이터가 전송될 수 있는 회복력이 있습니다. 이는 네트워크 가용성을 높입니다.
3) 확장성
- 연결성이 좋은 네트워크는 새로운 노드나 장치를 쉽게 추가할 수 있는 확장성을 제공합니다. 이는 네트워크 성장과 변화에 적응할 수 있게 합니다.
5. 연결성 관련 이슈
1) 병목 현상
- 특정 경로에 너무 많은 데이터가 집중되면 병목 현상이 발생할 수 있습니다. 이는 연결성에 영향을 미치고 네트워크 성능을 저하시킬 수 있습니다.
2) 보안
- 높은 연결성은 공격 표면을 넓히는 결과를 초래할 수 있습니다. 따라서 연결성이 높아질수록 네트워크 보안에 더 많은 신경을 써야 합니다.
3) 연결 정보
연결 정보는 연결이 되어 있어야 하며, 연결한 사용자가 누구인지에 대한 정보가 들어있다.
이러한 정보가 없다면, 통신하고 있는 사용자가 누구인지, 언제 통신했는지 알 수가 없다.
연결 정보가 없다면, 현재 인터넷을 사용하는 것처럼 연속적 통신이 불가하다.
수시로 연결해도 서버에 부담이 발생하며 서버에 불필요한 작업이 늘어 성능 저하로 연결되게도 하며, 심하면 통신 장애로 이어진다.
왜 쿠키와 세션을 말하기 전에 네트워크 연결성에 대해 설명한 이유가 쿠키와 세션이 모두 네트워크 상에서 작동하는 개념이기도 하고 쿠키와 세션은 기본적으로 서버와 클라이언트 간의 상호작용을 관리하는 방식인데, 이 상호작용은 결국 네트워크 연결을 통해 이루어지기 때문!
쿠키(Cookie)란?
쿠키는 사용자의 웹 브라우저에 저장되는 작은 데이터 파일이다. 서버는 클라이언트(웹 브라우저)에 쿠키를 설정할 수 있고, 이후 클라이언트가 서버에 요청을 보낼 때마다 쿠키를 함께 전송하여 서버가 사용자를 식별할 수 있도록 하는 목적을 두고 있다.
쿠키의 주요 특징
- 저장 위치: 클라이언트의 웹 브라우저에 저장된다.
- 수명: 쿠키는 생성 시 설정된 기간 동안 유지된다. 영구 쿠키는 만료 날짜가 설정되어 그 기간 동안 유지되며, 세션 쿠키는 브라우저가 닫힐 때까지 유지된다.
- 보안: 쿠키는 클라이언트 측에 저장되므로 보안에 취약할 수 있다. 민감한 정보는 쿠키에 직접 저장하지 않고, 토큰과 같은 대체 방법을 사용해 암호화하는 것이 일반적이다.
- 크기 제한: 대부분의 브라우저에서 하나의 쿠키는 4KB 정도의 크기로 제한된다.
- 주된 용도: 사용자의 로그인 정보, 사이트 선호 설정, 장바구니 정보 등을 저장하는 데 사용된다.
1. 브라우저가 웹 페이지에게 요청을 보낸다.
2. 서버가 페이지와 쿠키를 보낸다.
3. 브라우저는 같은 서버에 다른 페이지를 요청한다.
Ex)
- 사용자가 웹사이트에 로그인할 때, 서버는 로그인 상태를 유지하기 위해 사용자의 브라우저에 세션 ID를 쿠키로 저장할 수 있다.
- 사용자가 사이트를 떠나더라도 다음에 다시 방문할 때 로그인 상태를 유지하기 위해 쿠키가 사용될 수 있다.
세션(Session)
세션은 서버 측에서 관리되는 사용자와의 상호작용 상태를 저장하는 방법이다. 세션은 사용자가 웹 애플리케이션과 상호작용하는 동안, 일정 시간 동안 정보를 저장하는 데 사용된다. 세션 정보는 서버에 저장되며, 클라이언트는 세션 ID를 통해 서버에서 해당 세션에 접근할 수 있다.
주요 특징
- 저장 위치: 서버 측에 저장된다. 클라이언트에는 세션 ID만 저장된다.
- 수명: 세션은 일정 기간의 비활성화 이후 만료된다. 일반적으로 세션 만료 시간은 서버에서 설정할 수 있으며, 사용자가 로그아웃하거나 브라우저를 닫으면 세션이 종료될 수 있다.
- 보안: 세션 데이터는 서버에 저장되므로 쿠키보다 비교적 안전하다. 하지만 세션 ID가 탈취될 경우 보안 위협이 될 수 있다.
- 크기 제한: 세션 데이터 크기는 서버의 저장 용량에 따라 다르다.
- 주된 용도: 사용자의 로그인 상태, 사용자 환경 설정, 임시 데이터 저장 등에 사용된다.
사용자가 세션을 생성하고 이를 이용한 통신과정
- 사용자가 서버에 연결 요청을 보낸다.
- 서버는 이때 세션(Session)ID가 생성 및 저장된다.
- 그리고 이러한 세션 정보를 쿠키에 입력하여, 함께 연결 응답 정보를 전송한다.
- 사용자는 다음에 연결을 수행할 때 쿠키와 함께 데이터를 요청한다.
- 서버는 이때 쿠키를 확인하고, 쿠키에 입력된 세션정보를 통해 사용자가 누구인지 확인한 후 응답하게 된다.
Ex)
- 사용자가 로그인하면 서버는 해당 사용자에 대한 세션을 생성하고, 세션 ID를 클라이언트의 쿠키에 저장하여 사용자가 계속 로그인 상태를 유지할 수 있도록 한다.
- 쇼핑몰 웹사이트에서 사용자가 제품을 장바구니에 추가하면, 이 정보는 세션에 저장되어 사용자가 사이트를 탐색하는 동안 유지된다.
쿠키와 세션의 차이점
- 저장 위치: 쿠키는 클라이언트에, 세션은 서버에 저장된다..
- 보안: 쿠키는 클라이언트에 저장되므로 상대적으로 보안이 낮고, 세션은 서버에 저장되므로 더 안전하다.
- 수명: 쿠키는 영구적이거나 브라우저 세션 동안 유지되며, 세션은 일정 시간 동안 비활성 상태일 경우 만료된다.
- 데이터 저장 용량: 쿠키는 일반적으로 4KB로 제한되지만, 세션은 서버의 용량에 따라 저장할 수 있는 데이터의 양이 달라질 수 있다.
즉! 쿠키와 세션은 모두 웹 애플리케이션에서 사용자의 상태를 관리하는 데 필수적인 도구이다. 쿠키는 주로 클라이언트 측에서 사용자 관련 정보를 저장하고, 세션은 서버 측에서 사용자의 활동을 추적하는 데 사용된다.
'Web지식 > 네트워크' 카테고리의 다른 글
Http/1.0 ~http/3 (0) | 2024.08.24 |
---|---|
JWT(JSON Web Token) (0) | 2024.08.22 |
DispatcherServlet (0) | 2024.08.13 |
Ajax란? (0) | 2024.08.04 |