WEB

[HTTP] 인터넷 λ„€νŠΈμ›Œν¬

Sue 2022. 3. 10. 22:29

πŸ“Œ 인터넷 톡신

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ—κ²Œ μš”μ²­(request)을 보내고, μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ— μš”μ²­μ— λŒ€ν•œ 응닡(response)을 ν•œλ‹€.

λ©”μ„Έμ§€λ₯Ό 전솑할 λ•Œ λ³΅μž‘ν•œ 인터넷 망을 거치게 λ˜λŠ”λ°, λ©”μ„Έμ§€κ°€ 잘 μ „μ†‘λ˜κΈ° μœ„ν•΄μ„œλŠ” 일련의 κ·œμΉ™μ΄ ν•„μš”ν•˜λ‹€.

 

πŸ“Œ IP(Internet Protocol)

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

λ³΅μž‘ν•œ 인터넷을 거쳐 λ©”μ„Έμ§€λ₯Ό 잘 μ „μ†‘ν•˜κΈ° μœ„ν•΄μ„œ 각 ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„λŠ” 각각 IP μ£Όμ†Œλ₯Ό λΆ€μ—¬λ°›λŠ”λ‹€.

μ΄λ•Œ IPλŠ” μ§€μ •ν•œ IP μ£Όμ†Œμ— 데이터λ₯Ό μ „λ‹¬ν•˜κ³ , νŒ¨ν‚·μ΄λΌλŠ” 톡신 λ‹¨μœ„λ‘œ 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” 역할을 ν•œλ‹€.

μ „μ†‘ν•˜λ €λŠ” 데이터에 μΆœλ°œμ§€ IP, λͺ©μ μ§€ IP λ“±μ˜ 정보λ₯Ό 더해 IP νŒ¨ν‚·μœΌλ‘œ λ§Œλ“ λ‹€.

 

πŸ“Œ IP의 ν•œκ³„

ν•˜μ§€λ§Œ IPμ—λŠ” ν•œκ³„μ λ“€μ΄ μžˆλ‹€.

  • λΉ„μ—°κ²°μ„± : νŒ¨ν‚·μ΄ 받을 λŒ€μƒμ΄ μ—†κ±°λ‚˜, μ„œλΉ„μŠ€ 뢈λŠ₯ μƒνƒœμ—¬λ„ 전솑이 이루어진닀.
  • λΉ„μ‹ λ’°μ„± : μΈν„°λ„·μ—μ„œ λ©”μ„Έμ§€λ₯Ό μ „μ†‘ν•˜λŠ” κ³Όμ •μ—μ„œ νŒ¨ν‚·μ΄ μ†Œμ‹€λ˜μ–΄λ„ ν΄λΌμ΄μ–ΈνŠΈλŠ” λͺ¨λ₯Έλ‹€. λ˜ν•œ νŒ¨ν‚·μ˜ μˆœμ„œλ₯Ό 보μž₯ν•΄μ£Όμ§€ μ•ŠλŠ”λ‹€.
  • ν”„λ‘œκ·Έλž¨ ꡬ뢄 : 같은 IPλ₯Ό μ‚¬μš©ν•˜λŠ” μ„œλ²„μ—μ„œ ν†΅μ‹ ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ‘˜ 이상일 λ•Œ μ–΄λ–€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ•Œλ§žλŠ” νŒ¨ν‚·μ„ μ „λ‹¬ν•΄μ•Όν•˜λŠ”μ§€ μ•Œ μˆ˜κ°€ μ—†λ‹€.

 

πŸ“Œ TCP(Transmission Control Protocol)

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

 

TCPλŠ” 전솑 κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œλ‘œ IP νŒ¨ν‚·μ„ λ³΄μ™„ν•΄μ£ΌλŠ” 역할을 ν•œλ‹€.

데이터("Hello, world!"λΌλŠ” λ©”μ„Έμ§€)κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 인터넷을 톡해 μ „μ†‘λ˜λŠ” 과정을 μ‚΄νŽ΄λ³΄λ©΄

  1. ν”„λ‘œκ·Έλž¨μ΄ λ©”μ„Έμ§€λ₯Ό μƒμ„±ν•œλ‹€.
  2. Socket 라이브러리λ₯Ό 톡해 μƒμ„±λœ λ©”μ„Έμ§€λ₯Ό OS 계측에 μ „λ‹¬ν•œλ‹€.
  3. 전솑 κ³„μΈ΅μ—μ„œ TCP 정보λ₯Ό μƒμ„±ν•΄μ„œ λ©”μ„Έμ§€λ₯Ό 감싼닀.
  4. 인터넷 κ³„μΈ΅μ—μ„œ TCP 정보λ₯Ό ν¬ν•¨ν•˜λŠ” IP νŒ¨ν‚·μ„ μƒμ„±ν•˜κ³  μ‹€μ œ 물리적 μž₯치 정보(e.g. MAC μ£Όμ†Œ)λ₯Ό ν¬ν•¨ν•œ Ethernetframe을 μ”Œμš΄ ν›„ μ „μ†‘ν•œλ‹€.

 

βœ… TCP/IP νŒ¨ν‚· 정보

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

TCP μ •λ³΄μ—λŠ” PORT, μ „μ†‘μ œμ–΄, μˆœμ„œ 등이 ν¬ν•¨λ˜κΈ° λ•Œλ¬Έμ— IP νŒ¨ν‚·λ§ŒμœΌλ‘œ λ°œμƒν–ˆλ˜ ν•œκ³„μ λ“€μ„ ν•΄κ²°ν•  수 μžˆλ‹€!

 

βœ… TCP νŠΉμ§•

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

  • μ—°κ²° μ§€ν–₯ : 3 way handshake (가상 μ—°κ²°)
    • SYN : 접속 μš”μ²­, ACK : μš”μ²­ 수락
    • μ„Έλ²ˆμ˜ λ©”μ„Έμ§€κ°€ μ „μ†‘λ˜κ³  λ‚˜λ©΄ 연결이 λ˜μ—ˆλ‹€κ³  μƒκ°ν•˜κ³ (논리적 μ—°κ²°) 데이터λ₯Ό μ „μ†‘ν•œλ‹€.
    • 참고둜 3번 ACK와 ν•¨κ»˜ 데이터λ₯Ό 전솑할 수 μžˆλ‹€.

 

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

  • 데이터 전달 보증
    • 데이터λ₯Ό λ°›μœΌλ©΄ μ„œλ²„μ—μ„œ 데이터λ₯Ό λ°›μ•˜λ‹€λŠ” λ©”μ„Έμ§€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „μ†‘ν•œλ‹€.
    • λ§Œμ•½ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 데이터λ₯Ό λ°›μ•˜λ‹€λŠ” λ©”μ„Έμ§€λ₯Ό λ°›μ§€ λͺ»ν•˜λ©΄ 데이터 전달이 이루어지지 μ•Šμ•˜λ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

  • μˆœμ„œ 보μž₯
    • μ„œλ²„λŠ” νŒ¨ν‚·μ˜ μˆœμ„œ 정보λ₯Ό 전달 λ°›λŠ”λ‹€.
    • νŒ¨ν‚·μ˜ μˆœμ„œκ°€ 잘λͺ»λ˜λ©΄ μˆœμ„œκ°€ 잘λͺ»λœ λΆ€λΆ„λΆ€ν„° μž¬μ „μ†‘μ„ μš”μ²­ν•œλ‹€.

 

 

πŸ“Œ UDP(User Datagram Protocol)

UDPλŠ” 보톡 ν•˜μ–€ 도화지에 λΉ„μœ ν•œλ‹€. TCP와 같이 전솑 κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œμ΄μ§€λ§Œ 그와 달리 μ—°κ²° μ§€ν–₯, 데이터 전달 보증, μˆœμ„œ 보μž₯ λ“±μ˜ κΈ°λŠ₯이 μ—†λ‹€. ν•˜μ§€λ§Œ λ‹¨μˆœν•˜κ³  λΉ λ₯΄λ‹€λŠ” μž₯점이 μžˆλ‹€. UDPλŠ” IP와 거의 κ°™μ§€λ§Œ PORT와 체크섬 κΈ°λŠ₯ 정도가 μΆ”κ°€λœ ν”„λ‘œν† μ½œμ΄λΌκ³  보면 λœλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μΆ”κ°€ μž‘μ—…μ„ ν•˜λ©΄ κΈ°λŠ₯을 ν™•μž₯ν•  수 μžˆλ‹€.

 

πŸ“Œ PORT

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

ν•œλ²ˆμ— μ—¬λŸ¬ 개의 μ„œλ²„μ™€ ν†΅μ‹ ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λŒλ¦°λ‹€κ³  μƒκ°ν•΄λ³΄μž. IP νŒ¨ν‚·μ—λŠ” 도착지 IP μ£Όμ†Œμ™€ ν•¨κ»˜ μΆœλ°œμ§€ IPμ£Όμ†Œλ„ 보내기 λ•Œλ¬Έμ— ν΄λΌμ΄μ–ΈνŠΈμ˜ PCκΉŒμ§€ λ„μ°©ν•˜λŠ”λ°λŠ” λ¬Έμ œκ°€ μ—†μ§€λ§Œ μ „λ‹¬λœ νŒ¨ν‚·μ΄ μ–΄λ–€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ μ „λ‹¬λœ κ²ƒμΈμ§€λŠ” ꡬ뢄할 수 μ—†λ‹€. 

 

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

PORTλŠ” 그림처럼 같은 IPλ‚΄μ—μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό ꡬ뢄할 수 μžˆλŠ” μ£Όμ†Œμ΄λ‹€. IP μ£Όμ†Œλ₯Ό μ•„νŒŒνŠΈλΌκ³  ν•˜λ©΄ PORTλŠ” 동, 호수라고 λ³Ό 수 μžˆλ‹€. PORT μ •λ³΄λŠ” TCPλ₯Ό 톡해 IP νŒ¨ν‚·μ— μΆ”κ°€λ˜μ–΄ μ „λ‹¬λœλ‹€.

 

PORT 쀑 0~1023은 잘 μ•Œλ €μ§„ 포트둜, μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹κ³  보톡 0~65535λ₯Ό ν• λ‹Ήν•΄μ„œ μ‚¬μš©ν•œλ‹€.

 

πŸ“Œ DNS(Domain Name System)

 

μΈν”„λŸ° κΉ€μ˜ν•œλ‹˜ κ°•μ˜μžλ£Œ

IP μ£Όμ†ŒλŠ” κΈ°μ–΅ν•˜κΈ° μ–΄λ ΅κ³  변경될 수 μžˆλ‹€. DNSλŠ” 도메인 λͺ…κ³Ό IP μ£Όμ†Œλ₯Ό λ§€ν•‘μ‹œμΌœμ£ΌκΈ° λ•Œλ¬Έμ— μ‰½κ²Œ IPμ£Όμ†Œμ— μ ‘κ·Όν•  수 있게 ν•΄μ€€λ‹€.

 


κ°•μ˜ 자료

 

λͺ¨λ“  개발자λ₯Ό μœ„ν•œ HTTP μ›Ή κΈ°λ³Έ 지식 - μΈν”„λŸ° | κ°•μ˜

싀무에 κΌ­ ν•„μš”ν•œ HTTP 핡심 κΈ°λŠ₯κ³Ό μ˜¬λ°”λ₯Έ HTTP API 섀계 방법을 ν•™μŠ΅ν•©λ‹ˆλ‹€., - κ°•μ˜ μ†Œκ°œ | μΈν”„λŸ°...

www.inflearn.com