반응형

HTTP는 TCP 인데 Sessionless (stateless) 일까?
HTTP는 TCP 라고 배웠다.
근데 왜 TCP의 Sessionful이 아닌 Sessionless 일까?
TCP vs HTTP 는!
나중엔 Cookie에 대해서도 배워봐야지!
1️⃣ TCP 세션 vs HTTP 세션
| 구분 | TCP 세션 | HTTP 세션 |
| 계층 | 전송 계층(4계층) | 애플리케이션 계층(7계층) |
| 목적 | 송신·수신 간 연결 유지, 패킷 순서/무결성 보장 | 사용자 상태 유지(로그인, 장바구니 등) |
| 유지 주체 | OS의 TCP 스택 | 웹 서버(또는 DB/캐시) |
| 종료 시점 | TCP 연결 종료 시 | 세션 타임아웃 또는 수동 로그아웃 시 |
| 데이터 | 패킷 정보(순서, ACK, 재전송) | 로그인 ID, 권한, 환경설정 등 |
| 연결/상태 | 연결 지향(Connection-oriented) | Stateless (기본), 상태는 서버가 별도 구현 |

2️⃣ 로그인 시 실제 흐름 (예: 쿠키 기반 세션)
[클라이언트 브라우저] [웹 서버]
│ │
1. TCP 연결 (3-way handshake) │ ← 네트워크 계층 TCP 세션
│ │
2. HTTP POST /login + ID/PW ---------------->│
│ │ ← HTTP 요청(Stateless)
│ 인증 성공 후 세션 생성(서버 메모리/DB)
│<---------- Set-Cookie: session_id=abc123 (HTTP 응답)
│ │
3. HTTP GET /profile + Cookie: session_id=abc123 --->│
│ │ ← 서버가 session_id로 로그인 상태 확인
│<----------------------- HTML │
3️⃣ 핵심 정리
- TCP 세션
- 로그인 요청이든 이미지 요청이든 연결 상태를 유지하며 데이터 전송
- 하지만 로그인 여부는 TCP가 신경 쓰지 않음
- HTTP 세션
- 로그인 성공 시 서버가 session_id 같은 값을 발급
- 이후 요청에 그 값을 보내서 사용자 상태를 유지
- 상태 저장 방식: 쿠키, JWT, 세션스토어(Redis/DB) 등
4️⃣ 그래서 HTTP는 왜 Stateless?
- HTTP 자체는 각 요청을 독립적으로 처리 → "Stateless"
- 상태를 유지하려면 애플리케이션 레벨에서 별도로 상태 저장해야 함
- TCP 세션은 단지 데이터 전송 경로를 유지할 뿐, "사용자가 누군지"는 모름
📌 비유
- TCP 세션 = 택배 도로 (연결된 도로, 화물차가 잘 도착하도록 관리)
- HTTP 세션 = 화물차 안의 송장 (이 화물이 누구 것인지, 어디로 가야 하는지)
TCP vs HTTP 를 구조로 설명해볼까
📍 전체 구조 개요
┌─────────────── 네트워크 계층 ───────────────┐
│ TCP 세션 (Connection-oriented) │
│ - 패킷 순서 보장, 재전송, 무결성 확인 │
│ - 로그인 여부 관심 없음 │
└────────────────────────────────────────────┘
▲
│ (데이터 전송 파이프)
▼
┌─────────────── 애플리케이션 계층 ─────────────┐
│ HTTP 요청/응답 (Stateless) │
│ - 각 요청은 독립적 │
│ - 로그인 상태는 기본적으로 유지 안 함 │
└────────────────────────────────────────────┘
▲
│ (상태 유지 메커니즘 필요)
▼
┌─────────────── 상태 저장 계층 ───────────────┐
│ 세션 저장소 / 인증 시스템 │
│ - 쿠키(session_id) / JWT 토큰 │
│ - Redis, DB, 메모리 등 │
│ - 요청 시 이 저장소에서 사용자 상태 확인 │
└────────────────────────────────────────────┘
🔄 실제 로그인 요청 예시 (흐름)
1. TCP 세션 생성
클라이언트 ↔ 서버
TCP 3-way handshake로 연결
- TCP는 연결과 데이터 전송만 책임집니다.
2. HTTP 로그인 요청
POST /login HTTP/1.1
ID=alice&PW=1234
- HTTP는 이 요청이 로그인 시도인지 모름
- 서버 애플리케이션이 요청 파라미터를 보고 인증 처리
3. 세션 생성 및 쿠키 발급
HTTP/1.1 200 OK
Set-Cookie: session_id=abc123
- session_id=abc123는 세션 저장소에 저장된 로그인 상태를 가리킴
4. 로그인 이후 요청
GET /profile
Cookie: session_id=abc123
- 서버가 세션 저장소에서 abc123 상태를 확인하고 로그인된 사용자로 처리

✅ 핵심 요약
- TCP: 연결과 전송을 보장 (네트워크 파이프 역할)
- HTTP: 요청·응답은 독립적 (Stateless)
- 세션 저장소: HTTP를 Stateful처럼 만들어주는 장치
CSP Connect : Hosted Connection VS Dedicated Connection 에 대해서 궁금하다면 아래 글을 참조해보세요!
https://eundunn.tistory.com/156
[네트워크] CSP Connect : Hosted Connection VS Dedicated Connection
CSP Connect : Hosted Connection VS Dedicated Connection 1. AWS DX 란?2. Hosted Connection VS Dedicated Connection 예시를 들어 비교해보자! AWS Direct Connect의 Hosted Connection과 Dedicated Connection 차이를IT를 처음 배우는 사람에
eundunn.tistory.com
오늘도 뚠뚠IT!
반응형
'IT 툴툴' 카테고리의 다른 글
| [네트워크] HTTP 에서의 Cookie 가 없다면? (5) | 2025.08.14 |
|---|---|
| [네트워크] CSP Connect : Hosted Connection VS Dedicated Connection (4) | 2025.07.12 |
| [네트워크] IT인프라 - 미들웨어란(Middleware) (4) | 2025.07.11 |
| [네트워크] IT인프라 이야기 - 3-Tier vs 2-Tier (2) | 2025.07.10 |
| [네트워크] 라우팅 우선 순위 결정 기준 : AD vs Metric(Cost) (2) | 2025.07.06 |