Kraken-Addicts / HTTP-The-Definitive-Guide

HTTP/Network Group Study
36 stars 4 forks source link

Q6) HTTP Request / Response (Interview Question in HTTP) #17

Open hidaehyunlee opened 4 years ago

hidaehyunlee commented 4 years ago

πŸ‘πŸ‘πŸ»πŸ‘πŸΌ HTTP μš”μ²­κ³Ό 응닡에 λŒ€ν•΄ μ„€λͺ…ν•΄μ£Όμ„Έμš”. πŸ‘πŸ½πŸ‘πŸΎπŸ‘πŸΏ

image

365kim commented 4 years ago

즉석 μš”μ²­μ€ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ 보내고 응닡은 μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ³΄λƒ…λ‹ˆλ‹€

보좩 HTTP 톡신은 기본적으둜 'μš”μ²­'κ³Ό '응닡'의 λ°˜λ³΅μž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈλŠ” 'GET' 'POST'와 같은 μš”μ²­λ©”μ„œλ“œμ™€ λ¦¬μ†ŒμŠ€μ˜ URL 등을 μš”μ²­λ©”μ„Έμ§€μ— λ‹΄μ•„ μ„œλ²„μ—κ²Œ μ „μ†‘ν•©λ‹ˆλ‹€. μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° 받은 μš”μ²­λ©”μ„Έμ§€λ₯Ό 읽고 그에 λ”°λ₯Έ 처리 ν›„, μž‘μ—…μ˜ κ²°κ³Ό 등을 응닡메세지에 λ‹΄μ•„ λ‹€μ‹œ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „μ†‘ν•©λ‹ˆλ‹€. μš”μ²­ν•œ μž‘μ—…μ˜ κ²°κ³ΌλŠ” μ‘λ‹΅λ©”μ„Έμ§€μ˜ μƒνƒœμ½”λ“œλ‘œ μ‰½κ²Œ 확인이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•œ μž‘μ—…μ΄ μ„±κ³΅μ μœΌλ‘œ μ΄λ£¨μ–΄μ‘ŒμœΌλ©΄ μ„œλ²„λŠ” μƒνƒœμ½”λ“œ 200을 μ „μ†‘ν•˜κ³ , ν΄λΌμ΄μ–ΈνŠΈμΈ‘ 였λ₯˜κ°€ μžˆλ‹€λ©΄ 400λ²ˆλŒ€ μƒνƒœμ½”λ“œλ₯Ό, μ„œλ²„μΈ‘ 였λ₯˜κ°€ μžˆλ‹€λ©΄ 500λ²ˆλŒ€ μƒνƒœμ½”λ“œλ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€.

terry-yes commented 4 years ago

즉석 HTTP ν”„λ‘œν† μ½œμ€ HTTP 메세지듀을 λ³΄λƒ„μœΌλ‘œμ¨ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. HTTP λ©”μ„Έμ§€μ—λŠ” HTTP μš”μ²­ 메세지와 HTTP 응닡메세지가 μžˆμŠ΅λ‹ˆλ‹€. μš”μ²­ λ©”μ„Έμ§€λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ 보내지며 응닡 λ©”μ„Έμ§€λŠ” μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ³΄λ‚΄μ§‘λ‹ˆλ‹€.

μš”μ²­ λ©”μ„Έμ§€λ‘œ ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— μžˆλŠ” λ¦¬μ†ŒμŠ€λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€. 그에 λŒ€ν•œ 응닡 λ©”μ„Έμ§€λ‘œ μ„œλ²„λŠ” λ‚΄λΆ€μ˜ λ¦¬μ†ŒμŠ€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ³΄λ‚΄μ€λ‹ˆλ‹€.

ku-kim commented 4 years ago

즉석 HTTPλŠ” μ‚¬μš©μž, ν΄λΌμ΄μ–ΈνŠΈ(λΈŒλΌμš°μ €)κ°€ 인터넷, μ›Ή μƒμ—μ„œ ν•„μš”ν•œ 데이터λ₯Ό(ν…μŠ€νŠΈ, 이미지, λΉ„λ””μ˜€ λ“±) μ–»κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν”„λ‘œν† μ½œ μž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈλŠ” 데이터λ₯Ό μ–»κΈ° μœ„ν•΄ μ›ν•˜λŠ” 데이터λ₯Ό 가진 μ„œλ²„μ—κ²Œ HTTP μš”μ²­ 메세지λ₯Ό 보내고, μ„œλ²„λŠ” 이에 μ•Œλ§žκ²Œ μ‘λ‹΅ν•΄μ£ΌλŠ” μ‹œμŠ€ν…œμž…λ‹ˆλ‹€. 말 κ·ΈλŒ€λ‘œ 응닡이 먼저일 수 μ—†μœΌλ©°, μš”μ²­μ΄ μžˆμ–΄μ•Ό κ·Έ 후에 응닡이 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄) λ§₯뢁 16인치λ₯Ό μ‚¬μš©ν•˜κ³ μžˆλŠ” kukim이 safari λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜μ—¬ 예발자 ν™ˆνŽ˜μ΄μ§€μ˜ "μ΅œμ‹  μ„œλ²„ μŠ€νƒμ˜ 뢄포도"의 λ¬Έμ„œλ₯Ό 보고 μ‹Άμ–΄ν•©λ‹ˆλ‹€. μ΄λ•Œ ν΄λΌμ΄μ–ΈνŠΈλŠ” 넓은 μ˜λ―Έλ‘œλŠ” kukim μ‚¬λžŒμ΄κ³  쒁은 μ˜λ―Έλ‘œλŠ” μš”μ²­μ„ λŒ€μ‹ ν•΄μ£ΌλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μΈ safari λΈŒλΌμš°μ € μž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈκ°€ 예발자 μ„œλ²„κ°€ 가지고 μžˆλŠ” "μ΅œμ‹  μ„œλ²„ μŠ€νƒμ˜ 뢄포도" λ¬Έμ„œ μ›ΉνŽ˜μ΄μ§€μ— HTTP μš”μ²­μ„ ν•˜κ³  예발자 μ„œλ²„λŠ” μš”μ²­ 메세지λ₯Ό μ²΄ν¬ν•˜κ³  이에 μ•Œλ§žκ²Œ μ‘λ‹΅ν•΄μ£ΌλŠ” 것 μž…λ‹ˆλ‹€.

SeongsangCHO commented 4 years ago

즉석 httpλŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„ 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•œ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ μš”μ²­μ„ 보내고 μ„œλ²„λŠ” 이에 λŒ€ν•œ 응닡을 ν•©λ‹ˆλ‹€.

예λ₯Όλ“€λ©΄, ν΄λΌμ΄μ–ΈνŠΈμΈ‘μ—μ„œ μ„œλ²„λ‘œ 데이터λ₯Ό 쑰회(get)ν•˜κ±°λ‚˜ 전솑할 λ•Œ(post) httpμš”μ²­μ„ λ³΄λƒ…λ‹ˆλ‹€.

μ„œλ²„λŠ” μžμ‹ μ΄ κ°–κ³ μžˆλ˜ λ¦¬μ†ŒμŠ€λ₯Ό 응닡(get에 λŒ€ν•œ)을 ν•˜κ±°λ‚˜ μš”μ²­(post)으둜 받은 데이터λ₯Ό 생성 λ˜λŠ” 변경을 ν•˜λ©° 이에 λŒ€ν•œ 성곡과 μ‹€νŒ¨ λ“±μ˜ μƒνƒœμ½”λ“œλ‘œ 응닡할 수 μžˆμŠ΅λ‹ˆλ‹€

보좩 HTTPμš”μ²­ ν΄λΌμ΄μ–ΈνŠΈμΈ‘μ—μ„œ URL을 μ΄μš©ν•΄ μ„œλ²„μ— 데이터 μš”μ²­ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Http μš”μ²­ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄ 데이터에 λŒ€ν•œ νŠΉμ • λ™μž‘μ„ μˆ˜ν–‰ν•  수 있음

HTTP응닡 μ„œλ²„μΈ‘μ—μ„œ μ„€μ •ν•΄μ£ΌλŠ” 응닡 ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλŠ” 이 μƒνƒœμ½”λ“œλ‘œ μ—λŸ¬μ²˜λ¦¬ν•  수 있음 200~ 500λ²ˆλŒ€κΉŒμ§€ 있음 200 : 성곡 300 : λ¦¬λ””λ ‰μ…˜ 400 : ν΄λΌμ΄μ–ΈνŠΈμ—λŸ¬ 500: μ„œλ²„μ—λŸ¬ λ“±μœΌλ‘œ μ„œλ²„μ˜ ν˜„μž¬ μƒνƒœλ₯Ό μƒνƒœμ½”λ“œλ‘œ 응닡받을 수 있음.

joey-ful commented 4 years ago

HTTP(Hyper Text Transfer Protocol)은 μ›Ήμ—μ„œ λΈŒλΌμš°μ €μ™€ μ„œλ²„ 간에 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•œ λ°©μ‹μœΌλ‘œ λΈŒλΌμš°μ €(ν΄λΌμ΄μ–ΈνŠΈ)λŠ” μ„œλ²„μ—κ²Œ μš”μ²­μ„, μ„œλ²„λŠ” 응닡을 ν•©λ‹ˆλ‹€.

μš”μ²­ (Request)

μš”μ²­μ€ μ‹œμž‘μ€„, 헀더, λΉˆμ€„, 본문으둜 이루어지며 본문은 λΉ„μ–΄μžˆμ„ 수 μžˆλ‹€.

응닡 (Response)

응닡도 μ‹œμž‘μ€„, 헀더, λΉˆμ€„, 본문으둜 μ΄λ£¨μ–΄μ Έμžˆλ‹€.

hidaehyunlee commented 4 years ago

HTTP μš”μ²­κ³Ό 응닡에 λŒ€ν•΄ μ„€λͺ…ν•΄μ£Όμ„Έμš”.

Image for post

HTTPλŠ” ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ ν”„λ‘œν† μ½œμ΄λ©°, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λŠ” κ°œλ³„μ μΈ λ©”μ‹œμ§€ κ΅ν™˜μ— μ˜ν•΄ ν†΅μ‹ ν•©λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈ(보톡 λΈŒλΌμš°μ €)에 μ˜ν•΄ μ „μ†‘λ˜λŠ” λ©”μ‹œμ§€λ₯Ό μš”μ²­(requests)이라고 λΆ€λ₯΄λ©°, 그에 λŒ€ν•΄ μ„œλ²„μ—μ„œ μ‘λ‹΅μœΌλ‘œ μ „μ†‘λ˜λŠ” λ©”μ‹œμ§€λ₯Ό 응닡(responses)이라고 λΆ€λ¦…λ‹ˆλ‹€.

μš”μ²­ λ©”μ‹œμ§€ ꡬ쑰

A basic HTTP request

μš”μ²­μ€ λ‹€μŒμ˜ μš”μ†Œλ“€λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

응닡 λ©”μ‹œμ§€ ꡬ쑰

img

yeosong1 commented 4 years ago

HTTPλŠ” 인터넷 μƒμ—μ„œ 데이터λ₯Ό μ£Όκ³  λ°›λŠ” ν”„λ‘œν† μ½œμœΌλ‘œ, 일련의 ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­ λ©”μ‹œμ§€ - μ„œλ²„μ˜ 응닡 λ©”μ‹œμ§€λ‘œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. μš”μ²­ 없이 응닡이 μ˜€λŠ” κ²½μš°λŠ” μ—†μŠ΅λ‹ˆλ‹€.

μš”μ²­ λ©”μ‹œμ§€, 응닡 λ©”μ‹œμ§€ λͺ¨λ‘ [μ‹œμž‘μ€„, 헀더, λ³Έλ¬Έ]의 ꡬ성을 λ”°λ₯΄λŠ”데, μš”μ²­ λ©”μ‹œμ§€μ˜ μ‹œμž‘μ€„μ€ [λ©”μ„œλ“œλͺ…/μš”μ²­URL/버전] 응닡 λ©”μ‹œμ§€μ˜ μ‹œμž‘μ€„μ€ [버전/μƒνƒœμ½”λ“œ/μ‚¬μœ κ΅¬μ ˆ]둜 문법이 쑰금 λ‹€λ¦…λ‹ˆλ‹€. μ—¬κΈ°μ„œ λ©”μ„œλ“œλŠ” 전에 μ„€λͺ… λ“œλ Έλ˜ GET POST 외에도 HEAD DELETE PUT λ“± λͺ©μ μ— 따라 λͺ‡κ°€μ§€ λ©”μ„œλ“œ μ’…λ₯˜κ°€ 더 μžˆμŠ΅λ‹ˆλ‹€. μƒνƒœμ½”λ“œμ™€ μ‚¬μœ κ΅¬μ ˆμ€ μš°λ¦¬κ°€ ν”νžˆ μ•„λŠ” 404 not found 처럼, 100λ²ˆλŒ€λŠ” 정보전달, 200λ²ˆλŒ€λŠ” 성곡, 300λ²ˆλŒ€λŠ” λ¦¬λ‹€μ΄λ ‰μ…˜, 400λ²ˆλŒ€λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ 잘λͺ»λœ μš”μ²­, 500λ²ˆλŒ€λŠ” μ„œλ²„ μ—λŸ¬μ— κ΄€ν•œ μƒνƒœλ₯Ό μ „λ‹¬ν•˜λŠ” μ½”λ“œμ΄κ³ , μ‚¬μœ  κ΅¬μ ˆμ€ 이에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ, ν”νžˆ μ“°λŠ” κ΅¬μ ˆλ“€μ€ μžˆμ§€λ§Œ μ—„κ²©ν•˜κ²Œ μ œν•œλœ 것은 μ•„λ‹™λ‹ˆλ‹€. 이λ₯Όν…Œλ©΄ β€˜404 그런 νŽ˜μ΄μ§€λŠ” μ—†μ–΄μš”.’ 라고 λ°”κΏ€ 수 μžˆλŠ” 것이죠.

κ·Έ λ‹€μŒ 헀더. ν—€λ”λŠ” 일반 헀더, μš”μ²­ 헀더, 응닡 헀더, μ—”ν„°ν‹° 헀더 등이 μžˆμŠ΅λ‹ˆλ‹€. ν—€λ”λŠ”

헀더이름: λ‚΄μš© 헀더이름: λ‚΄μš© 헀더이름: λ‚΄μš© 이런 μ‹μœΌλ‘œ 적고, 맨 λ§ˆμ§€λ§‰ 헀더 λ‹€μŒμ€„μ— CRLFλ₯Ό λ„£μ–΄μ„œ 헀더가 λλ‚˜κ³  본문이 μ‹œμž‘λ¨μ„ μ•Œλ¦½λ‹ˆλ‹€.

일반 ν—€λ”λŠ” μš”μ²­κ³Ό 응닡 두 μͺ½μ—μ„œ λ‹€ μ“Έ 수 μžˆλŠ” μ œλ„ˆλŸ΄ν•œ λ‚΄μš©λ“€ - λ‚ μ§œ, λ°μ΄ν„°μ˜ MIME 버전 λ“± - 을 μ•Œλ¦΄ 수 μžˆλŠ” 헀더듀이고,

μš”μ²­ ν—€λ”λŠ” ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ μžμ‹ μ˜ ν•˜λ“œμ›¨μ–΄ 및 μ†Œν”„νŠΈμ›¨μ–΄ 사양 및 Accept ν•  수 μžˆλŠ” λ°μ΄ν„°μ˜ μ’…λ₯˜λ“€μ„ 적어 λ³΄λ‚΄κ±°λ‚˜, μ‘°κ±΄λΆ€λ‘œ 데이터λ₯Ό μš”μ²­ ν•˜κ±°λ‚˜, λ³΄μ•ˆ 인증을 μ„œλ²„μ—κ²Œ μš”κ΅¬ν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν—€λ”λ“€μž…λ‹ˆλ‹€.

응닡 ν—€λ”λŠ” μ„œλ²„κ°€ λ³΄λ‚΄λŠ” λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 정보와 μœ νš¨κΈ°κ°„, 신선도, λ³΄μ•ˆ κ΄€λ ¨ 헀더 등이 μžˆμŠ΅λ‹ˆλ‹€.

μ—”ν„°ν‹° ν—€λ”λŠ” 본문의 길이와 νƒ€μž… λ“± 본문에 κ΄€ν•œ 정보λ₯Ό λ‹΄λŠ” ν—€λ”μž…λ‹ˆλ‹€. μΆ”ν›„ 이 헀더와 읽은 κ°’μ˜ 비ꡐλ₯Ό 톡해 데이터가 μ˜¨μ „ν•˜κ²Œ μ „μ†‘μ™„λ£Œ λ˜μ—ˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

그리고 λ³Έλ¬Έ. 본문은 λ°”μ΄λ„ˆλ¦¬λ‘œ μ „μ†‘λ˜λŠ” μ½˜ν…μΈ  λ°μ΄ν„°λ‘œ, λ°”μ΄λ„ˆλ¦¬λ‘œ ν‘œν˜„ν•  수 μžˆλŠ” λ°μ΄ν„°λŠ” 이둠상 무엇이든 μ–Όλ§ˆλ“  보낼 수 μžˆμŠ΅λ‹ˆλ‹€.