Skip to content

Latest commit

Β 

History

History
191 lines (108 loc) Β· 12.3 KB

File metadata and controls

191 lines (108 loc) Β· 12.3 KB

TCP

  • 일반적으둜 TCP와 IPλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ”λ°, IPκ°€ λ°μ΄ν„°μ˜ 배달을 μ²˜λ¦¬ν•œλ‹€λ©΄ TCPλŠ” νŒ¨ν‚·μ„ 좔적 및 κ΄€λ¦¬ν•œλ‹€.
  • μ‹ λ’°μ„± μžˆλŠ” 데이터 전솑을 μ§€μ›ν•˜λŠ” μ—°κ²° 지ν–₯ν˜• ν”„λ‘œν† μ½œμ΄λ‹€.
  • 사전에 3-way handshakeλΌλŠ” 과정을 톡해 연결을 μ„€μ •ν•˜κ³  톡신을 μ‹œμž‘ν•œλ‹€.
  • 4-way handshake 과정을 톡해 연결을 ν•΄μ œ(가상 νšŒμ„  방식)ν•œλ‹€.
  • 흐름 μ œμ–΄, 혼작 μ œμ–΄, 였λ₯˜ μ œμ–΄λ₯Ό 톡해 신뒰성을 보μž₯ν•œλ‹€. κ·ΈλŸ¬λ‚˜ 이 λ•Œλ¬Έμ— UDP보닀 전솑 속도가 λŠλ¦¬λ‹€λŠ” 단점이 μžˆλ‹€.
  • λ°μ΄ν„°μ˜ 전솑 μˆœμ„œλ₯Ό 보μž₯ν•˜λ©° μˆ˜μ‹  μ—¬λΆ€λ₯Ό 확인할 수 μžˆλ‹€.
  • TCPλ₯Ό μ‚¬μš©ν•˜λŠ” μ˜ˆλ‘œλŠ” λŒ€λΆ€λΆ„μ˜ μ›Ή HTTP 톡신, 이메일, 파일 전솑에 μ‚¬μš©λœλ‹€.
  • TCPκ°€ κ°€μƒνšŒμ„  방식을 μ œκ³΅ν•œλ‹€λŠ” 것은 솑신츑과 μˆ˜μ‹ μΈ‘μ„ μ—°κ²°ν•˜μ—¬ νŒ¨ν‚·μ„ μ „μ†‘ν•˜κΈ° μœ„ν•œ 논리적 경둜λ₯Ό λ°°μ •ν•œλ‹€λŠ” λœ»μ΄λ‹€.

νŒ¨ν‚·(Packet)?

  • 인터넷 λ‚΄μ—μ„œ 데이터λ₯Ό 보내기 μœ„ν•œ 경둜 λ°°μ •(λΌμš°νŒ…)을 효율적으둜 ν•˜κΈ° μœ„ν•΄μ„œ 데이터λ₯Ό μ—¬λŸ¬ 개의 쑰각으둜 λ‚˜λˆ„μ–΄ 전솑을 ν•˜λŠ”λ°, μ΄λ•Œ 쑰각을 νŒ¨ν‚·μ΄λΌκ³  ν•œλ‹€.

TCPλŠ” νŒ¨ν‚·μ„ μ–΄λ–»κ²Œ 좔적 및 κ΄€λ¦¬ν•˜λŠ”κ°€?

  • λ°μ΄ν„°λŠ” νŒ¨ν‚· λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ 같은 λͺ©μ μ§€(IP 계측)으둜 μ „μ†‘λœλ‹€.

Ex) ν•œ μ€„λ‘œ μ„œμ•Ό ν•˜λŠ” A,B,CλΌλŠ” μ‚¬λžŒ(νŒ¨ν‚·)이 μ„œμšΈ(솑신츑)μ—μ„œ μΆœλ°œν•˜μ—¬ λΆ€μ‚°(μˆ˜μ‹ μΈ‘)으둜 κ°€μ•Όν•œλ‹€κ³  κ°€μ •ν•˜λ‹€.

A,B,Cκ°€ 순차적으둜 κ°€λŠ” μƒν™©μ—μ„œ Bκ°€ 길을 잘λͺ» λ“€μ–΄μ„œ λΆ„μ‹€λ˜μ—ˆλ‹€.

ν•˜μ§€λ§Œ λͺ©μ μ§€μ—μ„œλŠ” A,B,Cκ°€ λͺ¨λ‘ ν•„μš”ν•œμ§€ λͺ¨λ₯΄κ³  A,C만 보고 λ‹€ μ™”λ‹€κ³  착각할 수 μžˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— A,B,CλΌλŠ” νŒ¨ν‚·μ— 1,2,3μ΄λΌλŠ” 번호λ₯Ό λΆ€μ—¬ν•˜μ—¬ νŒ¨ν‚·μ˜ λΆ„μ‹€ 확인 처리λ₯Ό ν•˜κΈ° μœ„ν•΄ λͺ©μ μ§€μ—μ„œ νŒ¨ν‚·μ„ μž¬μ‘°λ¦½ν•œλ‹€.

이런 λ°©μ‹μœΌλ‘œ TCPλŠ” νŒ¨ν‚·μ„ μΆ”μ ν•˜λ©°, λ‚˜λˆ„μ–΄ 보내진 데이터λ₯Ό λͺ©μ μ§€μ—μ„œ λ°›κ³  μž¬μ‘°λ¦½ν•  수 있게 λœλ‹€.

흐름 μ œμ–΄

  • 솑신츑과 μˆ˜μ‹ μΈ‘ μ‚¬μ΄μ˜ 데이터 처리 속도 차이(흐름)을 ν•΄κ²°ν•˜κΈ° μœ„ν•œ 기법.
  • λ§Œμ•½, μ†‘μ‹ μΈ‘μ˜ μ „μ†‘λŸ‰ > μˆ˜μ‹ μΈ‘μ˜ μ²˜λ¦¬λŸ‰μΌ 경우 μ „μ†‘λœ νŒ¨ν‚·μ€ μˆ˜μ‹ μΈ‘μ˜ 큐λ₯Ό λ„˜μ–΄μ„œ 손싀될 수 있기 λ•Œλ¬Έμ— μ†‘μ‹ μΈ‘μ˜ νŒ¨ν‚· μ „μ†‘λŸ‰μ„ μ œμ–΄ν•˜κ²Œ λœλ‹€.
  1. Stop and Wait(정지 - λŒ€κΈ°)
  • 맀번 μ „μ†‘ν•œ νŒ¨ν‚·μ— λŒ€ν•œ 확인 응닡을 λ°›μ•„μ•Ό κ·Έ λ‹€μŒ νŒ¨ν‚·μ„ 전솑할 수 μžˆλ‹€.
  • μ΄λŸ¬ν•œ ꡬ쑰 λ•Œλ¬Έμ— λΉ„νš¨μœ¨μ μ΄λ‹€. (단점)
  • Give & Take.
  1. Sliding Window(μŠ¬λΌμ΄λ”© μœˆλ„μš°)
  • (솑신츑 = 전솑츑)

  • μˆ˜μ‹ μΈ‘μ—μ„œ μ„€μ •ν•œ μœˆλ„μš° 크기만큼 μ†‘μ‹ μΈ‘μ—μ„œ 확인 응닡 없이 μ„Έκ·Έλ¨ΌνŠΈλ₯Ό 전솑할 수 있게 ν•˜μ—¬ 데이터 흐름을 λ™μ μœΌλ‘œ μ‘°μ ˆν•˜λŠ” 기법이닀.

  • μœˆλ„μš° : 솑신, μˆ˜μ‹  μŠ€ν…Œμ΄μ…˜ μ–‘μͺ½μ—μ„œ λ§Œλ“€μ–΄μ§„ λ²„νΌμ˜ 크기.

  • Stop and Wait의 λΉ„νš¨μœ¨μ„±μ„ κ°œμ„ ν•œ 기법

  • μ†‘μ‹ μΈ‘μ—μ„œλŠ” Ack ν”„λ ˆμž„μ„ μˆ˜μ‹ ν•˜μ§€ μ•Šλ”λΌλ„ μ—¬λŸ¬ 개의 ν”„λ ˆμž„μ„ μ—°μ†μ μœΌλ‘œ 전솑할 수 μžˆλ‹€.

  • μ†‘μ‹ μΈ‘μ—μ„œ 0,1,2,3,4,5,6을 보낼 수 μžˆλŠ” ν”„λ ˆμž„μ„ 가지고 있고 데이터 0,1을 μ „μ†‘ν–ˆλ‹€κ³  κ°€μ •ν•˜λ©΄ μŠ¬λΌμ΄λ”© μœˆλ„μš°μ˜ κ΅¬μ‘°λŠ” 2,3,4,5,6처럼 λ³€ν•˜κ²Œ λœλ‹€.

  • μ΄λ•Œ, λ§Œμ•½ μˆ˜μ‹ μΈ‘μœΌλ‘œλΆ€ν„° ACKλΌλŠ” ν”„λ ˆμž„μ„ λ°›κ²Œ λœλ‹€λ©΄ 솑신츑은 이전에 보낸 데이터 0,1을 μˆ˜μ‹ μΈ‘μ—μ„œ μ •μƒμ μœΌλ‘œ λ°›μ•˜μŒμ„ μ•Œκ²Œ 되고 μ†‘μ‹ μΈ‘μ˜ μŠ¬λΌμ΄λ”© μœˆλ„μš°λŠ” ACK ν”„λ ˆμž„μ— λ”°λ₯Έ ν”„λ ˆμž„μ˜ 수만큼 였λ₯Έμͺ½μœΌλ‘œ 경계가 ν™•μž₯λœλ‹€.

였λ₯˜ μ œμ–΄

  • 였λ₯˜ κ²€μΆœκ³Ό μž¬μ „μ†‘μ„ ν¬ν•¨ν•œλ‹€.
  • ARQ(Automatic Repeat Request) 기법을 μ‚¬μš©ν•΄ ν”„λ ˆμž„μ΄ μ†μƒλ˜μ—ˆκ±°λ‚˜ μ†μ‹€λ˜μ—ˆμ„ 경우, μž¬μ „μ†‘μ„ 톡해 였λ₯˜λ₯Ό λ³΅κ΅¬ν•œλ‹€.
  • ARQ 기법은 흐름 μ œμ–΄ 기법과 κ΄€λ ¨λ˜μ–΄ μžˆλ‹€.
  1. Stop and Wait ARQ
  • μ†‘μ‹ μΈ‘μ—μ„œ 1개의 ν”„λ ˆμž„μ„ μ†‘μ‹ ν•˜κ³ , μˆ˜μ‹ μΈ‘μ—μ„œ μˆ˜μ‹ λœ ν”„λ ˆμž„μ˜ μ—λŸ¬ 유무 νŒλ‹¨μ— 따라 ACK or NAKλ₯Ό λ³΄λ‚΄λŠ” 방식이닀.
  • 식별을 μœ„ν•΄ 데이터 ν”„λ ˆμž„κ³Ό ACK ν”„λ ˆμž„μ€ 각가 0,1 번호λ₯Ό λ²ˆκ°ˆμ•„κ°€λ©° λΆ€μ—¬ν•œλ‹€.
  • μˆ˜μ‹ μΈ‘μ΄ 데이터λ₯Ό 받지 λͺ»ν–ˆμ„ 경우, NAKλ₯Ό 보내고 NAKλ₯Ό 받은 솑신츑은 데이터λ₯Ό μž¬μ „μ†‘ν•œλ‹€.
  • λ§Œμ•½, λ°μ΄ν„°λ‚˜ ACKκ°€ λΆ„μ‹€λ˜μ—ˆμ„ 경우 일정 κ°„κ²©μ˜ μ‹œκ°„μ„ 두고 νƒ€μž„μ•„μ›ƒμ΄ 되면, 솑신츑은 데이터λ₯Ό μž¬μ „μ†‘ν•œλ‹€.
  1. Go-Back-n ARQ(μŠ¬λΌμ΄λ”© μœˆλ„μš°)
  • μ „μ†‘λœ ν”„λ ˆμž„μ΄ μ†μƒλ˜κ±°λ‚˜ λΆ„μ‹€λœ 경우 그리고 ACK νŒ¨ν‚·μ˜ μ†μ‹€λ‘œ μΈν•œ TIME_OUT이 λ°œμƒν•œ 경우, ν™•μΈλœ λ§ˆμ§€λ§‰ ν”„λ ˆμž„ μ΄ν›„λ‘œ λͺ¨λ“  ν”„λ ˆμž„μ„ μž¬μ „μ†‘ν•œλ‹€.
  • μŠ¬λΌμ΄λ”© μœˆλ„μš°λŠ” 연속적인 ν”„λ ˆμž„ 전솑 κΈ°λ²•μœΌλ‘œ 전솑츑은 μ „μ†‘λœ λͺ¨λ“  ν”„λ ˆμž„μ˜ 볡사본을 가지고 μžˆμ–΄μ•Ό ν•˜λ©°, ACK와 NAK λͺ¨λ‘ 각각 ꡬ별해야 ν•œλ‹€.
  • ACK : λ‹€μŒ ν”„λ ˆμž„μ„ 전솑.
  • NAK : μ†μƒλœ ν”„λ ˆμž„ 자체 번호λ₯Ό λ°˜ν™˜.

[μž¬μ „μ†‘ λ˜λŠ” 경우]

(1). NAK ν”„λ ˆμž„μ„ λ°›μ•˜μ„ 경우.

  • λ§Œμ•½, μˆ˜μ‹ μΈ‘μœΌλ‘œ 0~5κΉŒμ§€μ˜ 데이터λ₯Ό λ³΄λƒˆλ‹€κ³  κ°€μ •ν•˜μž.
  • μˆ˜μ‹ μΈ‘μ—μ„œ 데이터λ₯Ό λ°›μ•˜μŒμ„ ν™•μΈν•˜λŠ” ACK ν”„λ ˆμž„μ„ 쀑간 쀑간 λ³΄λ‚΄κ²Œ 되며, ACK ν”„λ ˆμž„μ„ ν™•μΈν•œ 전솑츑은 κ³„μ†ν•΄μ„œ 데이터λ₯Ό μ „μ†‘ν•œλ‹€.
  • κ·ΈλŸ¬λ‚˜ λ§Œμ•½ μˆ˜μ‹ μΈ‘μ—μ„œ 데이터 였λ₯˜ ν”„λ ˆμž„ 2λ₯Ό λ°œκ²¬ν•˜κ³  NAK2λ₯Ό 전솑츑에 보낸닀고 ν•΄λ³΄μž.
  • NAK2λ₯Ό 받은 전솑츑은 데이터 ν”„λ ˆμž„ 2κ°€ 잘λͺ»λ˜μ—ˆλ‹€λŠ” 것을 μ•Œκ³  데이터λ₯Ό μž¬μ „μ†‘ν•œλ‹€.
  • GBn ARQ의 νŠΉμ§•μ€ 데이터λ₯Ό μž¬μ „μ†‘ν•˜λŠ” 뢀뢄이닀. NAK(n)λ₯Ό λ°›μ•„ n 데이터 μ΄ν›„μ˜ λͺ¨λ“  데이터λ₯Ό μž¬μ „μ†‘ν•œλ‹€.

(2). 전솑 데이터 ν”„λ ˆμž„μ˜ λΆ„μ‹€

  • GBn ARQ의 νŠΉμ§•μ€ ν™•μΈλœ 데이터 μ΄ν›„μ˜ λͺ¨λ“  데이터 ν”„λ ˆμž„ μž¬μ „μ†‘κ³Ό μˆ˜μ‹ μΈ‘μ˜ 폐기이닀.
  • μˆ˜μ‹ μΈ‘μ—μ„œ 데이터 1을 λ°›κ³  λ‹€μŒ λ°μ΄ν„°λ‘œ 3을 λ°›κ²Œ λœλ‹€λ©΄ 데이터 2λ₯Ό 받지 λͺ»ν–ˆμœΌλ―€λ‘œ μˆ˜μ‹ μΈ‘μ—μ„œλŠ” 데이터 3을 νκΈ°ν•˜κ³  데이터 2λ₯Ό 받지 λͺ»ν–ˆλ‹€λŠ” NAK2λ₯Ό 전솑츑에 보낸닀.
  • NAKλ₯Ό 받은 전솑츑은 (1) κ²½μš°μ™€ 같이 NAK(n) λ°μ΄ν„°λ‘œλΆ€ν„° λͺ¨λ“  데이터λ₯Ό μž¬μ „μ†‘ν•˜λ©° μˆ˜μ‹ μΈ‘μ€ 기쑴에 λ°›μ•˜λ˜ 데이터 쀑 NAK(n)으둜 λ³΄λƒˆλ˜ λŒ€μƒ 데이터 μ΄ν›„μ˜ λͺ¨λ“  데이터λ₯Ό νκΈ°ν•˜κ³  μž¬μ „μ†‘ λ°›λŠ”λ‹€.

(3). μ§€μ •λœ νƒ€μž„ 아웃 λ‚΄μ˜ ACK ν”„λ ˆμž„ λΆ„μ‹€(Lost ACK)

  • 전솑츑은 λΆ„μ‹€λœ ACKλ₯Ό 닀루기 μœ„ν•΄ 타이머λ₯Ό 가지고 μžˆλ‹€.
  • μ „μ†‘μΈ‘μ—μ„œλŠ” 이 νƒ€μ΄λ¨Έμ˜ νƒ€μž„ 아웃 λ™μ•ˆ μˆ˜μ‹ μΈ‘μœΌλ‘œλΆ€ν„° ACK 데이터λ₯Ό 받지 λͺ»ν–ˆμ„ 경우, λ§ˆμ§€λ§‰ ACK된 데이터뢀터 μž¬μ „μ†‘ν•œλ‹€.

  • 전솑츑은 NAK γ…ν”„λ ˆμž„μ„ λ°›μ•˜μ„ 경우, NAK ν”„λ ˆμž„ λ²ˆν˜ΈλΆ€ν„° 데이터λ₯Ό μž¬μ „μ†‘ν•œλ‹€.
  • μˆ˜μ‹ μΈ‘μ€ μ›ν•˜λŠ” ν”„λ ˆμž„μ΄ 아닐 경우, 데이터λ₯Ό λͺ¨λ‘ 폐기 μ²˜λ¦¬ν•œλ‹€.
  • νƒ€μž„μ•„μ›ƒ(ACK λΆ„μ‹€)의 경우, λ§ˆμ§€λ§‰ ACK된 데이터뢀터 μž¬μ „μ†‘ν•œλ‹€.
  1. SR(Selective-Reject) ARQ
  • GBn ARQ의 ν™•μΈλœ λ§ˆμ§€λ§‰ ν”„λ ˆμž„ μ΄ν›„μ˜ λͺ¨λ“  ν”„λ ˆμž„μ„ μž¬μ „μ†‘ν•˜λŠ” 단점을 λ³΄μ™„ν•œ 기법이닀.
  • SR ARQλŠ” μ†μƒλœ, μ†μ‹€λœ ν”„λ ˆμž„λ§Œ μž¬μ „μ†‘ν•œλ‹€.
  • κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λ³„λ„μ˜ 데이터 μž¬μ •λ ¬μ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜λ©°, λ³„λ„μ˜ 버퍼λ₯Ό ν•„μš”λ‘œ ν•œλ‹€.
  • μˆ˜μ‹ μΈ‘μ— 버퍼λ₯Ό 두어 받은 λ°μ΄ν„°μ˜ 정렬이 ν•„μš”ν•˜λ‹€.

혼작 μ œμ–΄

  • μ†‘μ‹ μΈ‘μ˜ 데이터 전달과 λ„€νŠΈμ›Œν¬μ˜ 데이터 처리 속도λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 기법이닀.
  • ν•œ λΌμš°ν„°μ—κ²Œ 데이터가 λͺ°λ € λͺ¨λ“  데이터λ₯Ό μ²˜λ¦¬ν•  수 μ—†λŠ” 경우, ν˜ΈμŠ€νŠΈλ“€μ€ μž¬μ „μ†‘μ„ ν•˜κ²Œ 되고 κ²°κ΅­ 혼작만 κ°€μ€‘μ‹œμΌœ μ˜€λ²„ν”Œλ‘œμš°λ‚˜ 데이터 손싀이 λ°œμƒν•œλ‹€.
  • μ΄λŸ¬ν•œ λ„€νŠΈμ›Œν¬μ˜ ν˜Όμž‘μ„ ν”Όν•˜κΈ° μœ„ν•΄ μ†‘μ‹ μΈ‘μ—μ„œ λ³΄λ‚΄λŠ” λ°μ΄ν„°μ˜ 전솑 속도λ₯Ό μ œμ–΄ν•˜λŠ” 것이 혼작 μ œμ–΄μ˜ κ°œλ…μ΄λ‹€.
  1. AIMD(Additive Increase Multicative Decrease)
  • ν•© 증가 / κ³± κ°μ†Œ μ•Œκ³ λ¦¬μ¦˜μ΄λΌκ³  ν•œλ‹€.
  • μ²˜μŒμ— νŒ¨ν‚· ν•˜λ‚˜λ₯Ό λ³΄λ‚΄λŠ” κ²ƒμœΌλ‘œ μ‹œμž‘ν•˜μ—¬ μ „μ†‘ν•œ νŒ¨ν‚·μ΄ 문제 없이 λ„μ°©ν•œλ‹€λ©΄ Window Sizeλ₯Ό 1μ”© μ¦κ°€μ‹œν‚€λ©° μ „μ†‘ν•˜λŠ” 방법이닀. λ§Œμ•½, νŒ¨ν‚· 전솑을 μ‹€νŒ¨ν•˜κ±°λ‚˜ TIME_OUT이 λ°œμƒν•˜λ©΄ Window Sizeλ₯Ό 절반으둜 κ°μ†Œμ‹œν‚¨λ‹€.
  • 이 방식은 κ³΅ν‰ν•˜λ‹€.
    • μ—¬λŸ¬ ν˜ΈμŠ€νŠΈκ°€ ν•œ λ„€νŠΈμ›Œν¬λ₯Ό κ³΅μœ ν•˜κ³  있으면 λ‚˜μ€‘μ— μ§„μž…ν•˜λŠ” μͺ½μ΄ μ²˜μŒμ—λŠ” λΆˆλ¦¬ν•˜μ§€λ§Œ, μ‹œκ°„μ΄ 흐λ₯΄λ©΄ ν‰ν˜• μƒνƒœλ‘œ μˆ˜λ ΄ν•˜κ²Œ λ˜λŠ” νŠΉμ§•μ΄ μžˆλ‹€.
  • λ¬Έμ œμ μ€ 초기 λ„€νŠΈμ›Œν¬μ˜ 높은 λŒ€μ—­ν­μ„ μ‚¬μš©ν•˜μ§€ λͺ»ν•˜κ³  λ„€νŠΈμ›Œν¬κ°€ ν˜Όμž‘ν•΄μ§€λŠ” 상황을 미리 κ°μ§€ν•˜μ§€ λͺ»ν•˜μ—¬ ν˜Όμž‘ν•΄μ§€κ³  λ‚˜μ„œμ•Ό λŒ€μ—­ν­μ„ μ€„μ΄λŠ” 방식이닀.
  1. Slow Start
  • AIMDκ°€ λ„€νŠΈμ›Œν¬μ˜ μˆ˜μš©λŸ‰ μ£Όλ³€μ—μ„œλŠ” 효율적으둜 λ™μž‘ν•˜μ§€λ§Œ, μ²˜μŒμ— 전솑 속도λ₯Ό μ˜¬λ¦¬λŠ” 데 μ‹œκ°„μ΄ λ„ˆλ¬΄ κΈΈλ‹€λŠ” 단점이 μžˆλ‹€.
  • Slow StartλŠ” AIMD와 λ§ˆμ°¬κ°€μ§€λ‘œ νŒ¨ν‚·μ„ ν•˜λ‚˜μ”© λ³΄λ‚΄λŠ” 것뢀터 μ‹œμž‘ν•œλ‹€. 이 방식은 νŒ¨ν‚·μ΄ 문제 없이 λ„μ°©ν•˜λ©΄ 각각의 ACK νŒ¨ν‚·λ§ˆλ‹€ Window Sizeλ₯Ό 1μ”© λŠ˜λ¦°λ‹€. 즉, ν•œ μ£ΌκΈ°κ°€ μ§€λ‚˜λ©΄ Window SizeλŠ” 2λ°°κ°€ λœλ‹€.
  • λ”°λΌμ„œ κ·Έλž˜ν”„μ˜ λͺ¨μ–‘은 μ§€μˆ˜ ν•¨μˆ˜ 꼴이 λœλ‹€.
  • 혼작 ν˜„μƒμ΄ λ°œμƒν•˜λ©΄ Window Sizeλ₯Ό 1둜 λ–¨μ–΄λœ¨λ¦°λ‹€.
  • μ²˜μŒμ—λŠ” λ„€νŠΈμ›Œν¬μ˜ μˆ˜μš©λŸ‰μ„ μ˜ˆμΈ‘ν•  수 μžˆλŠ” 정보가 μ—†μ§€λ§Œ ν•œλ²ˆ 혼작 ν˜„μƒμ΄ λ°œμƒν•˜κ³  λ‚˜λ©΄ λ„€νŠΈμ›Œν¬μ˜ μˆ˜μš©λŸ‰μ„ μ–΄λŠμ •λ„ μ˜ˆμƒν•  수 μžˆμœΌλ―€λ‘œ 혼작 ν˜„μƒμ΄ λ°œμƒν•˜μ˜€λ˜ Window Size의 μ ˆλ°˜κΉŒμ§€λŠ” μ΄μ „μ²˜λŸΌ μ§€μˆ˜ ν•¨μˆ˜ 꼴둜 Window Sizeλ₯Ό μ¦κ°€μ‹œν‚€κ³  κ·Έ μ΄ν›„λΆ€ν„°λŠ” μ™„λ§Œν•˜κ²Œ 1μ”© μ¦κ°€μ‹œν‚€λŠ” 방식이닀.

  • 미리 정해진 μž„κ³„κ°’(threshold)에 도달할 λ•ŒκΉŒμ§€ μœˆλ„μš°μ˜ 크기λ₯Ό 2λ°°μ”© μ¦κ°€μ‹œν‚¨λ‹€.
  • Slow StartλΌλŠ” 이름을 μ‚¬μš©ν•˜μ§€λ§Œ, 맀 μ „μ†‘λ§ˆλ‹€ 2λ°°μ”© μ¦κ°€ν•˜κΈ° λ•Œλ¬Έμ— μ „μ†‘λ˜μ–΄μ§€λŠ” λ°μ΄ν„°μ˜ ν¬κΈ°λŠ” μ§€μˆ˜ν•¨μˆ˜μ μœΌλ‘œ μ¦κ°€ν•œλ‹€.
  • μ „μ†‘λ˜λŠ” λ°μ΄ν„°μ˜ 크기가 μž„κ³„ 값에 λ„λ‹¬ν•˜λ©΄ 혼작 νšŒν”Ό λ‹¨κ³„λ‘œ λ„˜μ–΄κ°„λ‹€.

[혼작 νšŒν”Ό(Congestion Avoidance)]

  • μœˆλ„μš°μ˜ 크기가 μž„κ³„ 값에 λ„λ‹¬ν•œ μ΄ν›„μ—λŠ” λ°μ΄ν„°μ˜ 손싀이 λ°œμƒν•  ν™•λ₯ μ΄ 높아진닀.
  • λ”°λΌμ„œ 이λ₯Ό νšŒν”Όν•˜κΈ° μœ„ν•΄ μœˆλ„μš° 크기λ₯Ό μ„ ν˜•μ μœΌλ‘œ 1μ”© μ¦κ°€μ‹œν‚€λŠ” 방법이닀.
  • μˆ˜μ‹ μΈ‘μœΌλ‘œλΆ€ν„° 일정 μ‹œκ°„ λ™μ•ˆκΉŒμ§€ ACKλ₯Ό μˆ˜μ‹ ν•˜μ§€ λͺ»ν•˜λŠ” 경우.
    • νƒ€μž„ μ•„μ›ƒμ˜ λ°œμƒ : λ„€νŠΈμ›Œν¬ 혼작이 λ°œμƒν–ˆλ‹€κ³  인식.
    • 혼작 μƒνƒœλ‘œ μΈμ‹λœ 경우
      • μœˆλ„μš°μ˜ 크기λ₯Ό 즉, μ„Έκ·Έλ¨ΌνŠΈμ˜ 수λ₯Ό 1둜 κ°μ†Œμ‹œν‚¨λ‹€.
      • λ™μ‹œμ— μž„κ³„κ°’μ„ νŒ¨ν‚· 손싀이 λ°œμƒν–ˆμ„ λ•Œμ˜ μœˆλ„μš° 크기의 절반으둜 쀄인닀.

[λΉ λ₯Έ 회볡(Fast Recovery)]

  • ν˜Όμž‘ν•œ μƒνƒœκ°€ 되면 Window Sizeλ₯Ό 1둜 쀄이지 μ•Šκ³  절반으둜 쀄이고 μ„ ν˜• μ¦κ°€μ‹œν‚€λŠ” 방법이닀.
  • λΉ λ₯Έ 회볡 μ •μ±…κΉŒμ§€ μ μš©ν•˜λ©΄ 혼작 상황을 ν•œλ²ˆ κ²ͺκ³  λ‚˜μ„œλΆ€ν„°λŠ” μˆœμˆ˜ν•œ AIMD λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜κ²Œ λœλ‹€.

[λΉ λ₯Έ μž¬μ „μ†‘(Fast Retransmit)]

  • μˆ˜μ‹ μΈ‘μ—μ„œ νŒ¨ν‚·μ„ 받을 λ•Œ λ¨Όμ € 도착해야 ν•  νŒ¨ν‚·μ΄ λ„μ°©ν•˜μ§€ μ•Šκ³  λ‹€μŒ νŒ¨ν‚·μ΄ λ„μ°©ν•œ κ²½μš°μ—λ„ ACK νŒ¨ν‚·μ„ 보낸닀. 단, μˆœμ„œλŒ€λ‘œ 잘 λ„μ°©ν•œ λ§ˆμ§€λ§‰ νŒ¨ν‚·μ˜ λ‹€μŒ νŒ¨ν‚·μ˜ μˆœλ²ˆμ„ ACK νŒ¨ν‚·μ— μ‹€μ–΄μ„œ 보낸닀. λ”°λΌμ„œ 쀑간에 νŒ¨ν‚· ν•˜λ‚˜κ°€ μ†μ‹€λ˜λ©΄ μ†‘μ‹ μΈ‘μ—μ„œλŠ” 순번이 μ€‘λ³΅λœ ACK νŒ¨ν‚·μ„ λ°›κ²Œ λœλ‹€. 이것을 κ°μ§€ν•˜λ©΄ λ¬Έμ œκ°€ λ˜λŠ” 순번의 νŒ¨ν‚·μ„ μž¬μ „μ†‘ν•  수 μžˆλ‹€.
  • λΉ λ₯Έ μž¬μ „μ†‘μ€ μ€‘λ³΅λœ 순번의 νŒ¨ν‚·μ„ 3개(3 ACK) λ°›μœΌλ©΄ μž¬μ „μ†‘ν•œλ‹€. 그리고 μ΄λŸ¬ν•œ ν˜„μƒμ΄ μΌμ–΄λ‚˜λŠ” 것은 μ•½κ°„μ˜ 혼작이 λ°œμƒν•œ κ²ƒμœΌλ‘œ κ°„μ£Όν•˜μ—¬ Window Sizeλ₯Ό 절반으둜 쀄인닀.