728x90
λ°˜μ‘ν˜•

πŸ“Œ 신뒰적 데이터 μ „μ†‘μ˜ 원리

μŠ¬λΌμ΄λ”© μœˆλ„μš°

κ³ μ • μ‚¬μ΄μ¦ˆμ˜ μœˆλ„μš°κ°€ μ΄λ™ν•˜λ©΄μ„œ μœˆλ„μš° 내에 μžˆλŠ” 데이터λ₯Ό μ΄μš©ν•΄ 문제λ₯Ό ν’€μ΄ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ λ§ν•©λ‹ˆλ‹€. 

λ°°μ—΄μ΄λ‚˜ 리슀트의 μš”μ†Œμ˜ 일정 λ²”μœ„μ˜ 값을 λΉ„κ΅ν• λ•Œ μ‚¬μš©ν•˜λ©΄ 맀우 μœ μš©ν•©λ‹ˆλ‹€. 

μ›λž˜ λ„€νŠΈμ›Œν¬μ—μ„œ μ‚¬μš©λ˜λ˜ μ•Œκ³ λ¦¬μ¦˜μ„ λ¬Έμ œν’€μ΄μ— μ‘μš©ν•œ 경우라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Go Back N

GBNμ—μ„œ μ†‘μ‹ μžλŠ” μ†‘μ‹ ν•œ νŒ¨ν‚·μ— λŒ€ν•œ 확인 응닡 없이, μ΅œλŒ€ N개의 νŒ¨ν‚·μ„ 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.

이λ₯Ό 크기가 N인 μœˆλ„μš°λ‘œ ν‘œν˜„ν•©λ‹ˆλ‹€. (N은 νλ¦„μ œμ–΄μ™€ ν˜Όμž‘μ œμ–΄μ— μ˜ν•΄ μ‘°μ •λœλ‹€.)

μ†‘μ‹ ν•œ νŒ¨ν‚·μ΄ μ˜¬λ°”λ₯΄κ²Œ μˆ˜μ‹ μΈ‘μ— λ„μ°©ν•˜μ—¬ 확인 응닡을 λ°›μœΌλ©΄, μœˆλ„μš°λŠ” μ•žμœΌλ‘œ μ΄λ™ν•˜κ³  λ‹€μŒ νŒ¨ν‚·μ„ μ „μ†‘ν•©λ‹ˆλ‹€.

이λ₯Ό μŠ¬λΌμ΄λ”© μœˆλ„μš° ν”„λ‘œν† μ½œ(sliding-window protocol)이라고 λΆ€λ¦…λ‹ˆλ‹€.

Selective Repeat

Selective Repeat ν”„λ‘œν† μ½œμ€ 손싀 λ˜κ±°λ‚˜ μ†μƒλœ νŒ¨ν‚·μ— λŒ€ν•΄μ„œλ§Œ μž¬μ „μ†‘ ν•©λ‹ˆλ‹€.

GBN처럼 μœˆλ„μš° 크기만큼 νŒ¨ν‚·λ“€μ„ μ „μ†‘ν•˜μ§€ μ•ŠλŠ”λ‹€. 즉, λΆˆν•„μš”ν•œ μž¬μ „μ†‘μ„ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

GBN μˆ˜μ‹ μžλŠ” λˆ„μ ν™•μΈ 응닡을 ν•˜μ§€ μ•ŠλŠ”λ‹€. μˆœμ„œλ²ˆν˜Έκ°€ μ•žμ„œλŠ” νŒ¨ν‚·μ΄ λ„μ°©ν•˜λ©΄ κ·ΈλŒ€λ‘œ μˆ˜μ‹ ν•©λ‹ˆλ‹€.

πŸ“Œ TCP

TCP

TCP (전솑 μ œμ–΄ ν”„λ‘œν† μ½œ)λŠ” 두 개의 호슀트λ₯Ό μ—°κ²°ν•˜κ³  데이터 μŠ€νŠΈλ¦Όμ„ κ΅ν™˜ν•˜κ²Œ ν•΄μ£ΌλŠ” λ„€νŠΈμ›Œν¬ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.

3 way handshake

3-way-handshakeλŠ” 신뒰적인 데이터 전솑을 보μž₯ν•˜κΈ° μœ„ν•΄ 3개의 νŒ¨ν‚·μ„ μ£Όκ³  λ°›μœΌλ©° 사전 μ—°κ²° 섀정을 μˆ˜λ¦½ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€.

4 way handshake

4개의 νŠΉλ³„ν•œ νŒ¨ν‚·μ„ μ£Όκ³  λ°›μœΌλ©° TCP 연결을 ν•΄μ œν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

TCP λΉ λ₯Έ μž¬μ „μ†‘

νƒ€μž„μ•„μ›ƒμ— μ˜ν•œ μž¬μ „μ†‘μ˜ λ¬Έμ œμ μ€ νƒ€μž„μ•„μ›ƒμ˜ μ£ΌκΈ°κ°€ λ•Œλ•Œλ‘œ κΈΈλ‹€λŠ” μ μž…λ‹ˆλ‹€.

λ‹€ν–‰νžˆλ„ μ†‘μ‹ μžλŠ” 쀑볡 ACK μˆ˜μ‹ μ„ 톡해 νƒ€μž„μ•„μ›ƒμ΄ μΌμ–΄λ‚˜κΈ° 전에 μ†‘μ‹ λœ νŒ¨ν‚·μ΄ μ†μ‹€λ˜μ—ˆμŒμ„ 인지할 수 μžˆμŠ΅λ‹ˆλ‹€.

μˆ˜μ‹ μžλŠ” μˆœμ„œκ°€ μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ μ„Έκ·Έλ¨ΌνŠΈλ₯Ό μˆ˜μ‹ ν•˜λ©΄, λ§ˆμ§€λ§‰μœΌλ‘œ μ˜¬λ°”λ₯΄κ²Œ μˆ˜μ‹ λœ μ„Έκ·Έλ¨ΌνŠΈμ— λŒ€ν•œ ACKλ₯Ό 솑신츑에 μ „μ†‘ν•©λ‹ˆλ‹€.

μ†‘μ‹ μžκ°€ λ§Œμ•½ 같은 μ„Έκ·Έλ¨ΌνŠΈμ— λŒ€ν•΄ 3개의 μ€‘λ³΅λœ ACKλ₯Ό μˆ˜μ‹ ν•˜κ²Œ 되면

ν•΄λ‹Ή ACK에 ν•΄λ‹Ήν•˜λŠ” μ„Έκ·Έλ¨ΌνŠΈκ°€ μ†μ‹€λ˜μ—ˆμŒμ„ μΈμ§€ν•˜κ²Œ μž¬μ „μ†‘μ„ ν•˜κ²Œλ©λ‹ˆλ‹€.

μ΄λŠ” νƒ€μž„μ•„μ›ƒμ— 상관없이 μ΄λ£¨μ–΄μ§€λ―€λ‘œ λΉ λ₯Έ μž¬μ „μ†‘μ΄λΌκ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Congestion control

λ„€νŠΈμ›Œν¬ ν˜Όμž‘μ„ 쀄이기 μœ„ν•΄ νŒ¨ν‚· 솑신 속도 즉, μ†‘μ‹ μΈ‘μ˜ μœˆλ„μš° 크기λ₯Ό μ‘°μ ˆν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€.

λ„€νŠΈμ›Œν¬κ°€ ν˜Όμž‘ν•΄μ§€λ©΄ 지연이 컀지고 νŒ¨ν‚· 손싀이 λ°œμƒν•©λ‹ˆλ‹€.

νŒ¨ν‚·μ΄ μ§€μ—°λ˜κ±°λ‚˜ μ†μ‹€λ˜λ©΄ μž¬μ „μ†‘μ΄ μ΄λ£¨μ–΄μ§€λŠ”λ°, μ΄λ ‡κ²Œ 되면 λ„€νŠΈμ›Œν¬λŠ” λ”μš± ν˜Όμž‘ν•΄μ§‘λ‹ˆλ‹€.

Flow control

μ†‘μ‹ μžκ°€ νŒ¨ν‚·μ„ λ³΄λ‚΄λŠ” 속도가 μˆ˜μ‹ μžκ°€ μˆ˜μ‹ λ²„νΌμ—μ„œ νŒ¨ν‚·μ„ μ½μ–΄λ“œλ¦¬λŠ” 속도보닀 λΉ λ₯Έκ²½μš°
μˆ˜μ‹  버퍼에 μ˜€λ²„ν”Œλ‘œμš°κ°€ μΌμ–΄λ‚˜ νŒ¨ν‚·μ„ μˆ˜μ‹ ν•  수 μ—†λŠ” 상황이 λ°œμƒν•©λ‹ˆλ‹€.

이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ†‘μ‹ μžκ°€ νŒ¨ν‚· 솑신 속도λ₯Ό μ‘°μ ˆν•˜λŠ” 것. 즉 μ†‘μ‹ μΈ‘μ˜ μœˆλ„μš° 크기λ₯Ό μ‘°μ ˆν•˜λŠ” 것을 flow control이라고 ν•©λ‹ˆλ‹€.
728x90
λ°˜μ‘ν˜•

+ Recent posts