๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ํŠธ๋žœ์ŠคํฌํŠธ(TCP) - TCP ์—ฐ๊ฒฐ (full-duplex, point-to-point, MSS) ๋ณธ๋ฌธ

Network (๋„คํŠธ์›Œํฌ)/Computer Network (์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ)

์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ํŠธ๋žœ์ŠคํฌํŠธ(TCP) - TCP ์—ฐ๊ฒฐ (full-duplex, point-to-point, MSS)

9taetae9 2024. 12. 11. 13:10
728x90

TCP ์—ฐ๊ฒฐ

์—ฐ๊ฒฐ์ง€ํ–ฅํ˜•(connection-oriented) 

TCP๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ๋ณด๋‚ด๊ธฐ ์ „์—, ๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋กœ "ํ•ธ๋“œ์…ฐ์ดํฌ"๋ฅผ ๋จผ์ € ํ•ด์•ผ ํ•จ.

 

TCP "์—ฐ๊ฒฐ"์€ ๊ตํ™˜ ๋„คํŠธ์›Œํฌ์—์„œ์™€ ๊ฐ™์€ ์ข…๋‹จ๊ฐ„ TDM, FDM๋„ ์•„๋‹ˆ๊ณ , ๊ฐ€์ƒ ํšŒ์„  ๋„คํŠธ์›Œํฌ๋„ ์•„๋‹ˆ๋‹ค.

TCP ํ”„๋กœํ† ์ฝœ์€ ์˜ค์ง ์ข…๋‹จ ์‹œ์Šคํ…œ์—์„œ๋งŒ ๋™์ž‘, ์ค‘๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ์š”์†Œ(๋ผ์šฐํ„ฐ or ๋ธŒ๋ฆฌ์ง€)์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ,

์ค‘๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ์š”์†Œ๋“ค์€ TCP ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ. (์ค‘๊ฐ„ ๋ผ์šฐํ„ฐ๋“ค์€ ์ „ํ˜€ TCP ์—ฐ๊ฒฐ์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•˜๊ณ , ๋ฐ์ดํ„ฐ๊ทธ๋žจ๋งŒ์„ ๋ด„)

 

์ „์ด์ค‘(full-duplex) ์„œ๋น„์Šค

ํ˜ธ์ŠคํŠธ A์˜ ํ”„๋กœ์„ธ์Šค์™€ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ B์˜ ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์— TCP ์—ฐ๊ฒฐ์ด ์žˆ๋‹ค๋ฉด, 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ๋ฐ์ดํ„ฐ๋Š” A <=> B ์–‘ ๋ฐฉํ–ฅ์œผ๋กœ ๋™์‹œ์— ํ๋ฅผ ์ˆ˜ ์žˆ์Œ.

 

์ ๋Œ€์ (point-to-point)

๋‹จ์ผ ์†ก์‹ ์ž์™€ ๋‹จ์ผ ์ˆ˜์‹ ์ž ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ๋งŒ ๊ฐ€๋Šฅ. (๋ฉ€ํ‹ฐ์บ์ŠคํŒ… ๋ฐฉ์‹์€ TCP์—์„œ ๋ถˆ๊ฐ€๋Šฅ)

 

 

์—ฐ๊ฒฐ ์„ค์ • ๊ณผ์ • 

ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค : ์—ฐ๊ฒฐ์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค

์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค : ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ฐ›๋Š” ํ”„๋กœ์„ธ์Šค

1. ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์„ธ์Šค๋Š” ์„œ๋ฒ„์˜ ํ”„๋กœ์„ธ์Šค์™€ ์—ฐ๊ฒฐ ์„ค์ •์„ ์›ํ•จ์„ TCP ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•Œ๋ฆผ

Socket clientSocket = new Socket(serverName, serverPort);

2. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋จผ์ € ํŠน๋ณ„ํ•œ TCP ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋ƒ„

3. ์„œ๋ฒ„๋Š” ๋‘ ๋ฒˆ์งธ ํŠน๋ณ„ํ•œ TCP ์„ธ๊ทธ๋จผํŠธ๋กœ ์‘๋‹ต

4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ธ ๋ฒˆ์งธ ํŠน๋ณ„ํ•œ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋‹ค์‹œ ์‘๋‹ต

 

์ฒ˜์Œ 2๊ฐœ(2,3 ๊ณผ์ •)์˜ ์„ธ๊ทธ๋จผํŠธ์—๋Š” "ํŽ˜์ด๋กœ๋“œ"๊ฐ€ ์—†์Œ.

์„ธ ๋ฒˆ์งธ(4 ๊ณผ์ •) ์„ธ๊ทธ๋จผํŠธ๋Š” ํŽ˜์ด๋กœ๋“œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ.

 

ํŽ˜์ด๋กœ๋“œ(payload)๋Š” ์ „์†ก๋˜๋Š” '์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ'๋ฅผ ๋œปํ•œ๋‹ค. ํŽ˜์ด๋กœ๋“œ๋Š” ์ „์†ก์˜ ๊ทผ๋ณธ์ ์ธ ๋ชฉ์ ์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ ๊ทธ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์ „์†ก๋˜๋Š” ํ—ค๋”, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ๋ถ€๋ถ„์€ ์ œ์™ธํ•œ๋‹ค. ์—ฌ๊ธฐ์„  ์ฒ˜์Œ 2๊ฐœ ์„ธ๊ทธ๋จผํŠธ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Œ์„ ๋œปํ•จ.

 

์œ„์™€ ๊ฐ™์ด TCP ์—ฐ๊ฒฐ ์„ค์ • ๊ณผ์ •์—์„œ ๋‘ ํ˜ธ์ŠคํŠธ ์‚ฌ์ด์— 3๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ๋ณด๋‚ด์ง€๋ฏ€๋กœ, Three-way handshake ๋ผ ๋ถ€๋ฆ„.

 

๋ฐ์ดํ„ฐ ์†ก์‹  ๊ณผ์ •

1. ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์†Œ์ผ“(ํ”„๋กœ์„ธ์Šค์˜ ๊ด€๋ฌธ)์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ์˜ ์ŠคํŠธ๋ฆผ์„ ์ „๋‹ฌ

2. ๋ฐ์ดํ„ฐ๊ฐ€ ์†Œ์ผ“์„ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฉด, ์ด์ œ ๋ฐ์ดํ„ฐ๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ๋™์ž‘ํ•˜๋Š” TCP์— ๋งก๊ฒจ์ง

3. TCP๋Š” ์ดˆ๊ธฐ three-way handshake ๋™์•ˆ ์ค€๋น„๋œ ๋ฒ„ํผ์˜ ํ•˜๋‚˜์ธ ์†ก์‹  ๋ฒ„ํผ(send buffer)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ƒ„

    (๋•Œ๋•Œ๋กœ TCP๋Š” ์†ก์‹  ๋ฒ„ํผ์—์„œ ๋ฐ์ดํ„ฐ ๋ฌถ์Œ์„ "๋งŒ๋“ค์–ด" ๋„คํŠธ์›Œํฌ๋กœ ๋ณด๋ƒ„)

 

[RFC 793]์—์„œ TCP๋Š” "์ž์‹ ์ด ํŽธํ•œ ๋Œ€๋กœ ์„ธ๊ทธ๋จผํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก", ์ฆ‰, TCP๊ฐ€ ์–ธ์ œ ๋ฒ„ํผ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์ง€ ์•Š์Œ.

์„ธ๊ทธ๋จผํŠธ์˜ ํฌ๊ธฐ๋Š” MSS(maximum segment size, ์ตœ๋Œ€ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ)๋กœ ์ œํ•œํ•˜๋Š”๋ฐ, MSS๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ์ปฌ ์†ก์‹  ํ˜ธ์ŠคํŠธ์— ์˜ํ•ด ์ „์†ก๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋งํฌ ๊ณ„์ธต ํ”„๋ ˆ์ž„์˜ ๊ธธ์ด[MTU(maximum transmissionn unit),์ตœ๋Œ€ ์ „์†ก ๋‹จ์œ„]์— ์˜ํ•ด ์ผ๋‹จ ๊ฒฐ์ •๋˜๊ณ , TCP ์„ธ๊ทธ๋จผํŠธ(IP ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์•ˆ์— ์บก์Аํ™”๋˜์—ˆ์„ ๋•Œ)์™€ TCP/IP ํ—ค๋” ๊ธธ์ด(ํ†ต์‚ฐ 40byte)๊ฐ€ ๋‹จ์ผ ๋งํฌ ๊ณ„์ธต ํ”„๋ ˆ์ž„์— ์ผ์น˜ํ•˜๋„๋ก ํ•˜์—ฌ ์ •ํ•ด์ง.

 

[RFC 1191] ์ถœ๋ฐœ์ง€์—์„œ ๋ชฉ์ ์ง€๊นŒ์ง€ ๋ชจ๋“  ๋งํฌ์ƒ์— ์ „์†ก๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋งํฌ ๊ณ„์ธต ํ”„๋ ˆ์ž„์ธ ๊ฒฝ๋กœ MTU๋ฅผ ์ฐพ๊ณ  ์ด ๊ฒฝ๋กœ MTU ๊ฐ’์— ๊ทผ์ฒ˜ํ•˜์—ฌ MSS ์„ค์ •์„ ์œ„ํ•œ ๋ฐฉ์‹๋“ค๋„ ์ œ์•ˆ๋จ.

MSS๋Š” ํ—ค๋”๋ฅผ ํฌํ•จํ•œ TCP ์„ธ๊ทธ๋จผํŠธ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๊ฐ€ ์•„๋‹Œ, ์„ธ๊ทธ๋จผํŠธ์—์„œ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ตœ๋Œ€ ํฌ๊ธฐ์ด๋‹ค.

 

TCP๋Š” TCP ํ—ค๋”์™€ ํด๋ผ์ด์–ธํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ๋งŒ๋“ค์–ด TCP ์„ธ๊ทธ๋จผํŠธ๋ฅผ ํ˜•์„ฑํ•˜๊ณ ,

์„ธ๊ทธ๋จผํŠธ๋Š” ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์— ์ „๋‹ฌ๋˜๋ฉฐ, ๋„คํŠธ์›Œํฌ ๊ณ„์ธต IP ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์•ˆ์— ๊ฐ๊ฐ ์บก์Аํ™” ๋จ.

 

TCP๊ฐ€ ์ƒ๋Œ€์—๊ฒŒ์„œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ˆ˜์‹ ํ–ˆ์„ ๋•Œ, ์„ธ๊ทธ๋จผํŠธ์˜ ๋ฐ์ดํ„ฐ๋Š” TCP ์—ฐ๊ฒฐ์˜ ์ˆ˜์‹  ๋ฒ„ํผ์— ์œ„์น˜ํ•˜๊ณ ,

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•ด๋‹น ์ˆ˜์‹  ๋ฒ„ํผ์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ŠคํŠธ๋ฆผ์„ ์ฝ์Œ.

 

TCP ์—ฐ๊ฒฐ์€ ํ•œ์ชฝ ํ˜ธ์ŠคํŠธ์—์„œ ๋ฒ„ํผ, ๋ณ€์ˆ˜, ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์†Œ์ผ“ ์—ฐ๊ฒฐ๊ณผ ๋‹ค๋ฅธ ์ชฝ ํ˜ธ์ŠคํŠธ์—์„œ์˜ ๋ฒ„ํผ, ๋ณ€์ˆ˜, ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์†Œ์ผ“ ์—ฐ๊ฒฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง. (๋ฒ„ํผ์™€ ๋ณ€์ˆ˜๋Š” ํ˜ธ์ŠคํŠธ ๊ฐ„ ๋„คํŠธ์›Œํฌ ์š”์†Œ(๋ผ์šฐํ„ฐ, ์Šค์œ„์น˜, ๋ฆฌํ”ผํ„ฐ)์˜ ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด์„œ๋Š” ํ• ๋‹น๋˜์ง€ ์•Š์Œ)

 

 

์ฐธ๊ณ  ๋„์„œ :

์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํ‚น ํ•˜ํ–ฅ์‹ ์ ‘๊ทผ - ์ œ 7ํŒ

728x90