[ํผ์ ๊ณต๋ถํ๋ ๋คํธ์ํฌ] 4์ฅ. ์ ์ก ๊ณ์ธต
์ ์ก ๊ณ์ธต ๊ฐ์: IP์ ํ๊ณ์ ํฌํธ
์ ์ก ๊ณ์ธต์ ๋คํธ์ํฌ ๊ณ์ธต๊ณผ ์์ฉ ๊ณ์ธต ์ฌ์ด์ ์กด์ฌํจ
- IP ํ๊ณ ๋ณด์: ์ ๋ขฐํ ์ ์๋ ํต์ ๊ณผ ์ฐ๊ฒฐํ ํต์ ๊ธฐ๋ฅ ์ ๊ณต
- ์์ฉ ๊ณ์ธต์ ํ๋ก์ธ์ค ์๋ณ: ํฌํธ ๋ฒํธ ํ์ฉ
IP ํ๊ณ
- IP๋ ์ ๋ขฐํ ์ ์๋ (๋น์ ๋ขฐ์ฑ) ํ๋กํ ์ฝ(unreliable protocol)
- ํจํท์ด ์์ ์ง๊น์ง ์ ๋๋ก ์ ์ก๋์๋ค๋ ๋ณด์ฅ์ ํ์ง ์์
- ํต์ ๊ณผ์ ์์ ํจํท์ด ์๋ชป ์ ์ก๋์ด๋ ์ด๋ฅผ ํ์ธํ์ง ์๊ณ , ์ฌ์ ์ก๋ ํ์ง ์์ผ๋ฉฐ, ์์๋๋ก ํจํท์ด ๋์ฐฉํ ๊ฒ์ด๋ผ๋ ๋ณด์ฅ๋ ํ์ง ์๋๋ค๋ ์๋ฏธ
- ์ต์ ํ ์ ๋ฌ(best effort delivery)
- IP๋ ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ(connectionless protocol)
- ์ก์์ ํธ์คํธ ๊ฐ์ ์ฌ์ ์ฐ๊ฒฐ ์๋ฆฝ ์์ ์ ๊ฑฐ์น์ง ์์
- ๊ทธ์ ์์ ์ง๋ฅผ ํฅํด ํจํท์ ๋ณด๋ด๊ธฐ๋ง ํ ๋ฟ
- IP ํจํท์ ์ ๋ฌ = ์ ๋ขฐ์ฑ์ด ์๋ ํต์ + ๋น์ฐ๊ฒฐํ ํต์
- IP๊ฐ ์ ๋ขฐํ ์ ์๋, ๋น์ฐ๊ฒฐํ ํต์ ์ ํ๋ ์ด์ ๋, '์ฑ๋ฅ'๋๋ฌธ์
- ์ ๋ขฐํ ์ ์๋ ํต์ ์ ํจํท์ ํ๋ํ๋ ํ์ธ์ ํด์ผ ํ๋ฏ๋ก ์ฑ๋ฅ์ ์ ์ํฅ์ ์ค ์ ์์
- ์ ๋ขฐ์ฑ ์๋ ์ ์ก์ด ๋ชจ๋ ๊ฒฝ์ฐ์ ํ์ํ ๊ฒ์ ์๋
ICMP: IP์ ์ ์ก ํน์ฑ์ ๋ณด์ํ๋ ๋คํธ์ํฌ ๊ณ์ธต ํ๋กํ ์ฝ
- IP ํจํท ์ ์ก ๊ณผ์ ์ ๋ํ ํผ๋๋ฐฑ ๋ฉ์์ง ์ ๊ณต
- ํผ๋๋ฐฑ ๋ฉ์์ง
- ์ ์ก ๊ณผ์ ์์ ๋ฐ์ํ ๋ฌธ์ ์ํฉ์ ๋ํ ์ค๋ฅ ๋ณด๊ณ
- ๋คํธ์ํฌ์ ๋ํ ์ง๋จ ์ ๋ณด(๋คํธ์ํฌ์์ ์ ๋ณด ์ ๊ณต)
- ICMP ๋ฉ์์ง = ํ์
(type) + ์ฝ๋(code)
- ํ์ : ICMP ๋ฉ์์ง ์ ํ ๋ฒํธ
- ์ฝ๋: ๊ตฌ์ฒด์ ์ธ ๋ฉ์์ง ๋ด์ฉ ๋ฒํธ
- ์ ์ก ๊ณผ์ ์์ ๋ฐ์ํ ๋ฌธ์ ์ํฉ์ ๋ํ ์ค๋ฅ ๋ณด๊ณ ์ ๋ณด ๋ด์ฉ
| ํ์ ์ด๋ฆ(ํ์ ๋ฒํธ) | ์ฝ๋ ๋ฒํธ | ์ฝ๋ ์ค๋ช |
| ์์ ์ง ๋๋ฌ ๋ถ๊ฐ (3): ํน์ ํจํท์ด ์์ ์ง๊น์ง ๋๋ฌํ ์ ์์์ ๋ํ๋ | 0 | ๋คํธ์ํฌ ๋๋ฌ ๋ถ๊ฐ |
| 1 | ํธ์คํธ ๋๋ฌ ๋ถ๊ฐ | |
| 2 | ํ๋กํ ์ฝ ๋๋ฌ ๋ถ๊ฐ: ์์ ์ง์์ ํน์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์ ์์ | |
| 3 | ํฌํธ ๋๋ฌ ๋ถ๊ฐ | |
| 4 | ๋จํธํ๊ฐ ํ์ํ์ง๋ง DF๊ฐ 1๋ก ์ค์ ๋์ด ๋จํธํํ ์ ์์ | |
| ์๊ฐ ์ด๊ณผ(11) | 0 | TTL ๋ง๋ฃ |
- ๋คํธ์ํฌ์ ๋ํ ์ง๋จ ์ ๋ณด ์ค๋ฅ ๋ณด๊ณ ์ ๋ณด ๋ด์ฉ
| ํ์ ์ด๋ฆ(ํ์ ๋ฒํธ) | ์ฝ๋ ๋ฒํธ | ์ฝ๋ ์ค๋ช |
| ์์ฝ ์์ฒญ(8) | 0 | ์์ฝ ์์ฒญ |
| ์์ฝ ์๋ต(0) | 0 | ์์ฝ ์์ฒญ์ ๋ํ ์๋ต |
| ๋ผ์ฐํฐ ๊ด๊ณ (9) | 0 | ๋ผ์ฐํฐ ๊ด๊ณ : ๋ผ์ฐํฐ๊ฐ ํธ์คํธ์๊ฒ ์์ ์ ์๋ฆผ |
- '์์ฝ'๋ ping ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉ
- ICMP๋ IP์ ๋ณด์กฐ์ผ ๋ฟ, ์ ๋ขฐ์ฑ์ ์์ ๋ณด์ฅํ์ง๋ ์์!
- ICMP ๋ฉ์์ง ์์ฒด๊ฐ ์ ์ค๋๋ ๊ฒฝ์ฐ๋ ์กด์ฌํจ
์ ์ก ๊ณ์ธต์ ํ๋กํ ์ฝ
TCP
- ์ฐ๊ฒฐํ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํจ
- ์ก์์ ํ๋ ๋์์๋ ์ฐ๊ฒฐ์ ์ ์งํ๊ณ , ์ก์์ ์ด ๋๋๋ฉด ์ฐ๊ฒฐ์ ์ข ๋ฃ
- ์ ๋ขฐ์ฑ ์๋ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํจ
- ์ฌ์ ์ก์ ํตํ ์ค๋ฅ ์ ์ด, ํ๋ฆ ์ ์ด, ํผ์ก ์ ์ด ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณต
UDP
- ์ ๋ขฐํ ์ ์๋ ํต์ , ๋น์ฐ๊ฒฐํ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํจ
- IP์ ๊ป๋ฐ๊ธฐ ์ญํ
- TCP๋ณด๋ค๋ ๋น๊ต์ ๋น ๋ฅธ ์ ์ก์ด ๊ฐ๋ฅํจ
์์ฉ ๊ณ์ธต์ ์๋ณํ๋ ์ ์ก ๊ณ์ธต
ํฌํธ๋ฅผ ํ์ฉํ ์ ํ๋ฆฌ์ผ์ด์ ์๋ณ
ํฌํธ(port): ๋คํธ์ํฌ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ณ ์ ๋ณด

์ ๊ทธ๋ฆผ์์ ๋ ์ปดํจํฐ๊ฐ '์ฌ์ง ํ์ผ ํจํท'์ ์ฃผ๊ณ ๋ฐ์ ๋, ํจํท์ด ํน์ ์ปดํจํฐ์ ๋๋ฌํ๋ค๊ณ ๋๋๊ฒ ์๋. ํจํท์ด ์ต์ข ์ ์ผ๋ก ํฅํด์ผ ํ๋ ๊ณณ์ ์ปดํจํฐ๊ฐ ์คํ ์ค์ธ ์๋ง์ ํ๋ก๊ทธ๋จ ์ค ํ๋๋ก ํฅํด์ผ ํจ.
ํ๋์ ์ปดํจํฐ๊ฐ ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ํํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ ๋ชจ๋ ๋คํธ์ํฌ๋ฅผ ์ด์ฉ ์ค์ผ ์ ์์
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ํจํท์ด ์ต์ข ์ ์ผ๋ก ํฅํด์ผ ํ๋ ๊ณณ์ ์ปดํจํฐ๊ฐ ์คํํ๋ ํน์ ํ๋ก์ธ์ค์
ํฌํธ์ ๋ถ๋ฅ

ํจํท ๋ด ์์ ์ง ํฌํธ์ ์ก์ ์ง ํฌํธ๋ฅผ ํตํด ์ก์์ ์ง ํธ์คํธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ณ
- 16๋นํธ๋ก ํํ ๊ฐ๋ฅํ ํฌํธ์ ์๋ $2^{16}$(65536)๊ฐ๋ก, ํ ๋น ๊ฐ๋ฅํ ํฌํธ ๋ฒํธ๋ 0๋ฒ~65535๋ฒ
- ํฌํธ๋ ํน์ ์ ํ์ ๋ฐ๋ผ ๋ถ๋ฅ ๊ฐ๋ฅํจ
1. ์ ์๋ ค์ง ํฌํธ(well-known port): 0๋ฒ๋ถํฐ 1023๋ฒ๊น์ง์ ํฌํธ
- ์์คํ ํฌํธ
- ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋กํ ์ฝ์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ํฌํธ ๋ฒํธ๋ฅผ ์๋ฏธ
| ์ ์๋ ค์ง ํฌํธ ๋ฒํธ | ์ค๋ช |
| 20, 21 | FTP |
| 22 | SSH |
| 23 | TELNET |
| 53 | DNS |
| 67, 68 | DHCP |
| 80 | HTTP |
| 443 | HTTPS |
2. ๋ฑ๋ก๋ ํฌํธ(registered port): 1024๋ฒ๋ถํฐ 49151๋ฒ๊น์ง์ ํฌํธ
- ์ ์๋ ค์ง ํฌํธ์ ๋นํด์๋ ๋ ๋ฒ์ฉ์
- ํํ ์ฌ์ฉ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ํ๋กํ ์ฝ์ ํ ๋นํ๊ธฐ ์ํด ์ฌ์ฉ
- ์ธํฐ๋ท ํ ๋น ๋ฒํธ ๊ด๋ฆฌ ๊ธฐ๊ด(IANA): ์ ์๋ ค์ง ํฌํธ์ ๋ฑ๋ก๋ ํฌํธ๋ฒํธ ๊ด๋ฆฌ
- ํฌํธ ๋ฒํธ๋ ๊ถ๊ณ ์ฌํญ์ผ ๋ฟ ๊ฐ์ ์ฌํญ์ ์๋
| ๋ฑ๋ก๋ ํฌํธ ๋ฒํธ | ์ค๋ช |
| 1194 | OpenVPN |
| 1433 | Microsoft SQL Server ๋ฐ์ดํฐ๋ฒ ์ด์ค |
| 3306 | MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค |
| 6379 | Redis |
| 8080 | HTTP ๋์ฒด |
3. ๋์ ํฌํธ(dynamic port), ์ฌ์ค ํฌํธ(private port), ์์ ํฌํธ(ephemeral port): 49152๋ฒ๋ถํฐ 65535๋ฒ๊น์ง์ ํฌํธ
- ํน๋ณํ ๊ด๋ฆฌ๋์ง ์๋ ํฌํธ ๋ฒํธ ๋ฒ์: ์์ ๋กญ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
- ์๋ฒ๋ ๋๋ถ๋ถ ์ ์๋ ค์ง ํฌํธ์ ๋ฑ๋ก๋ ํฌํธ ์ฌ์ฉ
- ํด๋ผ์ด์ธํธ๋ ๋๋ถ๋ถ ๋์ ํฌํธ ์ฌ์ฉํจ ex)์น ๋ธ๋ผ์ฐ์

'ํน์ ํธ์คํธ'์์ ์คํ ์ค์ธ 'ํน์ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ธ์ค' ์๋ณ
IP ์ฃผ์:ํฌํธ๋ฒํธ ํ์ ex) 192.168.0.15:8000
- IP ์ฃผ์: ํธ์คํธ ์๋ณ → 192.168.0.15
- ํฌํธ ๋ฒํธ: ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ธ์ค ์๋ณ → 8000
ํฌํธ๋ฅผ ํ์ฉํ๋ ๊ธฐ์ : ํฌํธ ๊ธฐ๋ฐ NAT(=NAPT)
NAT: NAT ๋ณํ ํ ์ด๋ธ๋ก, ๋คํธ์ํฌ ๋ด๋ถ์ ์ฌ์ค IP์ ๋คํธ์ํฌ ์ธ๋ถ์ ๊ณต์ธ IP ๊ฐ์ ๋ณํํ๋ ๊ธฐ์
- NAT ๋ณํ ํ ์ด๋ธ: ๋ณํ์ ๋์์ด ๋๋ IP ์ฃผ์ ์
- ์ฌ์ค IP ์ฃผ์ ํ๋๋น ๊ณต์ธ IP ์ฃผ์ ํ๋๊ฐ ๋์: ๋ง์ ์ฌ์ค IP ์ฃผ์๋ฅผ ๋ณํํ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์์
- ๊ณต์ธ IP ์ฃผ์์ ๋ญ๋น: ์ฌ์ค IP ์ฃผ์์ ์๋งํผ ๊ณต์ธ IP ์ฃผ์๊ฐ ํ์
- ์ด๋ฌํ ๋ฌธ์ ๋ ํฌํธ๋ฅผ ์ด์ฉํด์ ๊ทน๋ณต ๊ฐ๋ฅํจ
ํฌํธ ๊ธฐ๋ฐ์ NAT, NAPT
- NAPT(Network Address Port Translation) ๋๋ APT(Address Port Translation)
- NAPT๋ NAT ํ ์ด๋ธ์ ๋ณํํ IP ์ฃผ์ ์๊ณผ ๋๋ถ์ด ํฌํธ ๋ฒํธ๋ ํจ๊ป ๊ธฐ๋กํ๊ณ , ๋ณํ
- ํ๋์ ๊ณต์ธ IP ์ฃผ์(1)๋ฅผ ์ฌ๋ฌ ์ฌ์ค IP ์ฃผ์(N)๊ฐ ๊ณต์ ๊ฐ๋ฅ
- ์ฌ์ค IP ์ฃผ์: ๊ณต์ธ IP ์ฃผ์๋ฅผ N:1๋ก ๋ณํ
- ๊ณต์ธ IP ์ฃผ์ ์ ๋ถ์กฑ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ ๊ธฐ์

ํฌํธ ํฌ์๋ฉ(port forwarding)
๋คํธ์ํฌ ๋ด๋ถ์ ์ฌ๋ฌ ํธ์คํธ๊ฐ ๊ณต์ธ IP ์ฃผ์๋ฅผ ๊ณต์ ํ๋ ์ํฉ์์ ๋คํธ์ํฌ ์ธ๋ถ์์ ๋ด๋ถ๋ก (์๊ฒฉ ์ ์์ ์๋ํ๋ ๋ฑ) ํต์ ์ ์์ํ๋ ์ํฉ์์, ์ธ๋ถ ํธ์คํธ ์ ์ฅ์์ ์ด๋ค IP ์ฃผ์(๋ฐ ํฌํธ)๋ฅผ ์์ ์ง ์ฃผ์๋ก ์ผ์์ผ ํ๋์ง ๊ฒฐ์ ํ๋ ์๋ ค์ฃผ๋ ๊ธฐ์ ์ด 'ํฌํธ ํฌ์๋ฉ'์ด๋ค.
ํฌํธ ํฌ์๋ฉ์ ๋คํธ์ํฌ ๋ด ํน์ ํธ์คํธ์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ๋ฏธ๋ฆฌ ํ ๋นํ๊ณ , 'ํด๋น IP ์ฃผ์:ํฌํธ ๋ฒํธ'๋ก์จ ํด๋น ํธ์คํธ์๊ฒ ํจํท์ ์ ๋ฌํ๋ ๊ธฐ๋ฅ
- ํน์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ ์์ ํธ์คํธ์๊ฒ ํ ๋นํ ๋ค, ์ธ๋ถ ํธ์คํธ์๊ฒ ํด๋น ์ ์ ์ ๋ณด(IP ์ฃผ์: ํฌํธ ๋ฒํธ ์)์ ์๋ ค์ฃผ๋ฉด ๋จ
์ ์ก ๊ณ์ธต์ ๊ฐ์ฅ ์ค์ํ ํ๋กํ ์ฝ: TCP์ UDP
TCP(Transmission Control Protocol)
์ ๋ขฐํ ์ ์๋ ํต์ ์ ์ํ ์ฐ๊ฒฐํ ํ๋กํ ์ฝ
TCP ํต์ ๊ณผ์
TCP๋ ํต์ (๋ฐ์ดํฐ ์ก์์ )ํ๊ธฐ ์ ์ ์ฐ๊ฒฐ์ ์๋ฆฝํ๊ณ ํต์ ์ด ๋๋๋ฉด ์ฐ๊ฒฐ์ ์ข ๋ฃ
โ ์ฐ๊ฒฐ ์๋ฆฝ
โก ๋ฐ์ดํฐ ์ก์์ → ์ฌ์ ์ก์ ํตํ ์ค๋ฅ ์ ์ด, ํ๋ฆ ์ ์ด, ํผ์ก ์ ์ด
โข ์ฐ๊ฒฐ ์ข ๋ฃ
MSS(Maximum Segment Size) ๋จ์: TCP๋ก ์ ์กํ ์ ์๋ ์ต๋ ํ์ด๋ก๋ ํฌ๊ธฐ(TCP ํค๋ ํฌ๊ธฐ๋ ์ ์ธ)
TCP ์ธ๊ทธ๋จผํธ ๊ตฌ์กฐ

1. ์ก์ ์ง ํฌํธ, ์์ ์ง ํฌํธ: ์ก์์ ํ๋ ํฌํธ ๋ฒํธ
2. ์์ ๋ฒํธ(sequence number): ์์ ๋ฒํธ๊ฐ ๋ช ์๋๋ ํ๋
- ์์ ๋ฒํธ: ์ก์์ ๋๋ ์ธ๊ทธ๋จผํธ ๋ฐ์ดํฐ์ ์ฒซ ๋ฐ์ดํธ์ ๋ถ์ฌ๋๋ ๋ฒํธ๋ก, ์ธ๊ทธ๋จผํธ์ ์ฌ๋ฐ๋ฅธ ์ก์์ ์์๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฒํธ
ex) ์์ฉ ๊ณ์ธต์ผ๋ก๋ถํฐ 1900๋ฐ์ดํธ ํฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ์๋ค๊ณ ๊ฐ์ ํ๊ณ , MSS ๋จ์๊ฐ 500๋ฐ์ดํธ๋ผ๊ณ ๊ฐ์ (4๊ฐ์ ์ธ๊ทธ๋จผํธ๋ก ๋ถํ ๋จ)

- ์์ ๋ฒํธ = ์ด๊ธฐ ์์ ๋ฒํธ + ์ก์ ํ ๋ฐ์ดํธ ์
- ์ด๊ธฐ ์์ ๋ฒํธ(ISN, Initial Sequence Number)๋ ๋ฌด์์ ๊ฐ
- ์ธ๊ทธ๋จผํธ B์ ์์ ๋ฒํธ๋ ์ด๊ธฐ ์์ ๋ฒํธ์ธ 100์์ 500๋ฐ์ดํธ ๋จ์ด์ง ์ ์ด๋ฏ๋ก 600
- ์ธ๊ทธ๋จผํธ C์ ์์ ๋ฒํธ๋ ์ด๊ธฐ ์์ ๋ฒํธ๋ก๋ถํฐ 1000๋ฐ์ดํธ ๋จ์ด์ง 1100
- ์ธ๊ทธ๋จผํธ D์ ์์ ๋ฒํธ๋ ์ด๊ธฐ ์์ ๋ฒํธ๋ก๋ถํฐ 1500๋ฐ์ดํธ ๋จ์ด์ง 1600

3. ํ์ธ ์๋ต ๋ฒํธ(acknowledgment number): ์๋ ํธ์คํธ๊ฐ ๋ณด๋ธ ์ธ๊ทธ๋จผํธ์ ๋ํ ์๋ต
- ๋ค์์ผ๋ก ์์ ํ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ์์ ๋ฒํธ๊ฐ ๋ช ์(์ผ๋ฐ์ ์ผ๋ก '์์ ํ ์์ ๋ฒํธ + 1')
- ํ์ธ ์๋ต ๋ฒํธ ๊ฐ์ ๋ณด๋ด๊ธฐ ์ํด์๋ ์ ์ด ๋นํธ์์ ์น์ธ์ ๋ํ๋ด๋ ๋นํธ์ธ ACK ํ๋๊ทธ๋ฅผ 1๋ก ์ค์

4. ์ ์ด ๋นํธ(control bits) ๋๋ ํ๋๊ทธ ๋นํธ(flag bits): ํ์ฌ ์ธ๊ทธ๋จผํธ์ ๋ํ ๋ถ๊ฐ ์ ๋ณด
- ๊ธฐ๋ณธ์ ์ผ๋ก 8๋นํธ๋ก ๊ตฌ์ฑ
- ACK: ์ธ๊ทธ๋จผํธ์ ์น์ธ์ ๋ํ๋ด๊ธฐ ์ํ ๋นํธ
- SYN: ์ฐ๊ฒฐ์ ์๋ฆฝํ๊ธฐ ์ํ ๋นํธ
- FIN: ์ฐ๊ฒฐ์ ์ข ๋ฃํ๊ธฐ ์ํ ๋นํธ
5. ์๋์ฐ(window): ์์ ์๋์ฐ(ํ ๋ฒ์ ์์ ํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ ์)์ ํฌ๊ธฐ๊ฐ ๋ช ์
TCP ์ฐ๊ฒฐ ์๋ฆฝ๊ณผ ์ข ๋ฃ
์ฐ๊ฒฐ ์๋ฆฝ: 3-way handshake
- ์ฐ๋ฆฌ ์จ์ด ํธ๋์ ฐ์ดํฌ ์ธ ๊ฐ์ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง TCP์ ์ฐ๊ฒฐ ์๋ฆฝ ๊ณผ์
ex) ํธ์คํธ A์ B๊ฐ ์ฐ๋ฆฌ ์จ์ด ํธ๋์์ดํฌ๋ฅผ ํ๋ค๊ณ ๊ฐ์

| ์ก์์ ๋ฐฉํฅ | ์ธ๊ทธ๋จผํธ | ์ธ๊ทธ๋จผํธ์ ํฌํจ๋ ์ฃผ์ ์ ๋ณด | ๋น์ |
| A → B | SYN ์ธ๊ทธ๋จผํธ | - ํธ์คํธ A์ ์ด๊ธฐ ์์ ๋ฒํธ - 1๋ก ์ค์ ๋ SYN ๋นํธ |
'์ฐ๊ฒฐ ์์ํฉ๋๋ค.' |
| B → A | SYN + ACK ์ธ๊ทธ๋จผํธ | - ํธ์คํธ B์ ์ด๊ธฐ ์์ ๋ฒํธ - ํธ์คํธ A๊ฐ ์ ์กํ ์ธ๊ทธ๋จผํธ์ ๋ํ ํ์ธ ์๋ต ๋ฒํธ - 1๋ก ์ค์ ๋ SYN ๋นํธ - 1๋ก ์ค์ ๋ ACK ๋นํธ |
'๋ค, ํ์ธํ์ต๋๋ค. ์ฐ๊ฒฐ ์์ํด์!' |
| A → B | ACK ์ธ๊ทธ๋จผํธ | - ํธ์คํธ A์ ๋ค์ ์์ ๋ฒํธ - ํธ์คํธ B๊ฐ ์ ์กํ ์ธ๊ทธ๋จผํธ์ ๋ํ ํ์ธ ์๋ต ๋ฒํธ - 1๋ก ์ค์ ๋ ACK ๋นํธ |
'๋ค, ํ์ธํ์ต๋๋ค.' |
- ์กํฐ๋ธ ์คํ(active open): ์ฐ๊ฒฐ ์์ ํธ์คํธ์ ์ฐ๊ฒฐ ์๋ฆฝ ๊ณผ์
- ํจ์๋ธ ์คํ(passive open): ์ฐ๊ฒฐ ์๋ฝ ํธ์คํธ์ ์ฐ๊ฒฐ ์๋ฆฝ ๊ณผ์
์ฐ๊ฒฐ ์ข ๋ฃ: 4-way handshake
์ก์์ ํธ์คํธ๊ฐ ๊ฐ๊ฐ ํ ๋ฒ์ฉ FIN๊ณผ ACK๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ TCP ์ฐ๊ฒฐ ์ข ๋ฃ

| ์ก์์ ๋ฐฉํฅ | ์ธ๊ทธ๋จผํธ | ์ธ๊ทธ๋จผํธ์ ํฌํจ๋ ์ฃผ์ ์ ๋ณด | ๋น์ |
| A → B | FIN ์ธ๊ทธ๋จผํธ | - 1๋ก ์ค์ ๋ FIN ๋นํธ | '์ฐ๊ฒฐ ๋์๊ฒ์' |
| B → A | ACK ์ธ๊ทธ๋จผํธ | - ํธ์คํธ A๊ฐ ์ ์กํ ์ธ๊ทธ๋จผํธ์ ๋ํ ํ์ธ ์๋ต ๋ฒํธ - 1๋ก ์ค์ ๋ ACK ๋นํธ |
'๋ค, ํ์ธํ์ต๋๋ค' |
| B → A | FIN ์ธ๊ทธ๋จผํธ | - 1๋ก ์ค์ ๋ FIN ๋นํธ | '์ด์ ์ฐ๊ฒฐ ๋์ด์' |
| A → B | ACK ์ธ๊ทธ๋จผํธ | - ํธ์คํธ B๊ฐ ์ ์กํ ์ธ๊ทธ๋จผํธ์ ๋ํ ํ์ธ ์๋ต ๋ฒํธ - 1๋ก ์ค์ ๋ ACK ๋นํธ |
'๋ค, ํ์ธํ์ต๋๋ค' |
- ์กํฐ๋ธ ํด๋ก์ฆ(active close): ์ข ๋ฃ ์์ ํธ์คํธ์ ์ข ๋ฃ ๊ณผ์
- ํจ์๋ธ ํด๋ก์ฆ(passive close): ์ข ๋ฃ ์๋ฝ ํธ์คํธ์ ์ข ๋ฃ ๊ณผ์
TCP ์ํ(state)
ํ์ฌ ์ด๋ค ํต์ ๊ณผ์ ์ ์๋์ง๋ฅผ ๋ํ๋ด๋ ์ ๋ณด๋ก ์ํ๋ฅผ ์ ์งํ๊ณ ํ์ฉํ๋ TCP๋ฅผ ์คํ ์ดํธํ(stateful) ํ๋กํ ์ฝ์ด๋ผ๊ณ ๋ถ๋ฆ

- ์ฐ๊ฒฐ์ด ์๋ฆฝ๋์ง ์์ ์ํ
- CLOSED: ์๋ฌด๋ฐ ์ฐ๊ฒฐ์ด ์๋ ์ํ
- LISTEN: ์ผ์ข
์ ์ฐ๊ฒฐ ๋๊ธฐ ์ํ(SYN ์ธ๊ทธ๋จผํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ)
- ์๋ฒ๋ก์ ๋์ํ๋ ํจ์๋ธ ์คํ ํธ์คํธ๋ ์ผ๋ฐ์ ์ผ๋ก LISTEN ์ํ ์ ์ง
- LISTEN ํธ์คํธ์๊ฒ SYN ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ด๋ฉด ์ฐ๋ฆฌ ์จ์ด ํธ๋์ ฐ์ดํฌ ์์

- ์ฐ๊ฒฐ ์๋ฆฝ ๊ณผ์ ์์ ์ฃผ๋ก ๋ณผ ์ ์๋ ์ํ
- SYN-SENT: ์ฐ๊ฒฐ ์์ฒญ์ ๋ณด๋ธ ๋ค ๋๊ธฐํ๋ ์ํ
- ์กํฐ๋ธ ์คํ ํธ์คํธ๊ฐ SYN ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ ๋ค ๊ทธ์ ๋ํ ์๋ต์ธ SYN+ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- SYN-RECEIVED
- ํจ์๋ธ ์คํ ํธ์คํธ๊ฐ SYN+ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ ๋ค ๊ทธ์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- ESTABLISHED: ์ฐ๊ฒฐ์ด ํ๋ฆฝ๋์์์ ๋ํ๋ด๋ ์ํ
- SYN-SENT: ์ฐ๊ฒฐ ์์ฒญ์ ๋ณด๋ธ ๋ค ๋๊ธฐํ๋ ์ํ

- ์ฐ๊ฒฐ ์ข
๋ฃ ๊ณผ์ ์์ ์ฃผ๋ก ๋ณผ ์ ์๋ ์ํ
- FIN-WAIT-1: ์ผ๋ฐ์ ์ผ๋ก TCP ์ฐ๊ฒฐ ์ข ๋ฃ ๊ณผ์ ์ ์์ด FIN-WAIT-1์ ์ฐ๊ฒฐ ์ข ๋ฃ์ ์ฒซ ๋จ๊ณ
- CLOSE-WAIT: ์ข ๋ฃ ์์ฒญ์ธ FIN ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์ ํจ์๋ธ ํด๋ก์ฆ ํธ์คํธ๊ฐ ๊ทธ์ ๋ํ ์๋ต์ผ๋ก ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ธ ํ ๋๊ธฐํ๋ ์ํ
- FIN-WAIT-2: FIN-WAIT-2 ์ํ์์ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ๊ณ ์๋ ํธ์คํธ์ FIN ์ธ๊ทธ๋จผํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- LAST-ACK: CLOSE-WAIT ์ํ์์ FIN ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ ๋ค ์ด์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ
- TIME-WAIT: ์กํฐ๋ธ ํด๋ก์ฆ ํธ์คํธ๊ฐ FIN ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ ๋ค, ์ด์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ ๋ค ์ ์ด๋๋ ์ํ
- ํจ์๋ธ ํด๋ก์ฆ ํธ์คํธ๋ ๋ง์ง๋ง ACK ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ๋ฉด CLOSED ์ํ๋ก ์ ์ด
- TIME-WAIT ์ํ์ ์กํฐ๋ธ ํด๋ก์ฆ ํธ์คํธ๋ ์ผ์ ์๊ฐ์ ๊ธฐ๋ค๋ฆฐ ๋ค CLOSED ์ํ๋ก ์ ์ด
- CLOSING

- ๊ฐ๋จํ ๋ช ๋ น์ด๋ก TCP ์ํ ํ์ธ ๊ฐ๋ฅ → netstat
UDP(User Datagram Protocol)
TCP๋ณด๋ค ์ ๋ขฐ์ฑ์ ๋จ์ด์ง์ง๋ง, ๋น๊ต์ ๋น ๋ฅธ ํต์ ์ด ๊ฐ๋ฅํ ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ

UDP ๋ฐ์ดํฐ ๊ทธ๋จ์ ๊ตฌ์กฐ
- UDP๋ TCP์ ๋ฌ๋ฆฌ ๋น์ฐ๊ฒฐํ ํต์ ์ ์ํํ๋ ์ ๋ขฐํ ์ ์๋ ํ๋กํ ์ฝ
- ๊ทธ๋์ ์ฐ๊ฒฐ ์๋ฆฝ ๋ฐ ํด์ , ์ฌ์ ์ก์ ํตํ ์ค๋ฅ ์ ์ด, ํผ์ก ์ ์ด, ํ๋ฆ ์ ์ด ๋ฑ์ ์ํํ์ง ์์
- ์ ์ก ๋์ค ์ผ๋ถ ํจํท ์์ค๋ ์ ๋ ์์
- ์ํ๋ฅผ ์ ์งํ์ง๋ ์์: ์คํ ์ดํธ๋ฆฌ์ค(stateless) ํ๋กํ ์ฝ
- UDP๋ TCP์ ๋นํด ์ ์ ์ค๋ฒํค๋๋ก ํจํท์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ
- ์ฃผ๋ก ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์๋น์ค, ์ธํฐ๋ท ์ ํ์ฒ๋ผ ์ค์๊ฐ์ฑ์ด ๊ฐ์กฐ๋๋ ์ํฉ์์ TCP๋ณด๋ค ๋ ๋ง์ด ์ฐ์

TCP์ ์ค๋ฅ, ํ๋ฆ, ํผ์ก ์ ์ด
TCP์ ๊ธฐ๋ฅ
- ์ฌ์ ์ก์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ์ค๋ฅ๋ฅผ ์ ์ด
- ํ๋ฆ ์ ์ด๋ฅผ ํตํด ์ฒ๋ฆฌํ ์ ์์ ๋งํผ์ ๋ฐ์ดํฐ ์ก์์
- ํผ์ก ์ ์ด๋ฅผ ํตํด ๋คํธ์ํฌ๊ฐ ํผ์กํ ์ ๋์ ๋ฐ๋ผ ์ ์ก๋ ์กฐ์
์ฌ์ ์ก ๊ธฐ๋ฐ ์ค๋ฅ ์ ์ด
TCP ์ธ๊ทธ๋จผํธ์ ์ฒดํฌ์ฌ ํ๋๋ง์ผ๋ก ์ค๋ฅ ๊ฒ์ถํ๋ ๋ฐ ์ถฉ๋ถํ์ง ์์
- ์ฒดํฌ์ฌ ํ๋๋ ๋ฐ์ดํฐ๊ฐ ํผ์๋ ์ฌ๋ถ๋ง ๋ํ๋ด๋ ํ๋์
- ํจํท์ด ์ ์ค๋๊ฑฐ๋ ์๋ชป ์ ์ก๋๊ฑฐ๋, ์์๊ฐ ์๋ชป ์ ์ก๋ ๊ฒฝ์ฐ์๋ ์ค๋ฅ ๊ฒ์ถํ ์ ์์
TCP๊ฐ ์ ๋ขฐ์ฑ์ ์ ๋๋ก ๋ณด์ฅํ๋ ค๋ฉด,
- ์ก์ ํธ์คํธ๊ฐ ์ก์ ํ ์ธ๊ทธ๋จผํธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ ์ธ์งํ ์ ์์ด์ผํ๊ณ ,
- ์ค๋ฅ๋ฅผ ๊ฐ์งํ๊ฒ ๋๋ฉด ํด๋น ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ ์กํ ์ ์์ด์ผ ํจ
TCP๊ฐ ์ค๋ฅ๋ฅผ ๊ฒ์ถํ๊ณ ์ฌ์ ์กํ๋ ์ํฉ
- ์ค๋ณต๋ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ์ ๋

- ํ์์์์ด ๋ฐ์ํ์ ๋
- ํธ์คํธ๊ฐ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ ๋๋ง๋ค ์ฌ์ ์ก ํ์ด๋จธ(retransimission timer) ์์
- ํ์์์์ด ๋ฐ์ํ ๋๊น์ง ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์ง ๋ชปํ๋ฉด ์ฌ์ ์ก

์ฌ์ ์ก ๊ธฐ๋ฒ: ARQ(Automatic Repeat Request, ์๋ ์ฌ์ ์ก ์๊ตฌ)
- ์์ ํธ์คํธ์ ๋ต๋ณ(ACK)๊ณผ ํ์์์์ ํ ๋๋ก ๋ฌธ์ ๋ฅผ ์ง๋จํ๊ณ ,
- ๋ฌธ์ ๊ฐ ์๊ธด ๋ฉ์์ง๋ฅผ ์ฌ์ ์กํจ์ผ๋ก์จ ์ ๋ขฐ์ฑ์ ํ๋ณดํ๋ ๋ฐฉ์
[ARQ์ ๋ํ์ ์ธ ์ธ ๊ฐ์ง ๋ฐฉ์]
1. Stop-and-Wait ARQ
- ์ ๋๋ก ์ ๋ฌํ์์ ํ์ธํ๊ธฐ ์ ๊น์ง๋ ์๋ก์ด ๋ฉ์์ง๋ฅผ ๋ณด๋ด์ง ์๋ ๋ฐฉ์
- "์ก์ ํ๊ณ , ํ์ธ ๋ฐ๊ณ , ์ก์ ๋ฐ๊ณ , ํ์ธ ๋ฐ๊ณ , ..."
- ์ฅ์ : ๋จ์ํ์ง๋ง, ๋์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅ
- ๋จ์ : ๋คํธ์ํฌ์ ์ด์ฉ ํจ์จ์ด ๋ฎ์์ง๊ณ ์ฑ๋ฅ์ด ์ ํ๋จ
- ์ก์ ํธ์คํธ(A): ํ์ธ ์๋ต ๋ฐ๊ธฐ ์ ์๋ ๋ ๋ณด๋ด๊ณ ์ถ์ด๋ ๋ชป ๋ณด๋
- ์์ ํธ์คํธ(B): ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด๋ ํ๋์ฉ๋ง ํ์ธ ์๋ต
- ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๊ฐ ์ธ๊ทธ๋จผํธ์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๊ฐ ๋์ฐฉํ๊ธฐ ์ ์ด๋ผ๋ ์ฌ๋ฌ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ผ ์ ์์ด์ผ ํจ
- ํ์ดํ๋ผ์ด๋(pipelining): ์ฐ์ํด์ ๋ฉ์์ง๋ฅผ ์ ์กํ ์ ์๋ ๊ธฐ์

2. Go-Back-N ARQ
- ํ์ดํ๋ผ์ด๋ ๊ธฐ๋ฐ ARQ ์ผ์ข
- ์ฌ๋ฌ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ก ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์ธ๊ทธ๋จผํธ๋ถํฐ ์ ๋ถ ์ฌ์ ์ก
- ์์ ๋ฒํธ n๋ฒ์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๋ 'n๋ฒ๋ง์' ํ์ธ ์๋ต์ด ์๋ 'n๋ฒ๊น์ง์ ๋์ ํ์ธ ์๋ต'(CACK, Cumulative Acknowledgment)

๋น ๋ฅธ ์ฌ์ ์ก(fast retransmit)
์ฌ์ ์ก ํ์ด๋จธ๊ฐ ๋ง๋ฃ๋๊ธฐ ์ ์ด๋ผ๋ ์ธ ๋ฒ์ ๋์ผํ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์๋ค๋ฉด ๊ณง๋ฐ๋ก ์ฌ์ ์ก
- ํ์ด๋จธ๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ค์ผ ์ ์์๋น ๋ฅธ ์ฌ์ ์ก(์ถ์ฒ: https://www.youtube.com/watch?v=k7G1wXTB8Fk&t=5s)
3. Selective Repeat ARQ
- ์ ํ์ ์ผ๋ก ์ฌ์ ์ก, ๊ฐ๊ฐ์ ํจํท๋ค์ ๋ํด ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์
- Go-Back-N ARQ์ ACK ์ธ๊ทธ๋จผํธ๊ฐ ๋์ ํ์ธ ์๋ต์ด๋ผ๋ฉด,
Selective Repeat ARQ์ ACK ์ธ๊ทธ๋จผํธ๋ ๊ฐ๋ณ ํ์ธ ์๋ต(Selective Acknowledgment) - ์ค๋๋ ๋๋ถ๋ถ์ ํธ์คํธ๋ Selective Repeat ARQ ์ง์
- Selective Repeat ARQ๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ Go-Back-N ARQ๋ก ๋์

ํ๋ฆ์ ์ด
ํ์ดํ๋ผ์ด๋ ๊ธฐ๋ฐ์ Go-Back-N ARQ/Selective Repeat ARQ ๋ฐฉ์์ด ํ ๋ฒ์ ๋ฌดํํ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
์ ์ ๋์ํ๋ ค๋ฉด,
- ์์ ํธ์คํธ๊ฐ ํ ๋ฒ์ ์ผ๋ง๋ ๋ฐ์ ์ฒ๋ฆฌํ ์ ์๋์ง ๋ฐ๋์ ๊ณ ๋ คํด์ผ ํจ
- ํธ์คํธ๊ฐ ํ ๋ฒ์ ๋ฐ์์ ์ฒ๋ฆฌํ ์ ์๋ ์ธ๊ทธ๋จผํธ์ ์์๋ ํ๊ณ๊ฐ ์๊ธฐ ๋๋ฌธ
- ํ ๋ฒ์ n๊ฐ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด n๋ฐ์ดํธ๋ง ๋ณด๋ด์ผ ํจ
TCP ํ๋ฆ์ ์ด๋ ์ก์ ํธ์คํธ๊ฐ ์์ ํธ์คํธ์ ์ฒ๋ฆฌ ์๋๋ฅผ ๊ณ ๋ คํ๋ฉฐ ์ก์์ ์๋๋ฅผ ๊ท ์ผํ๊ฒ ์ ์งํ๋ ๊ธฐ๋ฅ์ด๋ค.
- Stop-and-Wait ARQ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๋์ ํ๋ฆ ์ ์ด๊ฐ ํ์ํ์ง ์์
- ํ์ดํ๋ผ์ด๋ ๊ธฐ๋ฐ์ Go-Back-N ARQ/Selective Repeat ARQ์์๋ ํ๋ฆ ์ ์ด ํ์
TCP ํ๋ฆ ์ ์ด ๊ธฐ๋ฒ: ์ฌ๋ผ์ด๋ฉ ์๋์ฐ(sliding window)
์๋์ฐ(window): ์ก์ ํธ์คํธ๊ฐ ํ์ดํ๋ผ์ด๋ํ ์ ์๋ ์ต๋๋
์ฆ, ์๋์ฐ์ ํฌ๊ธฐ๋งํผ ํ์ธ ์๋ต์ ๋ฐ์ง ์๊ณ ๋ ํ ๋ฒ์ ์ ์ก ๊ฐ๋ฅํ๋ค๋ ์๋ฏธ

ex)

์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ ~ ๋ค ๋ฒ์งธ ์ธ๊ทธ๋จผํธ๊น์ง๊ฐ ํ์ธ ์๋ต์ ๋ฐ์ง ์๊ณ ๋ ์ ์กํ ์ ์๋ ์
- ์๋์ฐ ํฌ๊ธฐ์์ ๋ฒ์ด๋ ์ซ์์ ํด๋นํ๋ ์ธ๊ทธ๋จผํธ๋ ์ ์กํ ์ ์์!

์์ ํธ์คํธ๋ก๋ถํฐ ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์๋ค๋ฉด,
์๋์ฐ๋ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋

์์ ํธ์คํธ๋ก๋ถํฐ ๋ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์ ๋ํ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์๋ค๋ฉด,
์๋์ฐ๊ฐ ์ ์ฐจ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฏธ๋๋ฌ์ง๋ฏ ์์ง์
- ์ก์ ์ธก์ ์๋์ฐ(์ก์ ์๋์ฐ)๋ ์๋ค.
- ์์ ํธ์คํธ๋ TCP ํค๋(์๋์ฐ ํ๋)๋ฅผ ํตํด ์ก์ ํธ์คํธ์๊ฒ ์์ ์ด ๋ฐ์ ๋ฐ์ดํฐ์ ์์ ์๋ ค์ค
- ์ก์ ์๋์ฐ: ํค๋๋ก ์ ๋ฌ๋ฐ์ ์์ ์๋์ฐ ํ ๋๋ก ์ฐ์ฐ

ํผ์ก ์ ์ด
ํผ์ก(congestion): ๋ง์ ํธ๋ํฝ์ผ๋ก ์ธํด ํจํท์ ์ฒ๋ฆฌ ์๋๊ฐ ๋ฆ์ด์ง๊ฑฐ๋ ์ ์ค๋ ์ฐ๋ ค๊ฐ ์๋ ๋คํธ์ํฌ ์ํฉ
TCP์ ํผ์ก ์ ์ด(congestion control)
- ์ก์ ํธ์คํธ๊ฐ ํผ์กํ ์ ๋์ ๋ง์ถฐ ์ ๋์ ์ผ๋ก ์ ์ก๋์ ์กฐ์ ํ๋ ๊ธฐ๋ฅ
- ํ๋ฆ ์ ์ด์ ์ฃผ์ฒด๊ฐ ์์ ํธ์คํธ๋ผ๋ฉด ํผ์ก ์ ์ด์ ์ฃผ์ฒด๋ ์ก์ ํธ์คํธ
- ํผ์ก ์๋์ฐ(congestion window): ํผ์ก ์์ด ์ ์กํ ์ ์์ ๋ฒํ ๋ฐ์ดํฐ์
- ํผ์ก ์๋์ฐ๊ฐ ํฌ๋ฉด? ํ ๋ฒ์ ์ ์กํ ์ ์๋ ์ธ๊ทธ๋จผํธ ์๊ฐ ๋ง์
- ํผ์ก ์๋์ฐ๊ฐ ์์ผ๋ฉด? (๋คํธ์ํฌ๊ฐ ํผ์กํ ์ํฉ) ํ ๋ฒ์ ์ ์กํ ์ ์๋ ์ธ๊ทธ๋จผํธ ์๊ฐ ์ ์
- ์์ ์๋์ฐ๋ ์์ ํธ์คํธ๊ฐ ํค๋๋ก ์๋ ค์ค
- ํผ์ก ์๋์ฐ๋ ์ก์ ํธ์คํธ๊ฐ ์์์ ์ง์ ๊ณ์ฐํด์ ์์๋ด์ผ ํจ
TCP์ ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ
ํผ์ก ์ ์ด๋ฅผ ์ํํ๋ ์ผ๋ จ์ ๋ฐฉ๋ฒ
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ธ AIMD(Additive Increase/Multiplicative Decrease)
- ํฉ์ผ๋ก ์ฆ๊ฐ, ๊ณฑ์ผ๋ก ๊ฐ์
- ํผ์ก์ด ๊ฐ์ง๋์ง ์๋๋ค๋ฉด, ํผ์ก ์๋์ฐ๋ฅผ RTT(Round Trip Time)๋ง๋ค 1์ฉ ์ ํ์ ์ผ๋ก ์ฆ๊ฐ
- RTT: ๋ฉ์์ง๋ฅผ ์ ์กํ ๋ค ๊ทธ์ ๋ํ ๋ต๋ณ์ ๋ฐ๋ ๋ฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ
- ํผ์ก์ด ๊ฐ์ง๋๋ฉด, ํผ์ก ์๋์ฐ๋ฅผ ์ ๋ฐ์ผ๋ก ๋จ์ด๋จ๋ฆฌ๋ ๋์์ ๋ฐ๋ณต
- ์ค๋ณต๋ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ์ ๋, ํ์์์์ด ๋ฐ์ํ์ ๋ ํผ์ก ๊ฐ์งํจ
AIMD๋ฅผ ๊ณ ๋ํํ๋ ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ
1. ๋๋ฆฐ ์์(slow start) ์๊ณ ๋ฆฌ์ฆ

- ํผ์ก ์๋์ฐ๋ฅผ 1๋ถํฐ ์์ํด ๋ฌธ์ ์์ด ์์ ๋ ACK ์ธ๊ทธ๋จผํธ ํ๋๋น 1์ฉ ์ฆ๊ฐ์ํค๋ ๋ฐฉ์
- ํผ์ก ์๋์ฐ๋ RTT๋ง๋ค 2๋ฐฐ์ฉ ์ง์์ ์ผ๋ก ์ฆ๊ฐ: ์ด๊ธฐ ์ ์ก ์๋ ๋น ๋ฅธ ํ๋ณด
- ๋๋ฆฐ ์์ ์๊ณ ๋ฆฌ์ฆ๋ ํผ์ก ์๋์ฐ๋ฅผ ๋๋ฆด ์ ์๋ ํ๊ณ๊ฐ ์์
- ๋๋ฆฐ ์์ ์๊ณ์น(slow start threshold)๋ผ๋ ํน์ ๊ฐ๊น์ง๋ง ํผ์ก ์๋์ฐ ๋๋ฆด ์ ์์
- ํผ์ก ์๋์ฐ ๊ฐ์ด ๊ณ์ ์ฆ๊ฐํ๋ค๊ฐ,
- ํผ์ก ์๋์ฐ ํฌ๊ธฐ๊ฐ ๋๋ฆฐ ์์ ์๊ณ์น ์ด์์ด ๋๊ฑฐ๋,
- ํ์์์์ด ๋ฐ์ํ๊ฑฐ๋
- ์ธ ๋ฒ์ ์ค๋ณต๋ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ๋ฉด
- ๋ค์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ํ๋ ์ ํ
| ์ํฉ ๋ถ๋ฅ | ๋ฐฉ๋ฒ |
| ํ์์์ ๋ฐ์ | ํผ์ก ์๋์ฐ ๊ฐ์ 1๋ก, ๋๋ฆฐ ์์ ์๊ณ์น๋ฅผ ํผ์ก์ด ๊ฐ์ง๋์์ ์์ ์ ํผ์ก ์๋์ฐ ๊ฐ์ ์ ๋ฐ์ผ๋ก ์ด๊ธฐํํ ๋ค ๋๋ฆฐ ์์ ์ฌ๊ฐ |
| ํผ์ก ์๋์ฐ >= ๋๋ฆฐ ์์ ์๊ณ์น | ๋๋ฆฐ ์์ ์ข ๋ฃ, ํผ์ก ํํผ ์ํ |
| ์ธ ๋ฒ์ ์ค๋ณต ACK ๋ฐ์ | (๋น ๋ฅธ ์ฌ์ ์ก ํ) ๋น ๋ฅธ ํ๋ณต ์ํ |
2. ํผ์ก ํํผ ์๊ณ ๋ฆฌ์ฆ: RTT๋ง๋ค ํผ์ก ์๋์ฐ๋ฅผ 1MSS์ฉ ์ฆ๊ฐ์ํค๋ ์๊ณ ๋ฆฌ์ฆ
- ํผ์ก ์๋์ฐ ํฌ๊ธฐ ์ ํ์ ์ผ๋ก ์ฆ๊ฐ
- ๋๋ฆฐ ์์ ์๊ณ์น๋ฅผ ๋์ด์๋ฉด ํผ์ก ์ฌ์ง๊ฐ ์์ผ๋ ์กฐ์ฌํด์ ํผ์ก ์๋์ฐ ์ฆ๊ฐํ๊ธฐ

3. ๋น ๋ฅธ ํ๋ณต(fast recovery) ์๊ณ ๋ฆฌ์ฆ: ์ธ ๋ฒ์ ์ค๋ณต๋ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ๋ฉด, ๋น ๋ฅธ ์ฌ์ ์ก + ๋น ๋ฅธ ํ๋ณต ์๊ณ ๋ฆฌ์ฆ
- ์ธ ๋ฒ์ ์ค๋ณต ์ธ๊ทธ๋จผํธ ์์ vs ํ์ ์์ → ํ์ ์์์ด ๋ ํฐ ๋ฌธ์ ์
- ๋น ๋ฅธ ์ ์ก๋ฅ ํ๋ณต์ ์ํด ๋๋ฆฐ ์์์ ๊ฑด๋๋ฐ๊ณ ํผ์ก ํํผ๋ฅผ ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋จ, ๋น ๋ฅธ ํ๋ณต ๋์ค์ด๋ผ๋ ํ์์์์ด ๋ฐ์ํ๋ฉด ๋ค์ ๋๋ฆฐ ์์์ ์ํ

ECN: ์ค๊ฐ ๋ ธ๋์ ๋์์ผ๋ก ํผ์ก์ ์ ์ด
- ํผ์ก ๊ฐ์ง, ํผ์ก ์๋์ฐ ๊ณ์ฐ, ์ฌ์ ์ก์ ์ค๋ก์ง ์ก์ ํธ์คํธ์ ๋ชซ์ด์์
- ํผ์ก์ ํํผํ๊ธฐ ์ํด ๋คํธ์ํฌ ์ค๊ฐ ์ฅ์น(์ฃผ๋ก ๋ผ์ฐํฐ)์ ๋์์ ๋ฐ๋ ๋ฐฉ๋ฒ์ด ECN์
- ํธ์คํธ๊ฐ ECN์ ์ง์ํ ๊ฒฝ์ฐ, TCP/IP ํค๋์ ECN ๊ด๋ จ ๋นํธ ์ถ๊ฐ

- ์ก์ ํธ์คํธ๋ง ํผ์ก ์ ์ด๋ฅผ ์ํํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ดํ์ ๋น๋ก์ ํผ์ก ์ ์ด
- ECN์ ์ด์ฉํ๋ฉด ์์ ํธ์คํธ์ ACK ์ธ๊ทธ๋จผํธ๋ฅผ ํตํด ๋ ๋น ๋ฅด๊ฒ ํผ์ก์ ๊ฐ์ง ๊ฐ๋ฅ
