HTTP(Hypertext Transfer Protocol)

HTTPλ₯Ό μ•Œμ•„λ³΄μž

1989λ…„ μ›Ήμ˜ μ°½μ‹œμž νŒ€λ²„λ„ˆμŠ€λ¦¬(Tim Berners Lee)κ°€ 처음 μ„€κ³„ν•œ HTTPλŠ” Hypertext Transfer Protocol의 μ•½μžλ‘œ μΈν„°λ„·μ—μ„œ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ 사이에 λ¬Έμ„œλ₯Ό μ „μ†‘ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” ν†΅μ‹ κ·œμ•½μ„ μ§€μΉ­ν•œλ‹€.

πŸ‘‰ HTTP의 νŠΉμ§•

TCP/IPλ₯Ό μ΄μš©ν•˜λŠ” μ‘μš© 계측 ν”„λ‘œν† μ½œ

TCP/IP의 socket을 μ΄μš©ν•΄ μ—°κ²°λœλ‹€. λ‹€λ₯Έ 운영체제의 컴퓨터 간에도 같은 TCP/IP ν”„λ‘œν† μ½œμ„ μ΄μš©ν•¨μœΌλ‘œμ¨, λ„€νŠΈμ›Œν¬ 톡신이 κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.

λΉ„μ—°κ²°μ„± ν”„λ‘œν† μ½œ (Connectionless)

ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­(Request)에 λŒ€ν•œ 응닡(Response)의 데이터λ₯Ό 전솑 ν›„ 연결을 μ’…λ£Œν•œλ‹€. λ•Œλ¬Έμ— μ „μ‚°μžμ›μ΄ 적게 μ†Œλͺ¨λ˜λŠ” μž₯점이 μžˆλ‹€.

λ¬΄μƒνƒœ (Stateless)

λΉ„μ—°κ²°μ„± νŠΉμ§• λ•Œλ¬Έμ— (응닡 데이터 전솑 ν›„ μ—°κ²° μ’…λ£Œ / 톡신이 λλ‚˜λ©΄ μƒνƒœμ •λ³΄λ₯Ό μœ μ§€ν•˜μ§€ μ•ŠμŒ) Cookie,Sessionλ“± 을 μ΄μš©ν•΄ ν•΄κ²°ν•˜κΈ°λ„ ν•œλ‹€.

πŸ‘‰ HTTP Method

HTTP λ©”μ†Œλ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ μ‚¬μ΄μ˜ μš”μ²­κ³Ό 응닡 데이터λ₯Ό μ „μ†‘ν•˜λŠ” 방식을 λ§ν•œλ‹€. 총 8가지가 μžˆμ§€λ§Œ 자주 μ“°μ΄λŠ” 4가지(GET, POST, PUT, DELETE)에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.

GET

μš”μ²­λ°›μ€ URI의 정보λ₯Ό κ²€μƒ‰ν•˜μ—¬ μ‘λ‹΅ν•œλ‹€.

POST

μš”μ²­λœ μžμ›μ„ μƒμ„±ν•œλ‹€. μƒˆλ‘œ μž‘μ„±λœ λ¦¬μ†ŒμŠ€μΈ 경우 HTTP 헀더 ν•­λͺ©μ„ ν¬ν•¨ν•˜μ—¬ μ‘λ‹΅ν•œλ‹€.

PUT

μš”μ²­λœ μžμ›μ„ μˆ˜μ •ν•œλ‹€. λ‚΄μš© 갱신을 μœ„μ£Όλ‘œ Location : URIλ₯Ό 보내지 μ•Šμ•„λ„ λœλ‹€.

DELETE

μš”μ²­λœ μžμ›μ„ μ‚­μ œν•  것을 μš”μ²­ν•œλ‹€. μ•ˆμ „μ„±μ˜ 문제둜 λŒ€λΆ€λΆ„μ˜ μ„œλ²„μ—μ„œ λΉ„ν™œμ„±ν™”ν•œλ‹€.

βš”οΈ HTTP 1.1 VS HTTP 2.0

HTTP 1.1의 μš”μ²­/응닡 방식은 1 μš”μ²­λ‹Ή 1 λ¦¬μ†ŒμŠ€μ΄μ—¬μ„œ μ•žμ— λ³΄λƒˆλ˜ μš”μ²­μ˜ 응닡을 λ°›μ•„μ•Όλ§Œ λ‹€μŒ μš”μ²­μ΄ 처리 될 수 μžˆμ—ˆλ‹€. HTTP 1.0이 λ‚˜μ˜¬ λ‹Ήμ‹œλ§Œ 해도 응닡 λ¦¬μ†ŒμŠ€μ˜ μš©λŸ‰μ΄ λ§Žμ§€ μ•Šμ•˜μ§€λ§Œ, ν˜„λŒ€μ˜ 웹에 λ“€μ–΄μ˜€κ²Œ λ˜λ©΄μ„œ ν•΄λ‹Ή 방식에 λŒ€ν•œ μ΄μŠˆκ°€ 생겨 HTTP 2.0이 νƒ„μƒν•˜κ²Œ λ˜μ—ˆλ‹€.

Β HTTP 1.1HTTP 2.0
μ²˜λ¦¬λ°©μ‹μ•žμ— λ‚ λ Έλ˜ μš”μ²­μ— λŒ€ν•œ 응닡을 λ°›μ•„μ•Ό λ‹€μŒμš”μ²­ 처리 κ°€λŠ₯Multiplexing 방식이 λ„μž…λ˜μ–΄ λ™μ‹œμ— μ—¬λŸ¬ λ¦¬μ†ŒμŠ€λ₯Ό λ°›μ•„μ˜¬ 수 있게 됨
λ°μ΄ν„°λ¬Έμžμ—΄λ‘œ 전솑 λ˜μ—ˆμŒλ°”μ΄λ„ˆλ¦¬λ‘œ μΈμ½”λ”©ν•˜μ—¬ μ••μΆ•ν•΄μ„œ 전솑함
Server PushHTML을 νŒŒμ‹±ν•˜κ³  ν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ₯Ό μ°Ύμ•„ μš”μ²­ν•¨ν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ₯Ό μ°ΎλŠ” κ³Όμ • 없이 , λΈŒλΌμš°μ €μ—μ„œ ν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ“€μ„ μ„œλ²„κ°€ μ°Ύμ•„μ„œ 보냄

Thanks to

μ°Έκ³  : λΌλ΄‰μ΄μ˜ 개발 λΈ”λ‘œκ·Έ - HTTP ν”„λ‘œν† μ½œ

μ°Έκ³  : μ½”λ”©ν•˜λŠ” 토끼 - HTTPλž€?

μ°Έκ³  : helloworld-88 - [κΈ°λ³Έ]HTTPλž€?


Β© 2019. All rights reserved.