728x90
λ°˜μ‘ν˜•
λ°˜μ‘ν˜•

2.1 λ„€νŠΈμ›Œν¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 원리

Creating a network app

  • software 개발자 κ΄€μ μ—μ„œλŠ” λ„€νŠΈμ›Œν¬ ꡬ쑰가 κ³ μ •λ˜μ–΄ μžˆλ‹€. ν•˜μ§€λ§Œ, application κ΅¬μ‘°λŠ” κ°œλ°œμžκ°€ μ„€κ³„ν•˜λ©°, μ—¬λŸ¬ 쒅단 μ‹œμŠ€ν…œμ—μ„œ μ–΄λ–»κ²Œ μ‘°μ§λ˜μ–΄μ•Ό ν•˜λŠ”μ§€λ₯Ό μ•Œλ €μ€€λ‹€.
  • μ΄λŸ¬ν•œ application κ΅¬μ‘°λŠ” 크게 2κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€.
    • Client - server ꡬ쑰
    • P2P ꡬ쑰

Client-server paradigm

  • Server
    • 항상 λ™μž‘ν•˜κ³  μžˆλŠ” μ„œλ²„κ°€ μ‘΄μž¬ν•˜κ³ , ClientλΌλŠ” λ‹€λ₯Έ ν˜ΈμŠ€νŠΈλ“€λ‘œλΆ€ν„° μ„œλΉ„μŠ€ μš”μ²­μ„ λ°›λŠ”λ‹€.
    • μ„œλ²„λŠ” 잘 μ•Œλ €μ§„ κ³ μ • IP μ£Όμ†Œλ₯Ό κ°–λŠ”λ‹€. (permanent IP address - not change)
    • μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° μ˜€λŠ” λͺ¨λ“  μš”μ²­μ— 더 μ‘λ‹΅ν•˜λŠ” 것이 λΆˆκ°€λŠ₯ν•  λ•Œ
      • λ§Žμ€ 수의 호슀트λ₯Ό κ°–μΆ˜ data centerκ°€ κ°•λ ₯ν•œ κ°€μƒμ˜ μ„œλ²„λ₯Ό μƒμ„±ν•˜λŠ” μ—­ν• λ‘œ μ‚¬μš©λœλ‹€.
      • 보톡 10만개 μ •λ„μ˜ μ„œλ²„λ₯Ό κ°–μΆ”κ³  μžˆλ‹€.
  • Clients
    • ν•„μš”ν•  λ•Œ connect ν•œλ‹€.
    • may be intermittently connected (κ°„μ ‘μ μœΌλ‘œ, 가끔식 μ—°κ²°λœλ‹€)
    • dynamic IP addressλ₯Ό κ°–λŠ”λ‹€.
    • ClientλΌλ¦¬λŠ” 직접 ν†΅μ‹ ν•˜μ§€ μ•ŠλŠ”λ‹€.

P2P ꡬ쑰

  • Client와 server λ‘˜ λ‹€μ˜ responsibilityλ₯Ό κ°–λŠ”λ‹€.
  • 항상 μΌœμ ΈμžˆλŠ” μ„œλ²„μ— μ˜μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • μž„μ˜μ˜(arbitrary) end system듀은 직접 μ†Œν†΅ν•œλ‹€.
    • 즉, peerλΌλŠ” κ°„ν—μ μœΌλ‘œ μ—°κ²°λœ 호슀트 쌍이 μ„œλ‘œ 직접 ν†΅μ‹ ν•˜κ²Œ ν•œλ‹€.
  • peerλŠ” μš°λ¦¬κ°€ ν”νžˆ μ•Œκ³  μžˆλŠ” Client(laptop 같은 것듀)
  • **Self scalability(μžκ°€ν™•μž₯μ„±)**λ₯Ό κ°–λŠ”λ‹€.
    • 즉, μ‚¬μš©μžκ°€ λ§Žμ•„μ§ˆμˆ˜λ‘ λ„€νŠΈμ›Œν¬μ— 뢀담이 μ»€μ§€λŠ” 것이 μ•„λ‹ˆλΌ, 였히렀 μ„œλ‘œ λ„μ™€μ„œ λ„€νŠΈμ›Œν¬μ˜ νš¨μœ¨μ„±μ΄ 높아진닀.
    • 예λ₯Ό λ“€μ–΄, 파일 곡유 applicationμ—μ„œλŠ” 각 peer듀이 νŒŒμΌμ„ μš”κ΅¬ν•˜μ—¬ μž‘μ—… λΆ€ν•˜κ°€ μƒκΈ°μ§€λ§Œ, 각 Peer듀은 νŒŒμΌμ„ λ‹€λ₯Έ Peerλ“€μ—κ²Œ λΆ„λ°°ν•˜μ—¬ μ‹œμŠ€ν…œμ— μ„œλΉ„μŠ€ λŠ₯λ ₯을 κ°–μΆ˜λ‹€.
  • data center 등이 ν•„μš” μ—†μœΌλ―€λ‘œ λΉ„μš©μ΄ νš¨μœ¨μ μ΄λ‹€.

 

πŸ‘©πŸ»‍πŸ’» 2.1.2 ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신

μ‹€μ œ ν†΅μ‹ ν•˜λŠ” 것은 ν”„λ‘œκ·Έλž¨μ΄ μ•„λ‹ˆλΌ, μ‹€ν–‰λ˜κ³  μžˆλŠ” ν”„λ‘œκ·Έλž¨μΈ process이닀.

  • 같은 host λ²”μœ„ λ‚΄μ—μ„œ, λ‘κ°œμ˜ process듀은 IPCλ₯Ό μ‚¬μš©ν•΄ communication ν•œλ‹€.
    • Inter-process-communication : 두 개 μ΄μƒμ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 데이터λ₯Ό μ£Όκ³ λ°›λŠ” 방법
  • λ‹€λ₯Έ host λ²”μœ„ λ‚΄μ—μ„œλŠ” exchanging messagesλ₯Ό 톡해 μ†Œν†΅ν•œλ‹€.
  • 2개의 쒅단 μ‹œμŠ€ν…œμ—μ„œ ν”„λ‘œμ„ΈμŠ€λŠ” 컴퓨터 λ„€νŠΈμ›Œν¬λ₯Ό ν†΅ν•œ λ©”μ‹œμ§€ κ΅ν™˜μœΌλ‘œ μ„œλ‘œ ν†΅μ‹ ν•œλ‹€.
  • P2P κ΅¬μ‘°μ—μ„œμ²˜λŸΌ Client도 μ„œλ²„ ν”„λ‘œμ„ΈμŠ€κ°€ 될 수 있고, μ„œλ²„λ„ client processκ°€ 될 수 μžˆλ‹€.
  • 솑신 ν”„λ‘œμ„ΈμŠ€ : λ©”μ‹œμ§€λ₯Ό λ§Œλ“€μ–΄μ„œ 보냄
  • μˆ˜μ‹  ν”„λ‘œμ„ΈμŠ€ : λ©”μ‹œμ§€λ₯Ό λ°›κ³  μ—­μœΌλ‘œ λ©”μ‹œμ§€λ₯Ό λ³΄λƒ„μœΌλ‘œμ¨ 응닡

Client, Server process

  • client process : process that initiates communication
    • μš”μ²­μ„ λ³΄λ‚΄λŠ” μͺ½μ˜ ν”„λ‘œμ„ΈμŠ€
  • server process : process that waits to be contacted
    • μš”μ²­μ„ λ°›λŠ” μͺ½μ˜ ν”„λ‘œμ„ΈμŠ€

Socket

processλŠ” socket을 톡해 λ„€νŠΈμ›Œν¬λ‘œ λ©”μ‹œμ§€λ₯Ό 보내고 λ°›λŠ”λ‹€. (λ¬Έ 같은 κ°œλ…)

  • 호슀트의 application 계측과 transport κ³„μΈ΅κ°„μ˜ μΈν„°νŽ˜μ΄μŠ€μ΄λ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμžλŠ” μ†ŒμΌ“μ˜ application 계측에 λŒ€ν•œ λͺ¨λ“  ν†΅μ œκΆŒμ„ κ°–μ§€λ§Œ, μ†ŒμΌ“μ˜ transport 계측에 λŒ€ν•œ ν†΅μ œκΆŒμ€ 거의 갖지 λͺ»ν•œλ‹€.
    • transport protocol을 선택
    • μ΅œλŒ€ 버퍼와 μ΅œλŒ€ μ„Έκ·Έλ¨ΌνŠΈ 크기 같은 μ•½κ°„μ˜ λ§€κ°œλ³€μˆ˜ μ„€μ •
  • sending process shoves message out door - 전솑 ν”„λ‘œμ„ΈμŠ€λŠ” λ©”μ‹œμ§€λ₯Ό λ°–μœΌλ‘œ λ°€μ–΄λ‚Έλ‹€.
  • Applicationκ³Ό network μ‚¬μ΄μ˜ API라고도 ν•œλ‹€.

Addressing processes

ν”„λ‘œμ„ΈμŠ€κ°€ μˆ˜ν–‰λ˜κ³  μžˆλŠ” λ‹€λ₯Έ νŒ¨ν‚·μœΌλ‘œ ν”„λ‘œμ„ΈμŠ€λ₯Ό 보내기 μœ„ν•΄μ„œλŠ” μˆ˜μ‹  ν”„λ‘œμ„ΈμŠ€κ°€ μ£Όμ†Œλ₯Ό κ°–κ³  μžˆμ–΄μ•Ό ν•œλ‹€. μˆ˜μ‹  ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹λ³„ν•˜κΈ° μœ„ν•΄μ„œλŠ” 두 가지 정보가 ν•„μš”ν•˜λ‹€.

IdentifierλŠ” IPμ£Όμ†Œμ™€ port numberλ₯Ό κ°–λŠ”λ‹€.

  1. 호슀트의 μ£Όμ†Œ 즉, IP μ£Όμ†Œκ°€ ν•„μš”ν•˜λ‹€.
    1. IP μ£Όμ†Œκ°€ identifierκ°€ λœλ‹€.
  2. 호슀트 λ‚΄μ˜ μˆ˜μ‹  ν”„λ‘œμ„ΈμŠ€λ₯Ό λͺ…μ‹œν•˜λŠ” μ‹λ³„μž. 즉 port λ²ˆν˜Έκ°€ ν•„μš”ν•˜λ‹€.
    1. 이 port 번호둜 λ‚΄ processλ₯Ό νŠΉμ •ν•  수 μžˆλ‹€.
    2. 같은 IP μ£Όμ†Œλ₯Ό 가진 μ—¬λŸ¬ applicationμ΄λ‚˜ processκ°€ λ™μ‹œμ— μˆ˜ν–‰λ  수 있기 λ•Œλ¬Έμ— port 번호둜 κ΅¬λΆ„ν•œλ‹€.
  • IPλ₯Ό 톡해 μ μ ˆν•œ computerλ₯Ό μ°ΎλŠ”λ‹€.

πŸ‘©πŸ»‍πŸ’» 2.1.3 An Application-layer protocol defines

application κ°œλ°œμžλŠ” μ†ŒμΌ“μ˜ application 계측에 λŒ€ν•œ λͺ¨λ“  ν†΅μ œκΆŒμ„ κ°–μ§€λ§Œ, μ†ŒμΌ“μ˜ transport 계측에 λŒ€ν•œ ν†΅μ œκΆŒμ€ 거의 갖지 λͺ»ν•œλ‹€. 즉, μ—¬κΈ°μ—μ„œλŠ” κ·Έ 쀑 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ–΄λ–€ transport serviceλ₯Ό μ΄μš©ν•  수 μžˆλŠ”μ§€μ— λŒ€ν•œ λ‚΄μš©μ΄λ‹€.

  1. Data integrity
    1. μ†μ‹€λ˜μ§€ μ•ŠλŠ” dataλ₯Ό 전솑
  2. throughput
    1. λ‹€λ₯Έ session듀이 network 경둜λ₯Ό 따라 λŒ€μ—­ν­μ„ κ³΅μœ ν•˜κ³ , 이 μ„Έμ…˜λ“€μ΄ 생겼닀 μ—†μ–΄μ‘Œλ‹€ ν•˜κΈ° λ•Œλ¬Έμ— κ°€λŠ₯ν•œ μ²˜λ¦¬μœ¨μ€ μ‹œκ°„μ— 따라 λ³€ν•œλ‹€. μ΄λŠ” μ–΄λŠ λͺ…μ‹œλœ μ†λ„μ—μ„œ 보μž₯된 κ°€μš© μ²˜λ¦¬μœ¨μ„ μ œκ³΅ν•œλ‹€.
    2. μ΄λŸ¬ν•œ 처리율 μš”κ΅¬μ‚¬ν•­ μ—¬λΆ€λ₯Ό κΈ°μ€€μœΌλ‘œ 두 κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€.
      1. effective app : 처리율 μš”κ΅¬μ‚¬ν•­μ΄ μžˆλŠ” 민감 application
      2. elastic app : 탄λ ₯적 application. 처리율 μš”κ΅¬μ‚¬ν•­μ΄ μ—†λ‹€.
  3. timing
    1. 예λ₯Ό λ“€μ–΄, 솑신기가 socket으둜 λ‚΄λ³΄λ‚΄λŠ” λͺ¨λ“  bitκ°€ μˆ˜μ‹ μžμ˜ socket에 100ms 내에 λ„μ°©ν•˜κ²Œ ν•  수 μžˆλ‹€. 주둜 μ‹€μ‹œκ°„ applicationμ—μ„œ μ‚¬μš©ν•œλ‹€.
  4. security
    1. dataλ₯Ό μ•”ν˜Έν™” ν•  수 μžˆλ‹€.

Internet transport protocols services

인터넷 전솑 ν”„λ‘œν† μ½œμ΄ μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€

  1. TCP μ„œλΉ„μŠ€
  2. UDP μ„œλΉ„μŠ€

TCP service

  • reliable transport
  • μ„œλ‘œ 전솑 μ œμ–΄ 정보λ₯Ό κ΅ν™˜ν•˜κ²Œ ν•œλ‹€.

UDP service

  • unreliable data transefer
  • hand shaking 과정이 μ—†κ³ , 데이터가 μ „λ‹¬λ˜λŠ” 것을 보μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.

TCP vs. UDP

  • TCPκ°€ UDP보닀 더 μœ μš©ν•˜μ§€λ§Œ, UDPλŠ” 더 λΉ λ₯΄λ‹€.
  • λ‘˜ λ‹€ 처리율 ν˜Ήμ€ μ‹œκ°„ 보μž₯ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • κ·Έλž˜μ„œ μ‹œκ°„ 민감 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 같은 경우, μ΄λŸ¬ν•œ 처리율 및 μ‹œκ°„ 지연에 잘 λŒ€μ²˜ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ–΄ μžˆλ‹€.

 

πŸ‘©πŸ»‍πŸ’» 2.1.5 Application layer: Protocol

λ‹€λ₯Έ 쒅단 μ‹œμŠ€ν…œμ—μ„œ μ‹€ν–‰λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ„œλ‘œ λ©”μ‹œμ§€ λ³΄λ‚΄λŠ” 방법을 μ •μ˜ν•œλ‹€.

  • κ΅ν™˜ λ©”μ‹œμ§€μ˜ νƒ€μž…
  • μ—¬λŸ¬ λ©”μ‹œμ§€ νƒ€μž…μ˜ λ¬Έλ²•(syntax)
  • ν•„λ“œμ˜ 의미, 즉 ν•„λ“œμ— μžˆλŠ” μ •λ³΄μ˜ μ˜λ―Έ(semantics)
  • μ–Έμ œ, μ–΄λ–»κ²Œ ν”„λ‘œμ„ΈμŠ€κ°€ λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•˜κ³  λ©”μ‹œμ§€μ— 응닡 ν•˜λŠ”μ§€λ₯Ό κ²°μ •ν•˜λŠ” κ·œμΉ™
728x90
λ°˜μ‘ν˜•

+ Recent posts