πŸ“’ Study/🚩 Swift

[ Swift ] HTTP ν”„λ‘œν† μ½œ

EarthSea 2024. 4. 16. 13:53

 

 

 

 

HTTP ν”„λ‘œν† μ½œμ΄λž€?

HTTP ν”„λ‘œν† μ½œμ΄λž€ "HyperText Transfer Protocol"의 μ€„μž„λ§λ‘œ μ›Ήμ—μ„œ 데이터λ₯Ό κ΅ν™˜ν•˜κΈ° μœ„ν•œ κ·œμ•½ λ˜λŠ” ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„μ˜ ν•˜μ΄νΌ λ¬Έμ„œλ₯Ό μ£Όκ³ λ°›λŠ” 데 μ‚¬μš©μ΄ λ˜λŠ”λ°μš”! μ΄λ•Œ, ν΄λΌμ΄μ–ΈνŠΈλŠ” μ›Ήμ‚¬μ΄νŠΈλ₯Ό, μ„œλ²„λŠ” μ„œλ²„ 컴퓨터라고 μƒκ°ν•˜μ‹œλ©΄ λΌμš”! ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ 데이터λ₯Ό μš”μ²­ν•˜λ©΄, μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 응닡을 ν•˜λŠ” μš”μ²­/응닡 ν˜•νƒœλ‘œ 데이터 전달이 μ΄λ£¨μ–΄μ Έμš”. λ˜ν•œ HTTPλŠ” 이미지, μ˜μƒ, μŒμ„±, 파일 JSON λ“± λͺ¨λ“  ν˜•νƒœμ˜ 데이터λ₯Ό 톡신할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

HTTPλŠ” 기본적으둜 비연결성을 κ°€μ§‘λ‹ˆλ‹€. λΉ„μ—°κ²°μ„±μ΄λΌλŠ” 것은 전에 λ³΄λƒˆλ˜ 데이터와 후에 λ³΄λƒˆλ˜ 데이터 κ°„μ˜ 연관성이 μ „ν˜€ μ—†λ‹€λŠ” κ²ƒμ΄μ—μš”! 각 μš”μ²­λ§ˆλ‹€ 데이터가 λ…λ¦½μ μœΌλ‘œ 처리되기 λ•Œλ¬Έμ— 효율적이고 λ‹¨μˆœν•˜κ²Œ 톡신이 κ°€λŠ₯ν•΄μš”!

 

λ˜ν•œ HTTPλŠ” TCP/IP의 ν”„λ‘œν† μ½œ μŠ€μœ„νŠΈμ˜ μƒμœ„ κ³„μΈ΅μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€.

 

 

TCP/IP μ΄λž€?

Transmission Control Protocol/Internet Protocol의 μ€„μž„λ§λ‘œ μΈν„°λ„·μ—μ„œ 데이터λ₯Ό μ•ˆμ „ν•˜κ³  였λ₯˜μ—†μ΄ μ „μ†‘ν•˜λ„λ‘ ν•˜λŠ” κΈ°λ³Έ ν”„λ‘œν† μ½œ μŠ€μœ„νŠΈμž…λ‹ˆλ‹€.

 

HTTP ν”„λ‘œν† μ½œμ—μ„œμ˜ TCP/IP 계측 ꡬ쑰

 

 

- L4 Application Layer ( μ‘μš© 계측 )

: μ‘μš© 계측은 μ‚¬μš©μžκ°€ 인터넷을 톡해 데이터λ₯Ό 주고받을 수 μžˆλ„λ‘ HTTP ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜μ—¬ λ„€νŠΈμ›Œν¬ μ„œλΉ„μŠ€μ— 직접 μ ‘κ·Όν•  수 μžˆλ„λ‘ ν•΄μ€λ‹ˆλ‹€.

ex) νŽΈμ§€μ§€μ— νŽΈμ§€λ₯Ό μ λŠ” ν–‰μœ„

 

 

- L3 Transport Layer ( 전솑 계측 )

: 이 계측은 μ‹ λ’°μ„±μžˆλŠ” 데이터 전솑을 보μž₯ν•©λ‹ˆλ‹€. TCP ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄ λ©”μ„Έμ§€λ₯Ό μͺΌκ°œκ±°λ‚˜ portλ₯Ό λΆ™μ—¬μ€λ‹ˆλ‹€. 

ex) νŽΈμ§€λ₯Ό λ‚˜λˆ„κ±°λ‚˜ νŽΈμ§€ λ΄‰νˆ¬μ— λ‹΄λŠ” ν–‰μœ„

 

 

- L2 Internet Layer ( 인터넷 계측 )

: 이 κ³„μΈ΅μ˜ μ£Όμš” λͺ©ν‘œλŠ” 데이터 νŒ¨ν‚·μ„ μΆœλ°œμ§€μ—μ„œ λͺ©μ μ§€λ‘œ λΌμš°νŒ… ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λ•Œ νŒ¨ν‚·μ˜ 전달과 λΌμš°νŒ…μ„ IP ν”„λ‘œν† μ½œμ΄ λ‹΄λ‹Ήν•©λ‹ˆλ‹€.

ex) νŽΈμ§€ λ΄‰νˆ¬μ— λ‹΄κΈ΄ νŽΈμ§€μ— μ£Όμ†Œμ§€λ₯Ό μ λŠ” ν–‰μœ„

 

 

- L1 Link Layer ( 링크 계측 )

: 데이터λ₯Ό λ„€νŠΈμ›Œν¬ μž₯λΉ„ 간에 μ ˆλ‹¬ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. μ •ν™•νžˆλŠ” Mac μ£Όμ†Œλ₯Ό μΆ”κ°€ν•΄ λͺ©μ μ§€λ‘œ λ³΄λ‚΄λŠ” 역할을 ν•˜λŠ”λ°μš”. 이 계측은 데이터λ₯Ό ν”„λ ˆμž„ ν˜•νƒœλ‘œ κ΅¬μ„±ν•˜μ—¬ μ „μ†‘ν•©λ‹ˆλ‹€. 

ex) νŽΈμ§€λ₯Ό 보냄.

 

μ–΄μ¨Œλ“  TCP/IP 의 톡신 과정에 μžˆμ–΄μ„œ HTTP ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•œ HTTP μš”μ²­ λ©”μ‹œμ§€λŠ” μ‘μš©κ³„μΈ΅μ—μ„œ λ³΄λ‚΄μ§„λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€! 이 λ•Œ, HTTP μš”μ²­μ—λŠ” λ‹€μ–‘ν•œ λ©”μ„œλ“œκ°€ μ‘΄μž¬ν•˜λŠ”λ°μš”! ν•¨κ»˜ μ•Œμ•„λ΄…μ‹œλ‹€.

 

 

 

HTTP의 μš”μ²­ λ©”μ„œλ“œ μ’…λ₯˜

  • GET ( READ ) : λ¦¬μ†ŒμŠ€λ₯Ό μ‘°νšŒν•  λ•Œ μ‚¬μš©
  • POST ( CREATE ) : μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€λ₯Ό 생성할 λ•Œ μ‚¬μš©
  • PUT ( UPDATA ) : 기쑴의 λ¦¬μ†ŒμŠ€λ₯Ό λŒ€μ²΄ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€λ₯Ό 생성할 λ•Œ μ‚¬μš© ( 전체가 λ³€κ²½ )
  • DELETE : λ¦¬μ†ŒμŠ€λ₯Ό μ‚­μ œν•  λ•Œ μ‚¬μš©
  • PATCH : λ¦¬μ†ŒμŠ€μ˜ 일뢀λ₯Ό μˆ˜μ •ν•  λ•Œ μ‚¬μš© ( μΌλΆ€λ§Œ λ³€κ²½ )
  • HEAD : λ¦¬μ†ŒμŠ€μ˜ 헀더 μ •λ³΄λ§Œ μ‘°νšŒν•  λ•Œ μ‚¬μš©
  • OPTIONS : λŒ€μƒ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 톡신 κ°€λŠ₯ μ˜΅μ…˜μ„ μ„€λͺ…ν•  λ•Œ μ‚¬μš©
  • TRACE : ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μš”μ²­ λ©”μ‹œμ§€κ°€ μ„œλ²„μ— λ„λ‹¬ν–ˆμ„ λ•Œ, μ–΄λ–»κ²Œ μ²˜λ¦¬λ˜λŠ”μ§€λ₯Ό μ•Œλ €μ€Œ
  • CONNECT : ν΄λΌμ΄μ–ΈνŠΈκ°€ μ›ν•˜λŠ” μ„œλ²„λ‘œμ˜ 터널을 μ„€λͺ…ν•  λ•Œ μ‚¬μš©
  • LINK : 이미 μ‘΄μž¬ν•˜λŠ” 두 λ¦¬μ†ŒμŠ€ 사이λ₯Ό μ—°κ²°ν•  λ•Œ μ‚¬μš©
  • UNLINK : LINK λ©”μ†Œλ“œλ‘œ λ§Œλ“€μ–΄μ§„ λ¦¬μ†ŒμŠ€ μ‚¬μ΄μ˜ 연결을 μ œκ±°ν•  λ•Œ μ‚¬μš©

 

이 μ€‘μ—μ„œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” 것은 GET, POST, PUT, DELETEμž…λ‹ˆλ‹€. 이λ₯Ό ν†΅ν‹€μ–΄μ„œ CRUD λ©”μ„œλ“œλΌκ³  λΆ€λ¦…λ‹ˆλ‹€!

 

 

 

HTTP ν”„λ‘œν† μ½œ 응닡 μƒνƒœ μ½”λ“œ

2XX ( 성곡 )

  • 200 OK
  • 201 Created
  • 202 Accepted
  • 204 No Content

 

3XX ( λ¦¬λ‹€μ΄λ ‰μ…˜ )

  • 300 Multiple Choices
  • 301 Moved Permanently
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 307 Temporary Redirect
  • 308 Permanent Redirect

 

4XX ( ν΄λΌμ΄μ–ΈνŠΈ μ—λŸ¬ )

  • 400 Band Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 409 Conflict

 

5XX ( μ„œλ²„ μ—λŸ¬ )

  • 500 Internal Server Error
  • 501 Not Implemented
  • 503 Service Unavailble