DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Cover image for [ Network ] - Cookie & Session
Minho Lee
Minho Lee

Posted on

[ Network ] - Cookie & Session

사싀 κ°œλ°œμ„ ν•˜λ‹€ 보면 μ €μ ˆλ‘œ μ•Œκ²Œ λ˜λŠ” νŒŒνŠΈμΈλ“―ν•˜λ‹€.

ν•˜μ§€λ§Œ λ‘λ£¨λ­‰μ‹€ν•˜κ²Œ μ•Œκ³  μ§€λ‚˜κ°€λŠ” κ²½μš°κ°€ 많고,
μ΅œκ·Όμ—λŠ” 기술 면접도 λŒ€λΉ„λ₯Ό ν•΄μ•Ό ν•΄μ„œ μ΄λ ‡κ²Œ κΈ€λ‘œ 남겨보렀고 ν•œλ‹€.

λ¨Όμ € 쿠킀와 μ„Έμ…˜μ— λŒ€ν•΄ μ•ŒκΈ° 전에, HTTP ν”„λ‘œν† μ½œμ— νŠΉμ§•μ„ μ•Œμ•„μ•Ό ν•œλ‹€.
κ·Έλž˜μ•Ό μ™œ 쿠킀와 μ„Έμ…˜μ„ μ‚¬μš©ν•˜λŠ”μ§€ μ•Œ 수 있기 λ•Œλ¬Έμ΄λ‹€.


HTTP ν”„λ‘œν† μ½œμ˜ νŠΉμ§•

1. Connectionless(비연결지ν–₯)

  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­μ„ ν•œ ν›„, 응닡을 λ°›μœΌλ©΄ κ·Έ 연결을 λŠμ–΄λ²„λ¦¬λŠ” νŠΉμ§•. HTTP ν”„λ‘œν† μ½œμ€ Clientκ°€ μš”μ²­μ„ 보내고, μ„œλ²„μ—μ„œ 응닡을 보낸 ν›„ 접속을 λŠμ–΄λ²„λ¦°λ‹€.

2. Stateless(μƒνƒœμ •λ³΄ μœ μ§€ μ•ˆν•¨)

  • 톡신이 λλ‚˜λ©΄ μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠλŠ” νŠΉμ§•μ΄λ‹€. 연결을 λŠλŠ” μˆœκ°„ Client와 μ„œλ²„μ˜ 톡신이 λλ‚˜κ³ , μƒνƒœ μ •λ³΄λŠ” μœ μ§€ν•˜μ§€ μ•ŠλŠ” νŠΉμ§•μ΄ μžˆλ‹€.

μœ„ 두 가지 곡톡적인 νŠΉμ§•μœΌλ‘œ 보아 HTTP ν”„λ‘œν† μ½œμ€ ν•œ 번의 μš”μ²­μ΄ λλ‚˜λ©΄ 접속을 끊으며 μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠλŠ”λ‹€.

즉, ν•œ 번의 μš”μ²­μ΄ λ°œμƒν•œ ν›„ λ‹€μ‹œ 백지가 λœλ‹€κ³  μƒκ°ν•˜λ©΄ νŽΈν•  것 κ°™λ‹€.
μ΄λŸ¬ν•œ 이유 λ•Œλ¬Έμ—, μš°λ¦¬λŠ” 쿠킀와 μ„Έμ…˜μ„ μ‚¬μš©ν•œλ‹€.


πŸͺ Cookie

1️⃣ μΏ ν‚€λž€?

  1. μΏ ν‚€λž€, ν΄λΌμ΄μ–ΈνŠΈ(λΈŒλΌμš°μ €) λ‘œμ»¬μ— μ €μž₯λ˜λŠ” μž‘μ€ 데이터 νŒŒμΌμ΄λ‹€.
  2. μΏ ν‚€μ˜ 만료일이 μ—†λ‹€λ©΄, λΈŒλΌμš°μ €μ˜ 탭을 λ‹«κ±°λ‚˜ μ’…λ£Œν•΄λ„ μΏ ν‚€λŠ” 사라지지 μ•ŠλŠ”λ‹€.
  3. μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœ 정보λ₯Ό λ‘œμ»¬μ— μ €μž₯ν–ˆλ‹€κ°€ μ°Έμ‘°ν•œλ‹€.
  4. ν•˜λ‚˜μ˜ ν΄λΌμ΄μ–ΈνŠΈλ‹Ή 300개의 μΏ ν‚€ μ €μž₯이 κ°€λŠ₯ν•˜λ‹€. 각 도메인당 20개의 μΏ ν‚€λ₯Ό κ°€μ§ˆ 수 있고, μΏ ν‚€ ν•˜λ‚˜μ˜ ν¬κΈ°λŠ” 4KB이닀.

2️⃣ μΏ ν‚€μ˜ ꡬ성 μš”μ†Œ

  • 이름 : 각각의 μΏ ν‚€λ₯Ό κ΅¬λ³„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” 이름
  • κ°’ : μΏ ν‚€μ—μ„œ 가지고 μžˆμ–΄μ•Ό ν•  κ°’
  • μœ νš¨μ‹œκ°„ : 말 κ·ΈλŒ€λ‘œ μΏ ν‚€μ˜ μœ νš¨μ‹œκ°„
  • 도메인 : μΏ ν‚€λ₯Ό 전솑할 도메인
  • 경둜 : μΏ ν‚€λ₯Ό 전솑할 μš”μ²­ 경둜

3️⃣ μΏ ν‚€λŠ” μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”κ°€?

  1. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ μš”μ²­
  2. μ„œλ²„μ—μ„œ μΏ ν‚€ 생성
  3. μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 응닡을 ν•  λ•Œ, HTTP 헀더에 μƒμ„±ν•œ μΏ ν‚€λ₯Ό λ‹΄μ•„ 응닡
  4. μ„œλ²„μ—κ²Œμ„œ 받은 μΏ ν‚€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈ(둜컬)에 μ €μž₯
  5. ν•΄λ‹Ή μ„œλ²„μ—κ²Œ λ‹€λ₯Έ μš”μ²­μ„ 보낼 λ•Œ, μΏ ν‚€κ°€ μ‚¬μš©μžμ˜ λ‘œμ»¬μ— μ‘΄μž¬ν•œλ‹€λ©΄, ν•΄λ‹Ή μΏ ν‚€λ₯Ό 헀더에 λ‹΄μ•„ μš”μ²­

4️⃣ μΏ ν‚€μ˜ μ‚¬μš© μ˜ˆμ‹œ

  1. μ‚¬μ΄νŠΈμ— λ°©λ¬Έ μ‹œ, 아이디 및 λΉ„λ°€λ²ˆν˜Έ μžλ™ μž…λ ₯
  2. νŒμ—…μ°½μ˜ "였늘 이 창을 λ‹€μ‹œ 보지 μ•ŠκΈ°" 체크

πŸ’Ύ Session

1️⃣ μ„Έμ…˜μ΄λž€?

일정 μ‹œκ°„λ™μ•ˆ λ™μΌν•œ μ‚¬μš©μžλ‘œ λΆ€ν„° λ“€μ–΄μ˜€λŠ” μš”μ²­μ„ ν•˜λ‚˜μ˜ μƒνƒœλ‘œ 보고, κ·Έ μƒνƒœλ₯Ό 일정 μ‹œκ°„λ™μ•ˆ μœ μ§€μ‹œμΌœμ£ΌλŠ” κΈ°μˆ μ΄λ‹€.

μ—¬κΈ°μ„œμ˜ 일정 μ‹œκ°„μ΄λž€, μ‚¬μš©μžκ°€ λΈŒλΌμš°μ €λ₯Ό ν†΅ν•΄μ„œ μ„œλ²„μ— μ ‘μ†ν•œ μ‹œμ λΆ€ν„°, λΈŒλΌμš°μ €λ₯Ό μ’…λ£Œν•˜μ—¬ 연결을 λλ‚΄λŠ” μ‹œμ μ„ λ§ν•œλ‹€.

λ‹€μ‹œ 말해, μ‚¬μš©μžκ°€ μ„œλ²„μ— μ ‘μ†ν•œ μƒνƒœλ₯Ό ν•˜λ‚˜μ˜ μƒνƒœ λ‹¨μœ„λ‘œ 보고, 그것을 μ„Έμ…˜μ΄λΌκ³  ν•œλ‹€.

2️⃣ μ„Έμ…˜μ˜ νŠΉμ§•

  1. μ›Ή μ„œλ²„μ— μ›Ή μ»¨ν…Œμ΄λ„ˆμ˜ μƒνƒœλ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•œ 정보λ₯Ό μ €μž₯ν•œλ‹€.
  2. ν΄λΌμ΄μ–ΈνŠΈ(둜컬)κ°€ μ•„λ‹Œ μ›Ή μ„œλ²„μ— μ €μž₯λ˜λŠ” μΏ ν‚€
  3. μ„Έμ…˜μ„ λΈŒλΌμš°μ €λ₯Ό μ’…λ£Œν–ˆκ±°λ‚˜ μ›Ή μ„œλ²„μ—μ„œ μ„Έμ…˜μ„ μ‚­μ œν–ˆμ„ λ•Œλ§Œ μ‚­μ œκ°€ λœλ‹€. 쿠킀보닀 λ³΄μ•ˆμ— μ’‹λ‹€.
  4. μΏ ν‚€λŠ” 총 300개, 도메인당 20개λ₯Ό μ €μž₯ν•  수 μžˆμ—ˆλŠ”λ°, μ„Έμ…˜μ€ μ›Ή μ„œλ²„μ—μ„œ ν—ˆμš©ν•˜λŠ” ν•œ μ œν•œ 없이 μ €μž₯이 κ°€λŠ₯ν•˜λ‹€.
  5. 각 ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ κ³ μœ ν•œ Session IDλ₯Ό λΆ€μ—¬ν•œλ‹€. 이 Session ID둜 각 ν΄λΌμ΄μ–ΈνŠΈλ₯Ό κ΅¬λΆ„ν•˜λŠ” 것이닀.

3️⃣ μ„Έμ…˜μ˜ λ™μž‘ μˆœμ„œ

  1. ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 접속 μ‹œ Session IDλ₯Ό λ°œκΈ‰ λ°›λŠ”λ‹€.
  2. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„λ‘œλΆ€ν„° λ°œκΈ‰λ°›μ€ Session ID에 λŒ€ν•΄ μΏ ν‚€λ₯Ό μ΄μš©ν•˜μ—¬ μ €μž₯ν•œλ‹€. 이 λ•Œ, μ„œλ²„λ„ ν•΄λ‹Ή Session IDλ₯Ό μ„œλ²„μ—μ„œ μΏ ν‚€λ₯Ό μ΄μš©ν•΄ κ°–κ³  μžˆλŠ”λ‹€. κ·Έλž˜μ„œ μ„œλ²„μ—μ„œ μ €μž₯ν•˜λŠ” 쿠킀라고 ν•˜λŠ” 것이닀.
  3. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— μš”μ²­μ„ 보낼 λ•Œ, 가지고 있던 μΏ ν‚€μ˜ Session IDλ₯Ό 같이 보낸닀.
  4. μ„œλ²„λŠ” Session IDλ₯Ό λ°›μ•„μ„œ ν΄λΌμ΄μ–ΈνŠΈ 정보λ₯Ό 가져와 μ‚¬μš©ν•œλ‹€.

4️⃣ μ„Έμ…˜μ˜ μ‚¬μš© μ˜ˆμ‹œ

  • 둜그인 같이 λ³΄μ•ˆμƒ μ€‘μš”ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©

쿠킀와 μ„Έμ…˜μ˜ 차이

쿠킀와 μ„Έμ…˜μ˜ 차이점 μ€‘μ—μ„œ 제일 μ€‘μš”ν•œ λͺ‡κ°€μ§€λ§Œ λ‚˜λˆ λ³΄λ €κ³  ν•œλ‹€.

1️⃣ μ €μž₯ μœ„μΉ˜

μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ λ‘œμ»¬μ— μ €μž₯되고, μ„Έμ…˜μ€ μ„œλ²„μ— μ €μž₯이 λœλ‹€.

이 말은 λ‹€μ‹œ 말해, μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•˜κ²Œ 되고, μ„Έμ…˜μ€ μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•˜κ²Œ λœλ‹€.

이따 λ’€μ—μ„œλ„ μ„€λͺ…을 ν•˜κ² μ§€λ§Œ, μ„Έμ…˜μ€ μ„œλ²„μΈ‘μ—μ„œ 관리λ₯Ό ν•˜κΈ°μ— λ³΄μ•ˆμ— μ’‹λ‹€.

κ·Έλ ‡λ‹€λ©΄ μ„Έμ…˜λ§Œ μ‚¬μš©ν•˜λ©΄ 될텐데 μ™œ μΏ ν‚€λ₯Ό μ‚¬μš©ν• κΉŒ?

μœ„μ—λ„ μ–ΈκΈ‰ν–ˆλ“―, μ„Έμ…˜μ€ μ„œλ²„μ˜ μžμ›μ„ μ‚¬μš©ν•œλ‹€. λ”°λΌμ„œ λ§Žμ€ ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­μ„ ν•˜μ—¬ λ¬΄λΆ„λ³„ν•˜κ²Œ μ„Έμ…˜μ„ λ§Œλ“€λ‹€λ³΄λ©΄ μ„œλ²„μ˜ λ©”λͺ¨λ¦¬κ°€ 감당이 μ•ˆλ˜μ–΄ μ„œλ²„μ˜ 속도가 느렀질 μˆ˜λ„ 있고, 잘λͺ»ν•˜λ©΄ λ‹€μš΄μ΄ 될 μˆ˜λ„ μžˆλ‹€.

μ΄λŸ¬ν•œ μ°¨μ›μ—μ„œ μΏ ν‚€κ°€ μ‘΄μž¬ν•˜λ©° ν•„μš”ν•œ μ΄μœ μ΄λ‹€.

2️⃣ 속도

μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λ°”λ‘œ μ„œλ²„μ—κ²Œ 보낸닀.
ν•˜μ§€λ§Œ μ„Έμ…˜μ˜ 방식은, μ„œλ²„κ°€ Session IDλ₯Ό λ°›μœΌλ©΄ μ„œλ²„ λ‚΄μ—μ„œ μ €μž₯ν•΄λ’€λ˜ μΏ ν‚€λ₯Ό μ΄μš©ν•΄ μ²˜λ¦¬κ°€ ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— 속도적인 μΈ‘λ©΄μ—μ„œλŠ” μΏ ν‚€λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 λΉ λ₯΄λ‹€.

μ–Όλ§ˆλ‚˜ 속도 차이가 λ‚˜λŠ”μ§€λŠ” 아직 곡뢀가 더 ν•„μš”ν•˜λ‹€.

3️⃣ λ³΄μ•ˆ

μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ 보관을 ν•˜μ§€λ§Œ, μ„Έμ…˜μ€ μ„œλ²„κ°€ 관리λ₯Ό ν•˜κΈ°μ—,
λ³΄μ•ˆμ μΈ μΈ‘λ©΄μœΌλ‘œλŠ” μ„Έμ…˜μ΄ 더 μš°μˆ˜ν•˜λ‹€.

Top comments (0)

Head to your account's Settings to...

🌚 Enable dark mode
πŸ”  Change your default font
πŸ“š Adjust your experience level to see more relevant content