πŸ“— Reference

λͺ¨λ“  개발자λ₯Ό μœ„ν•œ HTTP μ›Ή κΈ°λ³Έ 지식

🟒 λͺ¨λ“  것이 HTTP

β€’ HTML, TEXT
β€’ IMAGE, μŒμ„±, μ˜μƒ, 파일
β€’ JSON, XML (API)
β€’ 거의 λͺ¨λ“  ν˜•νƒœμ˜ 데이터 전솑 κ°€λŠ₯
β€’ μ„œλ²„κ°„μ— 데이터λ₯Ό μ£Όκ³  받을 λ•Œλ„ λŒ€λΆ€λΆ„ HTTP μ‚¬μš©
β€’ μ§€κΈˆμ€ HTTP μ‹œλŒ€!

🟒 HTTP 역사

β€’ HTTP/0.9 1991λ…„: GET λ©”μ„œλ“œλ§Œ 지원, HTTP 헀더X
β€’ HTTP/1.0 1996λ…„: λ©”μ„œλ“œ, 헀더 μΆ”κ°€
β€’ HTTP/1.1 1997λ…„: κ°€μž₯ 많이 μ‚¬μš©, μš°λ¦¬μ—κ²Œ κ°€μž₯ μ€‘μš”ν•œ 버전
β€’ RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014)
β€’ HTTP/2 2015λ…„: μ„±λŠ₯ κ°œμ„ 
β€’ HTTP/3 진행쀑: TCP λŒ€μ‹ μ— UDP μ‚¬μš©, μ„±λŠ₯ κ°œμ„ 

🟒 기반 ν”„λ‘œν† μ½œ

β€’ TCP: HTTP/1.1, HTTP/2
β€’ UDP: HTTP/3
β€’ ν˜„μž¬ HTTP/1.1 주둜 μ‚¬μš©
β€’ HTTP/2, HTTP/3 도 점점 증가

<HTTP νŠΉμ§•>
β€’ ν΄λΌμ΄μ–ΈνŠΈ μ„œλ²„ ꡬ쑰
β€’ λ¬΄μƒνƒœ ν”„λ‘œν† μ½œ(μŠ€ν…Œμ΄μŠ€λ¦¬μŠ€), λΉ„μ—°κ²°μ„±
β€’ HTTP λ©”μ‹œμ§€
β€’ λ‹¨μˆœν•¨, ν™•μž₯ κ°€λŠ₯



🟒 ν΄λΌμ΄μ–ΈνŠΈ μ„œλ²„ ꡬ쑰


β€’ Request Response ꡬ쑰
β€’ ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— μš”μ²­μ„ 보내고, 응닡을 λŒ€κΈ°
β€’ μ„œλ²„κ°€ μš”μ²­μ— λŒ€ν•œ κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄μ„œ 응닡

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λ₯Ό κ°œλ…μ μœΌλ‘œ 뢄리
μ„œλ²„ : λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 데이터 집쀑
ν΄λΌμ΄μ–ΈνŠΈ : UI와 μ‚¬μš©μ„±μ— 집쀑
λ…λ¦½μ μœΌλ‘œ μ§„ν™”

🟒 λ¬΄μƒνƒœ ν”„λ‘œν† μ½œ(Stateless)

  • μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό λ³΄μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€
  • μž₯점 : μ„œλ²„ ν™•μž₯성이 λ†’μŒ(μŠ€μΌ€μΌ 아웃) / κ°‘μžκΈ° ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ΄ 증가해도 μ„œλ²„λ₯Ό λŒ€κ±° νˆ¬μž… κ°€λŠ₯
  • 단점 : ν΄λΌμ΄μ–ΈνŠΈκ°€ μΆ”κ°€ 데이터 전솑

Stateless 싀무 ν•œκ³„

  • λͺ¨λ“  것을 λ¬΄μƒνƒœλ‘œ 섀계 ν•  수 μžˆλŠ” κ²½μš°λ„ 있고 μ—†λŠ” κ²½μš°λ„ μžˆλ‹€.
  • λ¬΄μƒνƒœ
    ex) 둜그인이 ν•„μš” μ—†λŠ” λ‹¨μˆœν•œ μ„œλΉ„μŠ€ μ†Œκ°œ ν™”λ©΄
  • μƒνƒœ μœ μ§€
    ex) 둜그인
  • λ‘œκ·ΈμΈν•œ μ‚¬μš©μžμ˜ 경우 둜그인 ν–ˆλ‹€λŠ” μƒνƒœλ₯Ό μ„œλ²„μ— μœ μ§€
  • 일반적으둜 λΈŒλΌμš°μ € 쿠킀와 μ„œλ²„ μ„Έμ…˜λ“±μ„ μ‚¬μš©ν•΄μ„œ μƒνƒœ μœ μ§€
  • μƒνƒœ μœ μ§€λŠ” μ΅œμ†Œν•œλ§Œ μ‚¬μš©
  • λ¬΄μƒνƒœλŠ” μš”μ²­ 데이터λ₯Ό 훨씬 많이 λ‹€λ£¬λ‹€λŠ” 단점도 쑴재

ν•˜μ§€λ§Œ λ¬΄μƒνƒœμ˜ μž₯점이 훨씬 크기 λ•Œλ¬Έμ— μ΅œλŒ€ν•œ Stateless둜 섀계해야 함!!

🟒 λΉ„ μ—°κ²°μ„±(Connectionless)

  • 연결을 μœ μ§€ν•˜λŠ” λͺ¨λΈμ€ μƒˆλ‘œμš΄ ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ΄ 듀어와도 이전에 μ—°κ²°λ˜μ–΄ 있던 μ„œλ²„μ˜ 연결을 λŠμ§€μ•Šκ³  계속 μœ μ§€ν•œλ‹€. -> μ„œλ²„ μžμ› μ†Œλͺ¨
  • 연결을 μœ μ§€ν•˜μ§€ μ•ŠλŠ” λͺ¨λΈμ€ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— μ‘λ‹΅ν•˜κ³  TCP/IP 연결을 μ’…λ£Œν•œλ‹€. -> μ΅œμ†Œν•œμ˜ μžμ› μ‚¬μš©

λΉ„ μ—°κ²°μ„± νŠΉμ§•

  • HTTPλŠ” 기본이 연결을 μœ μ§€ν•˜μ§€ μ•ŠλŠ” λͺ¨λΈ
  • 일반적으둜 초 λ‹¨μœ„μ˜ μ΄ν•˜μ˜ λΉ λ₯Έ μ†λ„λ‘œ 응닡
  • 1μ‹œκ°„ λ™μ•ˆ 수천λͺ…이 μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•΄λ„ μ‹€μ œ μ„œλ²„μ—μ„œ λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” μš”μ²­μ€ μˆ˜μ‹­κ°œ μ΄ν•˜λ‘œ 맀우 μž‘μŒ
    예) μ›Ή λΈŒλΌμš°μ €μ—μ„œ 계속 μ—°μ†ν•΄μ„œ 검색 λ²„νŠΌμ„ λˆ„λ₯΄μ§€λŠ” μ•ŠλŠ”λ‹€.
  • μ„œλ²„ μžμ›μ„ 맀우 효율적으둜 μ‚¬μš©ν•  수 있음

λΉ„ μ—°κ²°μ„± ν•œκ³„μ™€ 극볡

  • TCP/IP 연결을 μƒˆλ‘œ λ§Ίμ–΄μ•Ό 함 - *3 way handshake μ‹œκ°„ μΆ”κ°€
  • μ›Ή λΈŒλΌμš°μ €λ‘œ μ‚¬μ΄νŠΈλ₯Ό μš”μ²­ν•˜λ©΄ HTML 뿐만 μ•„λ‹ˆλΌ μžλ°”μŠ€ν¬λ¦½νŠΈ, css, μΆ”κ°€ 이미지 λ“± 수 λ§Žμ€ μžμ›μ΄ ν•¨κ»˜ λ‹€μš΄λ‘œλ“œ
  • μ§€κΈˆμ€ HTTP 지속 μ—°κ²°(Persistent Connections)둜 문제 ν•΄κ²°
  • HTTP/2, HTTP/3μ—μ„œ 더 λ§Žμ€ μ΅œμ ν™”

    TCP 3-way Handshake λž€?
    TCP/IPν”„λ‘œν† μ½œμ„ μ΄μš©ν•΄μ„œ 톡신을 ν•˜λŠ” μ‘μš©ν”„λ‘œκ·Έλž¨μ΄ 데이터λ₯Ό μ „μ†‘ν•˜κΈ° 전에
    λ¨Όμ € μ •ν™•ν•œ 전솑을 보μž₯ν•˜κΈ° μœ„ν•΄ μƒλŒ€λ°© 컴퓨터와 사전에 μ„Έμ…˜μ„ μˆ˜λ¦½ν•˜λŠ” 과정을 μ˜λ―Έν•œλ‹€.

🟒 HTTP λ©”μ‹œμ§€

profile
벨린이

2개의 λŒ“κΈ€

comment-user-thumbnail
2023λ…„ 2μ›” 27일

κ°•μ˜λ₯Ό 보지 μ•Šμ•˜μ§€λ§Œ 덕뢄에 λ‹€ λ³Έ 것 같은 λŠλ‚Œμž…λ‹ˆλ‹€. (정리가 깔끔+_+) κ°μ‚¬ν•©λ‹ˆλ‹€~~

1개의 λ‹΅κΈ€
Powered by GraphCDN, the GraphQL CDN