2 λΆ„ μ†Œμš”

πŸ“˜ HTTP에 λŒ€ν•΄μ„œβ€¦

www(World Wide Web) μƒμ—μ„œ μš°λ¦¬κ°€ 데이터λ₯Ό 주고받을 수 있게 ν•΄μ£ΌλŠ” λŒ€ν‘œμ μΈ ν”„λ‘œν† μ½œμ΄ HTTP이닀.


1. HTTPλž€

HTTPλž€ HyperText Transfer Protcol의 μ•½μžλ‘œ, W3μƒμ—μ„œ 정보λ₯Ό 주고받을 수 μžˆλŠ” ν”„λ‘œν† μ½œλ‘œ, μΌμ’…μ˜ μ „μ†‘κ·œμ•½μ΄λ‹€.
htmlλ¬Έμ„œμ™€ 같은 λ¦¬μ†ŒμŠ€λ“€μ„ μ£Όκ³ λ°›λŠ” 데에 μ‚¬μš©λœλ‹€.
주둜 TCPλ₯Ό μ‚¬μš©ν•˜λŠ”λ°, HTTP/3λΆ€ν„°λŠ” UDPλ₯Ό μ‚¬μš©ν•œλ‹€.


2. HTTP의 νŠΉμ§•

2-1. λΉ„μ—°κ²°μ„± (Connectionless)

λΉ„μ—°κ²°μ„±μ΄λž€, 처음 연결을 맺은 μš”μ²­κ³Ό ν•œ 번의 응닡 이후 연결이 μ’…λ£Œλ˜λŠ” νŠΉμ§•μ„ λ§ν•œλ‹€. κ·Έλž˜μ„œ μƒˆλ‘œμš΄ μš”μ²­μ΄ 올 λ•Œλ§ˆλ‹€ λ‹€μ‹œ 연결을 ν•΄μ•Όν•œλ‹€.

2-2. λ¬΄μƒνƒœμ„± (Stateless)

λ¬΄μƒνƒœμ„±μ΄λž€, ν”„λ‘œν† μ½œμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ(λΈŒλΌμš°μ €)의 μƒνƒœλ₯Ό κΈ°μ–΅ν•˜μ§€ μ•ŠλŠ” νŠΉμ§•μ„ λ§ν•œλ‹€.
ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό λ³΄κ΄€ν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œλŠ” μΏ ν‚€, μ„Έμ…˜ 등을 μ΄μš©ν•˜μ—¬ μƒνƒœλ₯Ό μœ μ§€ν•œλ‹€.


3. HTTP METHOD

3-1. CRUD

CRUDλž€, Create, Read. Update, Deleteλ‘œμ„œ, 기본적인 데이터 처리 κΈ°λŠ₯이닀. CRUDλŠ” 데이터λ₯Ό μ²˜λ¦¬ν•¨μ— μžˆμ–΄μ„œ, 큰 ν‹€μ˜ 기쀀이 λ˜λŠ” μš”μ²­μ΄λ‹€.

CRUD 의미
Create 생성
Read 호좜
Update κ°±μ‹ 
Delete μ‚­μ œ

3-2. GET/POST

데이터λ₯Ό μš”μ²­ν•  λ•Œ μ‚¬μš©ν•˜λŠ” λ©”μ†Œλ“œμ—λŠ” λŒ€ν‘œμ μœΌλ‘œ GET/POST 방식이 μžˆλ‹€.

CRUD 의미 λ©”μ†Œλ“œ
Create 생성 POST
Read 호좜 GET
Update κ°±μ‹  PUT
Delete μ‚­μ œ DELETE

3-3. GET/POST 차이점

νŠΉμ§• GET POST
μΊμ‹œ ⭕️ ❌
λΈŒλΌμš°μ € 기둝 ⭕️ ❌
븍마크 μΆ”κ°€ ⭕️ ❌
데이터 길이 μ œν•œ ⭕️ ❌
μ›…λ‹΅μ½”λ“œ 200 201
μš”μ²­ 상황 λ¦¬μ†ŒμŠ€ μš”μ²­ λ¦¬μ†ŒμŠ€ 생성
λ¦¬μ†ŒμŠ€ 전달 방식 쿼리슀트링 http body
idempotent ⭕️ ❌

4. HTTP μƒνƒœμ½”λ“œ

μƒνƒœμ½”λ“œλž€ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 데이터λ₯Ό μš”μ²­ν–ˆμ„ λ•Œ, μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ— μš”μ²­μ— λŒ€ν•œ μƒνƒœλ₯Ό μ•Œλ¦¬λŠ” μ½”λ“œλ‘œ 생각할 수 μžˆλ‹€.
μƒνƒœμ½”λ“œλŠ” 3자리 숫자둜 이루어져 있고, 1xx ~ 5xxκΉŒμ§€ μ œκ³΅λœλ‹€. 백의 μžλ¦¬κ°€ 4, 5인 κ²½μš°λŠ” 정상적인 μƒνƒœκ°€ μ•„λ‹ˆλ―€λ‘œ μ„œλ²„ ν˜Ήμ€ μš”μ²­μ— λŒ€ν•œ 확인이 ν•„μš”ν•˜λ‹€.

|μƒνƒœμ½”λ“œ|의미| |β€”β€”|β€”| |1xx(정보)|μš”μ²­μ„ λ°›μ•˜κ³ , 계속 진행함| |2xx(성곡)|μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ λ°›μŒ| |3xx(λ¦¬λ‹€μ΄λ ‰μ…˜)|μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ μΆ”κ°€ μž‘μ—… ν•„μš”| |4xx(ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜)|μš”μ²­μ˜ 문법 였λ₯˜ ν˜Ήμ€ μš”μ²­μ— λŒ€ν•œ 처리 λΆˆκ°€| |5xx(μ„œλ²„ 였λ₯˜)|μ„œλ²„κ°€ μš”μ²­μ— λŒ€ν•œ 처리 λΆˆκ°€|

4-1. 자주 λ“±μž₯ν•˜λŠ” μƒνƒœμ½”λ“œ

|μƒνƒœμ½”λ“œ|μ„€λͺ…| |β€”|β€”| |100|Continue| |200|OK| |301|μš”μ²­ν•œ μžμ›μ΄ μ΄λ™λ˜μ—ˆμŒ. 헀더 정보에 이동 μœ„μΉ˜λ₯Ό μ•Œλ €μ€„ν…Œλ‹ˆ λ‹€μ‹œ μš”μ²­ν•˜μ‹œμ˜€| |304|ν΄λΌμ΄μ–ΈνŠΈκ°€ μž„μ‹œ λ³΄κ΄€ν•œ 응닡 결과와 λ‹€λ₯΄μ§€ μ•ŠμŒ| |400|잘λͺ»λœ μš”μ²­(Bad Request)| |401|Unauthorized(인증된 μ‚¬μš©μžκ°€ μ•„λ‹˜)| |403|μ ‘κ·Ό κΆŒν•œ μ—†μŒ(Forbidden)| |404|μš”μ²­μ— λŒ€ν•œ μžμ› μ—†μŒ(Not Found)| |500|μ„œλ²„ λ‚΄λΆ€ 였λ₯˜(Interner Server Error)|


5. HTTPS

HTTPSλž€ (HyperText Trasnfer Protocol over Secure Socket Layer)둜, HTTP over TLSν˜Ήμ€ HTTP over SSL, HTTP Secure으둜 λΆˆλ¦°λ‹€.

  • SSL(λ˜λŠ” TLS)μΈμ¦μ„œλ₯Ό μ‚¬μš©ν•˜λŠ” http

https의 μ΄λ¦„μ—μ„œ μ•Œ 수 μžˆλ“―μ΄, κΈ°μ‘΄ http의 λ³΄μ•ˆ μΈ‘λ©΄μ—μ„œ κ°•ν™”λœ 버전이라고 생각할 수 μžˆλ‹€.
httpsλ₯Ό κ°œλ°œν•œ μ΄μœ λŠ” ν†΅μ‹ μ˜ 인증과 μ•”ν˜Έν™”μ΄λ‹€.

  • μ•”ν˜Έν™”λ‘œ 인해, 개인 데이터λ₯Ό ν›”μΉ˜κ±°λ‚˜ ν•΄ν‚Ή, 쑰회λ₯Ό ν•  수 없도둝 μž‘λ™ν•œλ‹€.

https인지 ν™•μΈν•˜λŠ” 법?: λΈŒλΌμš°μ € URLμ°½μ—μ„œ 도메인 이름 μ•žμ— μžλ¬Όμ‡  μ•„μ΄μ½˜μ΄ 있으면 https둜 λ™μž‘ν•œλ‹€λŠ” 뜻.

5-1. SSL

SSLμ΄λž€, (Secure Sockets Layer)둜, λ³΄μ•ˆ μ†ŒμΌ“ κ³„μΈ΅μΈμ¦μ„œ 이닀.
β€˜λ””μ§€ν„Έ μΈμ¦μ„œβ€™λ‘œλ„ 뢈리며, λΈŒλΌμš°μ €μ™€ μ„œλ²„ μ‚¬μ΄μ˜ 데이터λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ 인터넷 연결을 λ³΄ν˜Έν•˜κΈ° μœ„ν•œ ν‘œμ€€ κΈ°μˆ μ΄λ‹€.

5-2. TLS

TLSλž€, (Transport Layer Security)둜, 전솑 계측 λ³΄μ•ˆμΈμ¦μ„œμ΄λ‹€.
SSL보닀 μ•ˆμ „ν•œ μ—…κ·Έλ ˆμ΄λ“œ 버전이닀.


6. μš”μ²­ν—€λ”

ν—€λ”μ—λŠ” 총 3가지 μ’…λ₯˜κ°€ μžˆλŠ”λ°, μš”μ²­μ΄λ‚˜ 응닡 λͺ¨λ‘ μ μš©ν•  수 μžˆλŠ” 일반 헀더와 μš”μ²­ λ˜λŠ” 응닡 쀄 쀑 ν•˜λ‚˜μ—λ§Œ μ μš©ν•  수 μžˆλŠ” μš”μ²­ 헀더 λ˜λŠ” 응닡 헀더, λ³΄λ‚΄κ±°λ‚˜ λ°›λŠ” λ³Έλ¬Έ 데이터λ₯Ό μ„€λͺ…ν•˜λŠ” μ—”ν‹°ν‹° 헀더가 μžˆλ‹€.

HTTP 헀더듀
|헀더 μœ ν˜•|헀더 λͺ…| |β€”|β€”| |일반 헀더|Cache-Control, Connection, Date, Pragma …| |μš”μ²­ 헀더|Accept, Accept-Charset, Accept-Encoding, User-Agent …| |응닡 헀더|Accept-Ranges, Age, ETag, Location …| |λ³Έλ¬Έ 헀더|Allow, Content-Encoding, Content-Language …|

μœ„μ— ν‘œ 보닀 더 많음.. λ„ˆλ¬΄ λ§Žλ‹€...


이 쀑에 μš”μ²­ ν—€λ”μ˜ User-AgentλŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ 정보λ₯Ό μ„œλ²„μ—κ²Œ μ•Œλ €μ£ΌλŠ” ν—€λ”λ‘œ, λˆˆμ—¬κ²¨ λ³Ό ν•„μš”κ°€ μžˆλ‹€.
μ›Ή μ„œλ²„λŠ” 이 헀더λ₯Ό λΆ„μ„ν•˜μ—¬ μš”μ²­μžμ˜ OS와 λΈŒλΌμš°μ €λ₯Ό κ΅¬λΆ„ν•œλ‹€.
ν”„λ‘œκ·Έλž¨ λ‹€μš΄λ‘œλ“œ νŽ˜μ΄μ§€μ— λ“€μ–΄κ°€λ©΄ μœˆλ„μš°λ‚˜ λ§₯os 등에 λ§žλŠ” ν”„λ‘œκ·Έλž¨μ„ μ„€μΉ˜ν•˜λΌκ³  λ‚˜μ˜€λŠ” κ²½μš°κ°€ 이런 경우

νƒœκ·Έ: ,

μΉ΄ν…Œκ³ λ¦¬:

μ—…λ°μ΄νŠΈ:

λŒ“κΈ€λ‚¨κΈ°κΈ°