Home > 2024 > Network > 🌐[Network] HTTP 톡신.

🌐[Network] HTTP 톡신.
Network HTTP

🌐[Network] HTTP ν†΅μ‹ μ΄λž€?

HTTP(HyperText Transfer Protocol) 톡신은 μ›”λ“œ μ™€μ΄λ“œ μ›Ή(World Wide Web)μ—μ„œ 데이터λ₯Ό μ£Όκ³ λ°›λŠ” 데 μ‚¬μš©λ˜λŠ” μ£Όμš” ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

이 ν”„λ‘œν† μ½œμ€ μ›Ή μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ(λŒ€κ²Œ μ›Ή λΈŒλΌμš°μ €)κ°„μ˜ 톡신을 μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

🌐 HTTP ν†΅μ‹ μ˜ μ£Όμš” νŠΉμ§•.

1. ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ λͺ¨λΈ : HTTPλŠ” ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ λͺ¨λΈμ„ λ”°λ¦…λ‹ˆλ‹€.

ν΄λΌμ΄μ–ΈνŠΈ(예: μ›Ή λΈŒλΌμš°μ €)λŠ” μ„œλ²„μ— μš”μ²­(Request)을 보내고, μ„œλ²„λŠ” 이에 λŒ€ν•œ 응닡(Response)을 λ°˜ν™˜ν•©λ‹ˆλ‹€.


2. λ¬΄μƒνƒœμ„±(Stateless) : HTTPλŠ” λ¬΄μƒνƒœ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

즉, 각 μš”μ²­μ€ 독립적이며, μ„œλ²„λŠ” 이전 μš”μ²­μ— λŒ€ν•œ 정보λ₯Ό μ €μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ΄λŠ” 톡신을 λ‹¨μˆœν™”ν•˜μ§€λ§Œ, μ„Έμ…˜ 관리λ₯Ό μœ„ν•΄ 쿠기와 같은 λ©”μ»€λ‹ˆμ¦˜μ„ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€


3. HTTP λ©”μ†Œλ“œ : HTTPλŠ” λ‹€μ–‘ν•œ λ©”μ†Œλ“œ(GET, POST, PUT, DELETE λ“±)λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¦¬μ†Œλ“œ(μ›Ή νŽ˜μ΄μ§€, 이미지, 파일 λ“±)에 λŒ€ν•œ λ‹€μ–‘ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


4. ν™•μž₯ κ°€λŠ₯ : HTTP 헀더λ₯Ό 톡해 ν”„λ‘œν† μ½œμ„ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이λ₯Ό 톡해 메타데이터, 캐싱 μ •μ±…, 인증 정보 등을 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.


🌐 HTTP μž‘λ™ 원리.

1. μš”μ²­ μ‹œμž‘ : μ‚¬μš©μžκ°€ μ›Ή λΈŒλΌμš°μ €μ—μ„œ URL을 μž…λ ₯ν•˜κ±°λ‚˜ 링크λ₯Ό ν΄λ¦­ν•˜λ©΄ HTTP μš”μ²­μ΄ μ‹œμž‘λ©λ‹ˆλ‹€.


2. μ„œλ²„λ‘œμ˜ μš”μ²­ 전솑 : μ›Ή λΈŒλΌμš°μ €λŠ” ν•΄λ‹Ή μ„œλ²„μ˜ μ£Όμ†Œλ₯Ό μ°Ύκ³ (도메인 이름 μ‹œμŠ€ν…œμ„ 톡해 IP μ£Όμ†Œλ₯Ό 확인)ν•΄λ‹Ή μ„œλ²„μ— μ—°κ²°ν•˜μ—¬ HTTP μš”μ²­μ„ μ „μ†‘ν•©λ‹ˆλ‹€.


3. μ„œλ²„ 처리 및 응닡 : μ›Ή μ„œλ²„λŠ” μš”μ²­μ„ λ°›κ³  μ²˜λ¦¬ν•œ λ’€, μš”μ²­λœ λ¦¬μ†ŒμŠ€(HTML νŽ˜μ΄μ§€, 이미지, 파일 λ“±) λ˜λŠ” 였λ₯˜ λ©”μ‹œμ§€, λ¦¬λ””λ ‰μ…˜ 정보 등을 ν¬ν•¨ν•˜λŠ” HTTP 응닡을 λ³΄λƒ…λ‹ˆλ‹€.


4. μ½˜ν…μΈ  λ Œλ”λ§ : ν΄λΌμ΄μ–ΈνŠΈ(μ›Ή λΈŒλΌμš°μ €)λŠ” 응닡을 λ°›κ³ , κ·Έ λ‚΄μš©μ„ ν•΄μ„ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ ν‘œμ‹œν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, HTML λ¬Έμ„œκ°€ λ°˜ν™˜λ˜λ©΄ λΈŒλΌμš°μ €λŠ” 이λ₯Ό νŒŒμ‹±ν•˜μ—¬ 화면에 μ›Ή νŽ˜μ΄μ§€λ‘œ λ Œλ”λ§ν•©λ‹ˆλ‹€.


5. μ—°κ²° μ’…λ£Œ : 톡신이 μ™„λ£Œλ˜λ©΄ TCP 연결이 μ’…λ£Œλ©λ‹ˆλ‹€.

HTTP/1.1μ—μ„œλŠ” 지속 μ—°κ²°(keep-alive)을 톡해 μ—¬λŸ¬ μš”μ²­κ³Ό 응닡을 같은 μ—°κ²°λ‘œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


🌐 HTTP 버전.

HTTP/1.x : κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” λ²„μ „μœΌλ‘œ, 각 μš”μ²­/μ‘λ‹΅λ§ˆλ‹€ λ³„λ„μ˜ 연결을 λ§ΊμŠ΅λ‹ˆλ‹€(HTTP/1.0) λ˜λŠ” 지속 연결을 μ‚¬μš©ν•©λ‹ˆλ‹€(HTTP/1.1)


HTTP/2 : μ„±λŠ₯ ν–₯상을 μœ„ν•΄ λ„μž…λœ λ²„μ „μœΌλ‘œ, μ—¬λŸ¬ μš”μ²­μ„ λ™μ‹œμ— ν•˜λ‚˜μ˜ μ—°κ²°λ‘œ μ²˜λ¦¬ν•  수 μžˆλŠ” λ©€ν‹°ν”Œλ ‰μ‹±, 헀더 μ••μΆ• λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.


HTTP/3 : μ΅œμ‹  λ²„μ „μœΌλ‘œ, UDP 기반의 QUIC ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜μ—¬ μ—°κ²°μ˜ μ„€μ • μ‹œκ°„μ„ λ‹¨μΆ•ν•˜κ³ , νŒ¨ν‚· 손싀에 더 κ°•ν•œ μ„±λŠ₯을 λ³΄μž…λ‹ˆλ‹€


HTTP 톡신은 μ›Ήμ˜ 기본적인 λ™μž‘ 방식을 μ •μ˜ν•˜λ©°, ν˜„λŒ€ μΈν„°λ„·μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ ν”„λ‘œν† μ½œ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.