개발 지식/HTTP 지식

🌐 1XX (Informational) μƒνƒœ μ½”λ“œ - 총정리 λͺ¨μŒ

인파_ 2023. 1. 2. 08:29

http-1xx

1XX Informational

1xx λ²ˆλŒ€μ˜ μƒνƒœ μ½”λ“œλ“€μ€ μš”μ²­μ΄ μˆ˜μ‹ λ˜μ–΄ 처리 μ€‘μ΄λΌλŠ” 의미λ₯Ό 가진닀.

λ‹€λ§Œ ν˜‘μ—…μ—μ„œλ„ 잘 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” μƒνƒœμ½”λ“œμ΄κΈ° λ•Œλ¬Έμ— 깊게 λ‹€λ€„μ§€λŠ” νŽΈμ€ μ•„λ‹ˆλ‹€.

1XX Informational

+ 103 Early Hints μΆ”κ°€


100 Continue

  • Continue β‡’ μ²˜λ¦¬κ°€ λ˜μ—ˆμœΌλ‹ˆ λ‹€μŒμœΌλ‘œ μ§„ν–‰ν•˜λΌλŠ” μ‘λ‹΅μ½”λ“œ
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 본문을 μ „μ†‘ν•˜κΈ° 전에, μ„œλ²„κ°€ 받아듀일 것인지 ν™•μΈν•˜λ €κ³  ν•  λ•Œ κ·Έ 확인 μž‘μ—…μ„ μ΅œμ ν™”ν•˜κΈ° μœ„ν•œ μ˜λ„λ‘œ λ„μž…λœ 것
  • 100 응닡을 λ°›κΈ°μœ„ν•΄μ„  ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ expect 헀더λ₯Ό λ„£μ–΄μ€˜μ•Ό 함

100 Continue

 

πŸ“ 100 μƒνƒœμ½”λ“œ 흐름 μ˜ˆμ‹œ

  1. ν΄λΌμ΄μ–ΈνŠΈ : μ„œλ²„μ—κ²Œ expect 헀더λ₯Ό 포함해 POST μš”μ²­μ„ 보냄
  2. μ„œλ²„ : 100 Continue λ₯Ό 응닡함 (만일 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€λ©΄ 417둜 응닡)
  3. μ„œλ²„ : POST μš”μ²­μ— λŒ€ν•œ 처리λ₯Ό ν•˜κ³  200 OKλ₯Ό 응담합

100 Continue


101 Switching Protocols

  • Switching Protocols β‡’ μ„œλ²„κ°€ ν”„λ‘œν† μ½œμ„ μ „ν™˜μ€‘
  • TCP 연결이 λ‹€λ₯Έ ν”„λ‘œν† μ½œμ— μ‚¬μš©λ  μ˜ˆμ •μž„μ„ λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ„œλ²„μ— μ‚¬μš©λ˜λŠ” μƒνƒœ μ½”λ“œ
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ upgrade 헀더에 μ§€μ •ν•œ ν”„λ‘œν† μ½œλ‘œ μš”μ²­μ„ ν•˜κ²Œλ˜λ©΄, μ„œλ²„κ°€ ν”„λ‘œν† μ½œ ꡐ체λ₯Ό μŠΉμΈν•˜κ²Œ λœλ‹€.
  • ν”„λ‘œν† μ½œ μ—…κ·Έλ ˆμ΄λ“œ λ‘œμ§μ€ HTTP/1.1 μ—μ„œλ§Œ μ§€μ›λœλ‹€. (HTTP/1.1 → HTTP/2 에 이용)

101 Switching Protocols

 

πŸ“ 101 μƒνƒœμ½”λ“œ νλ¦„ μ˜ˆμ‹œ

 

μ›Ήμ†ŒμΌ“ μ‚¬μš© μ€€λΉ„

1. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ›Ήμ†ŒμΌ“μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ Upgrade 헀더에 μ›Ήμ†ŒμΌ“μ„ μ§€μ •ν•œ ν›„ μ„œλ²„μ—κ²Œ μš”μ²­μ„ 보낸닀.

101 Switching Protocols

 

2. 만일 μ„œλ²„κ°€ μ›Ήμ†ŒμΌ“μ„ μ§€μ›ν•˜λŠ” 경우 101 응닡과 ν•¨κ»˜ μ›Ήμ†ŒμΌ“ ν”„λ‘œν† μ½œλ‘œ μ „ν™˜μ„ μ‹œμž‘ν•œλ‹€.

101 Switching Protocols

 

3. μ΄μ œ ν΄λΌμ΄μ–ΈνŠΈλŠ” μ†ŒμΌ“ 이벀트λ₯Ό μ΄μš©ν•˜μ—¬ 톡신할 수 있게 λœλ‹€.

101 Switching Protocols

 

HTTP/2 으둜 μ „ν™˜

1. ν΄λΌμ΄μ–ΈνŠΈλŠ” HTTP/2둜 ν†΅μ‹ ν•˜κΈ° μœ„ν•΄ ν˜„μž¬ HTTP/1.1둜 ν†΅μ‹ ν•˜κ³  μžˆλŠ” μ„œλ²„μ—κ²Œ ν”„λ‘œν† μ½œ μ—…κ·Έλ ˆμ΄λ“œ μš”μ²­μ„ ν•œλ‹€.

101 Switching Protocols

 

2. λ§ŒμΌ μ„œλ²„κ°€ HTTP/2λ₯Ό μ§€μ›ν•˜λŠ” 경우 101 응닡과 ν•¨κ»˜ HTTP/2 ν”„λ‘œν† μ½œλ‘œ μ „ν™˜μ„ μ‹œμž‘ν•œλ‹€.

101 Switching Protocols

 

3. μ΄μ œ ν΄λΌμ΄μ–ΈνŠΈλŠ” HTTP/2 둜 μ„œλ²„μ™€ ν†΅μ‹ ν•˜κ²Œ λœλ‹€.

101 Switching Protocols
101 Switching Protocols


102 Processing

  • Processing β‡’ μ„œλ²„κ°€ μš”μ²­μ„ μˆ˜μ‹ ν•˜μ˜€μœΌλ©° 이λ₯Ό μ²˜λ¦¬μ€‘μž„
  • 즉, μ„œλ²„μ—μ„œ μš”μ²­μ„ μ²˜λ¦¬μ€‘μ΄λΌ, 아직 μ œλŒ€λ‘œ 된 응닡을 μ•Œλ €μ€„ 수 μ—†μŒμ„ 의미

102 Processing


103 Early Hints

  • Early Hints β‡’ μ›ΉνŽ˜μ΄μ§€μ— ν•„μš”ν•œ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 힌트λ₯Ό μ œκ³΅ν•˜μ—¬ λ¦¬μ†ŒμŠ€λ₯Ό 사전 λ‘œλ“œν•˜κ²Œ ν•˜λŠ” μ΅œμ‹  μƒνƒœ μ½”λ“œ
  • μ„œλ²„ λ‹¨μ—μ„œ Link ν—€λ”λ₯Ό 메세지에 ν¬ν•¨ν•˜μ—¬ μ‘λ‹΅ν•¨μœΌλ‘œμ¨, λΈŒλΌμš°μ €μ—κ²Œ μ–΄λ–€ λ¦¬μ†ŒμŠ€λ₯Ό μš°μ„ μ μœΌλ‘œ λ‘œλ“œν•΄μ•Όν•  μ§€λ₯Ό μ•Œλ €μ€€λ‹€.
  • λ³΄μ•ˆμƒμ˜ 이유둜 HTTP/2 및 HTTP/3 μ—μ„œλ§Œ μž‘λ™ν•œλ‹€. (HTTP/1.1은 미지원)

103 Early Hints
103 Early Hintsλ₯Ό μ΄μš©ν•˜λ©΄ λΉ λ₯΄κ²Œ μ›Ήλ¬Έμ„œλ₯Ό λ‘œλ“œν•  수 있게 λœλ‹€.

 

πŸ“ 103 μƒνƒœμ½”λ“œ νλ¦„ μ˜ˆμ‹œ

일반적으둜 λΈŒλΌμš°μ €κ°€ μš”μ²­μ„ 보내면 μ„œλ²„λŠ” 이λ₯Ό μˆ˜μ‹ ν•˜μ—¬ 200 OK둜 μ›Ήλ¬Έμ„œλ₯Ό 보내고, ν΄λΌμ΄μ–ΈνŠΈλŠ” html을 λ°›κ³  μ›Ήλ¬Έμ„œμ— ν•„μš”ν•œ cssλ‚˜ js νŒŒμΌλ“€μ„ κ·Έ λ‹€μŒμœΌλ‘œ μš”μ²­ν•˜κ²Œ λœλ‹€.

103 Early Hints
총 220ms κ°€ κ±Έλ¦Ό

 

λ°˜λ©΄μ— 103 Early Hints λ₯Ό μ‚¬μš©ν•˜μ—¬ μš”μ²­μ„ ν•˜κ²Œ 되면, μ„œλ²„λŠ” μ›Ήλ¬Έμ„œλ₯Ό μ΅œμ’… 응닡에 μ•žμ„œ, μ›Ήλ¬Έμ„œμ— ν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ“€μ— λŒ€ν•œ 힌트λ₯Ό Link 헀더에 λ„£μ–΄ λΈŒλΌμš°μ €μ—κ²Œ 103 μ˜ˆλΉ„ 응닡을 λ³΄λ‚΄κ²Œ λœλ‹€. 그러면 λΈŒλΌμš°μ €λŠ” κΈ°λ³Έ λ¦¬μ†ŒμŠ€λ₯Ό κΈ°λ‹€λ¦¬λŠ” λ™μ•ˆ ν—€λ”μ˜ 힌트λ₯Ό μ΄μš©ν•˜μ—¬ μ›Ήλ¬Έμ„œμ— ν•„μš”ν•œ ν•˜μœ„ 리둜슀λ₯Ό 미리 μš”μ²­ν•˜μ—¬ 받을 수 있게 λœλ‹€. (즉, 20msκ°€ 절감된 것이닀)

103 Early Hints
총 200ms κ°€ κ±Έλ¦Ό

 

만일 ν΄λΌμ΄μ–ΈνŠΈ 내에 λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μΊμ‹œκ°€ μ €μž₯λ˜μ–΄ μžˆλ‹€λ©΄, ν΄λΌμ΄μ–ΈνŠΈλŠ” λ”°λ‘œ μ„œλ²„μ— μš”μ²­μ„ 보내지 μ•Šκ³  λ°”λ‘œ μΊμ‹œμ— μžˆλŠ” λ¦¬μ†ŒμŠ€λ₯Ό μ‚¬μš©ν•˜κ²Œ λœλ‹€.

103 Early Hints


πŸ“ 103 μƒνƒœμ½”λ“œ νλ¦„ μ˜ˆμ‹œ (μ½”λ“œ)

μœ„μ˜ 과정을 http λ©”μ„Έμ§€λ‘œ ν‘œν˜„ν•΄λ³΄λ©΄ λ‹€μŒκ³Ό 같이 λœλ‹€.

λ‹€μŒκ³Ό 같은 html λ¬Έμ„œλ₯Ό ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•œλ‹€κ³  ν•˜μž. μ›Ήμ„œλ²„μ—λŠ” 103 μƒνƒœ μ½”λ“œμ— λŒ€ν•œ μ„œλ²„ 섀정이 λ˜μ–΄μžˆλ‹€κ³  κ°€μ •ν•œλ‹€.

<HTML>
<head>
   <title>Example</title>
   <link rel="stylesheet" href="/main.css">
   <script src="/common.js"></script>
   ...

 

1. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— html λ¬Έμ„œλ₯Ό GET μš”μ²­μ„ 보낸닀.

 

2. μ„œλ²„λŠ” λ³Έμš”μ²­μ„ μ²˜λ¦¬ν•˜λ©΄μ„œ 사전 λ‘œλ“œν•  css λ¦¬μ†ŒμŠ€ 정보λ₯Ό Link 헀더에 λ„£μ–΄ 103 응닡을 μ€€λ‹€.

103 Early Hints

 

3. λΈŒλΌμš°μ €λŠ” HTTP 메세지에 μžˆλŠ” Link 헀더λ₯Ό 보고 λ¦¬μ†ŒμŠ€λ₯Ό μ¦‰μ‹œ μš”μ²­ν•œλ‹€.

 

4. 그리고 μž μ‹œν›„ μ„œλ²„μ—μ„œ λ³Έμš”μ²­μ΄ λͺ¨λ‘ 처리되면 λ³Έμš”μ²­μ— λŒ€ν•œ 200 응닡을 μ€€λ‹€.

103 Early Hints


🌐 103 μƒνƒœ μ½”λ“œ λΈŒλΌμš°μ € 지원 μ—¬λΆ€

2022λ…„ 6μ›” 21일, 크둬 λΈŒλΌμš°μ € 103 버젼뢀터 HTTP 103 μƒνƒœμ½”λ“œλ₯Ό μ‚¬μš©ν•  수 있게 λ˜μ—ˆλ‹€. κ·Έμ™Έμ˜ λΈŒλΌμš°μ €μ—μ„œλŠ” 아직 미지원이닀.

103 Early Hints


🀫 HTTP/2 의 Server Push κΈ°λŠ₯κ³Ό 무슨 차이일까?

μš”μ¦˜ λ§Žμ€ μ‚¬μ΄νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” HTTP 2.0 ν”„λ‘œν† μ½œμ—μ„œ μ§€μ›ν•˜λŠ” κΈ°λŠ₯쀑 μ„œλ²„ 푸쉬(Server Push)λŠ” PUSH_PROMISE ν”„λ ˆμž„μ„ μ‚¬μš©ν•˜μ—¬ μ›Ήλ¬Έμ„œ(html)에 ν•„μš”ν•œ μ—¬λŸ¬ λ¦¬μ†ŒμŠ€(css, js λ“±)을 미리 λ°›μ•„μ˜€λŠ” κΈ°μˆ μ΄λ‹€. μ–΄μ°Œ 보면 103 Early Hint κΈ°λŠ₯κ³Ό 겹쳐보인닀.

ν•˜μ§€λ§Œ μ„œλ²„ ν‘Έμ‹œμ—λŠ” 두가지 μ£Όμš” λ¬Έμ œκ°€ μžˆμ—ˆλ‹€.

  1. 잘λͺ»λœ μ‹œκ°„μ— 잘λͺ»λœ λ°”μ΄νŠΈλ₯Ό λ³΄λ‚Όμˆ˜ μžˆλ‹€.
  2. μ„œλ²„ 푸쉬λ₯Ό μ§€μ›ν•˜λŠ” μ‚¬μ΄νŠΈκ°€ 적닀

μ΄λ•Œλ¬Έμ— 이에 λŒ€ν•œ λŒ€μ•ˆμœΌλ‘œ Early Hints κΈ°μˆ μ„ μ΅œκ·Όμ— λ„μž…ν•œ 것이닀.

λŒ€ν‘œμ μΈ CDN μ‚¬μ΄νŠΈμΈ Cloudflare CDNμ—μ„œλŠ” 이미 Early Hintsλ₯Ό μ΄μš©ν•˜μ—¬ λΉ λ₯Έ λ¦¬μ†ŒμŠ€ 응닡을 μ œκ³΅ν•˜κΈ° μ‹œμž‘ν–ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈλŠ” CDN이 원본 μ„œλ²„μ— λŒ€ν•œ μš”μ²­μ„ ν”„λ‘μ‹œν•˜κ³  응닡을 λ°˜ν™˜ν•˜λŠ” λ™μ•ˆ 사전 λ‘œλ“œ λ¦¬μ†ŒμŠ€λ₯Ό λ‘œλ“œν•  수 있게 λ˜μ—ˆλ‹€.

103 Early Hints


# 참고자료

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

https://www.websitepulse.com/blog/what-is-1xx-http-status-code 

https://blog.cloudflare.com/early-hints/

https://dev.to/qainsights/what-is-http-103-1l26 

https://hack.nikkei.com/blog/advent20201220/ 

https://swiftymind.tistory.com/114