πŸ“‚ λ„€νŠΈμ›Œν¬/성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리

HTTP λ¦¬ν€˜μŠ€νŠΈ λ©”μ‹œμ§€λ₯Ό μž‘μ„±ν•œλ‹€. - [Ch 01. μ›Ή λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€]

Amenable 2023. 7. 7. 22:13

πŸ“™ 1. νƒν—˜ 여행은 URL μž…λ ₯λΆ€ν„° μ‹œμž‘ν•œλ‹€.

  λ„€νŠΈμ›Œν¬μ˜ μΆœλ°œμ μ€ URLλΆ€ν„° μ‹œμž‘ν•œλ‹€.

  λΈŒλΌμš°μ €λŠ” μ›Ή μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈλ‘œ μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ λ§Žμ§€λ§Œ, νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ/μ—…λ‘œλ“œν•˜λŠ” FTP의 ν΄λΌμ΄μ–ΈνŠΈ κΈ°λŠ₯μ΄λ‚˜ λ©”μΌμ˜ ν΄λΌμΈμ–ΈνŠΈ κΈ°λŠ₯도 κ°€μ§€κ³  μžˆλ‹€. κ·Έλž˜μ„œ μ›Ή μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•  λ•ŒλŠ” http:, FTP μ„œλ²„λΌλ©΄ ftp:λΌλŠ” μ‹μœΌλ‘œ μ—¬λŸ¬ μ’…λ₯˜μ˜ URL이 μžˆλ‹€.

  즉, λΈŒλΌμš°μ €λŠ” λͺ‡ 개의 ν΄λΌμ΄μ–ΈνŠΈ κΈ°λŠ₯을 κ²ΈλΉ„ν•œ 볡합적인 ν΄λΌμ΄μ–ΈνŠΈ μ†Œν”„νŠΈμ›¨μ–΄λΌκ³  ν•  수 μžˆλ‹€.

 

  μ›Ή μ„œλ²„λ‚˜ FTP μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•˜λŠ” κ²½μš°μ—λŠ” μ„œλ²„μ˜ 도메인λͺ…μ΄λ‚˜ μ•‘μ„ΈμŠ€ ν•˜λŠ” 파일의 경둜 등을 URL에 ν¬ν•¨μ‹œν‚¨λ‹€.

  • HTTP ν”„λ‘œν† μ½œλ‘œ μ›Ή μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•˜λŠ” 경우
    http://{μ‚¬μš©μžλͺ…(μƒλž΅κ°€λŠ₯)}:{νŒ¨μŠ€μ›Œλ“œ(μƒλž΅κ°€λŠ₯)}@{μ›Ή μ„œλ²„μ˜ 도메인λͺ…}:{포트번호}{파일의 경둜λͺ…}
    http://user:password@www.cyber.co.kr:80/dir/file1.html
  • FTP ν”„λ‘œν† μ½œλ‘œ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œν•˜κ±°λ‚˜ μ—…λ‘œλ“œν•˜λŠ” 경우
    ftp://{μ‚¬μš©μžλͺ…(μƒλž΅κ°€λŠ₯)}:{νŒ¨μŠ€μ›Œλ“œ(μƒλž΅κ°€λŠ₯)}@{FTP μ„œλ²„μ˜ 도메인λͺ…}:{포트번호}{파일의 경둜λͺ…}
    ftp://user:password@ftp.cyber.co.kr:21/dir/file1.html

  λ©”μΌμ˜ κ²½μš°μ—λŠ” λ³΄λ‚΄λŠ” μƒλŒ€μ˜ 메일 μ£Όμ†Œλ₯Ό URL에 ν¬ν•¨μ‹œν‚¨λ‹€.

  • 메일을 μ†‘μ‹ ν•˜λŠ” 경우
    mailto:{λ©”μΌμ£Όμ†Œ}
    mailto:duswo0624@naver.com

  이와 같이 μ“°λŠ” 방법은 λ‹€μ–‘ν•˜μ§€λ§Œ λͺ¨λ“  URLμ—λŠ” ν•˜λ‚˜μ˜ 곡톡점이 μžˆλ‹€.

  URL의 맨 μ•žμ— μžˆλŠ” λ¬Έμžμ—΄, 즉 http:, ftp:, file:, mailto:λΌλŠ” λΆ€λΆ„μ—μ„œ μ•‘μ„ΈμŠ€ ν•˜λŠ” 방법을 λ‚˜νƒ€λ‚Έλ‹€λŠ” 점이닀. μ•‘μ„ΈμŠ€ ν•˜λŠ” λ°©λ²•은 μ•‘μ„ΈμŠ€ ν•  λ•Œμ˜ ν”„λ‘œν† μ½œ μ’…λ₯˜λ₯Ό μ΄μš©ν•˜μ—¬ λ‚˜νƒ€λ‚Έλ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€.

 

 

πŸ“™ 2. λΈŒλΌμš°μ €λŠ” λ¨Όμ € URL을 ν•΄λ…ν•œλ‹€.

  λΈŒλΌμš°μ €κ°€ 처음 ν•˜λŠ” 일은 μ›Ή μ„œλ²„μ— λ³΄λ‚΄λŠ” λ¦¬ν€˜μŠ€νŠΈμ˜ λ©”μ‹œμ§€λ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•΄ 이 URL을 ν•΄λ…ν•˜λŠ” 것이닀.  μ•„λž˜μ˜ URL을 λ‹€μŒκ³Ό 같이 해독할 수 μžˆλ‹€.

πŸ“Œ URL

http://www.lab.cyber.co.kr/dir1/file1.html

πŸ“Œ URL의 μš”μ†Œ

  1. http: 
    ν”„λ‘œν† μ½œ
  2. //
    λ‚˜μ€‘μ— μ΄μ–΄μ§€λŠ” λ¬Έμžμ—΄μ΄ μ„œλ²„μ˜ μ΄λ¦„μž„μ„ λ‚˜νƒ€λ‚Έλ‹€.
  3. www.lab.cyber.co.kr
    μ›Ή μ„œλ²„λͺ…
  4. /dir1/file1.html
    데이터 μΆœμ²˜(파일)의 κ²½λ‘œλͺ…

 

 

πŸ“™ 3. νŒŒμΌλͺ…을 μƒλž΅ν•œ κ²½μš°

  • http://www.lab.cyber.co.kr/dir/

  μœ„μ˜ URL은 /dir/의 λ‹€μŒμ— 써야 ν•  파일λͺ…을 μ“°μ§€ μ•Šκ³  μƒλž΅ν•œλ‹€λŠ” λœ»μ΄λ‹€. URL의 κ·œμΉ™μ—λŠ” 이와 같이 파일λͺ…을 μƒλž΅ν•΄λ„ μ’‹λ‹€.

  μ„œλ²„μ— 따라 λ‹€λ₯΄μ§€λ§Œ λŒ€λΆ€λΆ„μ˜ μ„œλ²„κ°€ 'index.html'μ΄λΌλŠ” 파일λͺ…을 μ„€μ •ν•΄ λ‘”λ‹€. κ·Έλž˜μ„œ 파일λͺ…을 μƒλž΅ν•˜λ©΄ /dir/index.htmlμ΄λΌλŠ” νŒŒμΌμ— μ•‘μ„ΈμŠ€ ν•œλ‹€.

 

 

πŸ“™ 4. HTTP의 κΈ°λ³Έ κ°œλ…

  URL을 ν•΄λ…ν•˜λ©΄ 어디에 μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•˜λŠ”μ§€κ°€ 판λͺ…λœλ‹€. 그리고 λΈŒλΌμš°μ €λŠ” HTTP ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜μ—¬ μ›Ή μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•œλ‹€.

 

  μš”μ²­ λ©”μ‹œμ§€ μ•ˆμ—λŠ” '무엇을'κ³Ό 'μ–΄λ–»κ²Œ'λΌλŠ” λ‚΄μš©μ΄ λ“€μ–΄μžˆλ‹€.

  '무엇을'에 ν•΄λ‹Ήν•˜λŠ” 것은 URI(Uniform Resource Identifier)이고, 'dir1/file1.html'κ³Ό 같은 μ•‘μ„ΈμŠ€ λŒ€μƒμ„ μ“΄λ‹€.

  'μ–΄λ–»κ²Œ'에 ν•΄λ‹Ήν•˜λŠ” 것은 λ©”μ„œλ“œμ΄κ³ , 'GET, POST,...'와 같이 μ›Ή μ„œλ²„μ— μ–΄λ–€ λ™μž‘μ„ ν•˜κ³  싢은지λ₯Ό μ „λ‹¬ν•œλ‹€.

 

  응닡 λ©”μ‹œμ§€μ˜ 맨 μ•žλΆ€λΆ„μ—λŠ” μ‹€ν–‰ κ²°κ³Όκ°€ 정상 μ’…λ£Œλ˜μ—ˆλŠ”μ§€ λ˜λŠ” 이상이 λ°œμƒν–ˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μŠ€ν…Œμ΄ν„°μŠ€ μ½”λ“œκ°€ μžˆλ‹€.

  그리고 헀더 파일과 νŽ˜μ΄μ§€μ˜ 데이터가 μΆ”κ°€μ μœΌλ‘œ 있고, 이 응닡 λ©”μ‹œμ§€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ°˜μ†‘ν•œλ‹€. 응닡 λ©”μ‹œμ§€κ°€ ν΄λΌμ΄μ–ΈνŠΈμ— λ„μ°©ν•˜μ—¬ λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€ μ•ˆμ—μ„œ λ°μ΄ν„°λ₯Ό μΆ”μΆœν•˜μ—¬ ν™”면에 ν‘œμ‹œν•˜λ©΄μ„œ HTTP의 λ™μž‘이 λλ‚œλ‹€.

 

 

πŸ“™ 5. HTTP λ¦¬ν€˜μŠ€νŠΈ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€.

  μ•žμ„  λ‚΄μš©μ€ HTTP의 기본이고, κ³„μ†ν•΄μ„œ 쑰금 더 μžμ„Ένžˆ μ•Œμ•„λ³΄μž.

  URL을 ν•΄λ…ν•˜κ³  μ›Ή μ„œλ²„μ™€ 파일λͺ…을 νŒλ‹¨ν•˜λ©΄ λΈŒλΌμš°μ €λŠ” 이것을 λ°”νƒ•μœΌλ‘œ HTTP의 λ¦¬ν€˜μŠ€νŠΈ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€. HTTPλŠ” ν¬λ§·μ΄ κ²°μ •λ˜μ–΄ μžˆμœΌλ―€λ‘œ λΈŒλΌμš°μ €λŠ” 이 포맷에 맞게 λ¦¬ν€˜μŠ€νŠΈ λ©”μ‹œμ§€λ₯Ό μž‘μ„±ν•œλ‹€.

  μš”μ²­ λ©”μ‹œμ§€ ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™λ‹€.

  μ„€λͺ… ν˜•μ‹
λ¦¬ν€˜μŠ€νŠΈ 라인 이 ν–‰μ„ ν†΅ν•΄ λ¦¬ν€˜μŠ€νŠΈμ˜ λ‚΄μš©μ„ λŒ€λž΅ μ•Œ μˆ˜ μžˆλ‹€. <λ©”μ†Œλ“œ><곡백><곡백></http λ²„μ „>
λ©”μ‹œμ§€ 헀더 λ¦¬ν€˜μŠ€νŠΈμ˜ 뢀가적인 정보λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
ν–‰ μˆ˜λŠ” μƒν™©μ— λ”°λΌ λ‹¬λΌμ§€λ©°, κ³΅λ°± ν–‰κΉŒμ§€κ°€ λ©”μ‹œμ§€ ν—€λ”κ°€ λœλ‹€.
<ν•„λ“œλͺ…>:<ν•„λ“œκ°’>
.
.
.
<곡백 ν–‰>
λ©”μ‹œμ§€ λ³Έλ¬Έ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„에 μ†‘μ‹ ν•˜λŠ” λ°μ΄ν„°
POST λ©”μ„œλ“œλ‘œ μ›Ή μ„œλ²„에 λ³΄λ‚Ό λ•Œμ˜ λ°μ΄ν„° λ“±μ΄ λ“€μ–΄κ°„λ‹€.
<λ©”μ‹œμ§€ λ³Έλ¬Έ>

 

 

πŸ“™ 6. λ¦¬ν€˜μŠ€νŠΈ λ©”μ‹œμ§€λ₯Ό λ³΄λ‚΄λ©΄ μ‘닡이 λ˜λŒμ•„μ˜¨λ‹€.

  응닡 λ©”μ‹œμ§€λ„ 포맷이 μ •ν•΄μ Έ 있고, κ·Έ ν˜•μ‹μ€ μ•„λž˜μ™€ κ°™λ‹€.

  μ„€λͺ… ν˜•μ‹
μŠ€ν…Œμ΄ν„°μŠ€ 라인 μŠ€ν…Œμ΄ν„°μŠ€ μ½”λ“œμ˜ λ‚΄μš©μ„ λ‚˜νƒ€λ‚΄λŠ” μ§§μ€ μ„€λͺ…λ¬Έ <곡백><μŠ€ν…Œμ΄ν„°μŠ€ μ½”λ“œ><곡백><응닡 λ¬Έκ΅¬></http λ²„μ „>
λ©”μ‹œμ§€ 헀더 μ‘λ‹΅μ˜ λΆ€κ°€μ μΈ μ •보λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. <ν•„λ“œλͺ…>:<ν•„λ“œκ°’>
.
.
.
<곡백 ν–‰>
λ©”μ‹œμ§€ λ³Έλ¬Έ μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ— μ†‘μ‹ ν•˜λŠ” λ°μ΄ν„°
λ©”μ‹œμ§€ λ³Έλ¬Έμ€ λ°”μ΄λ„ˆλ¦¬ λ°μ΄ν„°λ‘œ μ·¨κΈ‰ν•œλ‹€.
<λ©”μ‹œμ§€ λ³Έλ¬Έ>

 

HTTP의 λ©”μ‹œμ§€ κ΅¬μ‘°λŠ” 이 글을 μ°Έκ³ ν•˜λ©΄ 도움이 될 것이닀.

 

ν•΄λ‹Ή κΈ€μ€ Tsutomu Tone λ‹˜μ˜ '성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ μ›λ¦¬'λ₯Ό μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.