๐Ÿ‘ฉ‍๐Ÿ’ป/Network

[๋„คํŠธ์›Œํฌ ์Šคํ„ฐ๋””] 6 ์ „์†ก ๊ณ„์ธต : ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†กํ•˜๊ธฐ(์—ฐ๊ฒฐํ˜• ํ†ต์‹ , ๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹ , TCP, UDP, 3-way handshake, ํฌํŠธ ๋ฒˆํ˜ธ, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ)

ํ•œ๋‚˜ 2020. 10. 22. 02:59

์‹ ๋ขฐ์„ฑ, ์ •ํ™•์„ฑ, ํšจ์œจ์„ฑ์œผ๋กœ ๋Œ€ํ‘œ๋˜๋Š” ์ „์†ก ๊ณ„์ธต์˜ ์—ญํ• ์„ ์•Œ์•„๋ณด์ž

์ „์†ก ๊ณ„์ธต์˜ ๋‘ ๊ฐ€์ง€ ์—ญํ• 

๋ผ์šฐํ„ฐ์˜ ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ ์ž ํ•  ๋•Œ, ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ญ์ƒ ๋ชฉ์ ์ง€์— ์†์‹ค์ด๋‚˜ ์†์ƒ ์—†์ด ์•ˆ์ „ํ•˜๊ฒŒ ๋„์ฐฉํ•˜๋ฉด ์ข‹๊ฒ ์ง€๋งŒ, ๋ชฉ์ ์ง€๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์ •๋˜์—ˆ๋‹คํ•˜๋”๋ผ๋„ ๋ผ์šฐํ„ฐ๋‚˜ ํŒจํ‚ท์˜ ๋ฌธ์ œ๋กœ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

์ด์ „๊นŒ์ง€์˜ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด ๋ฌผ๋ฆฌ ๊ณ„์ธต, ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต, ๋„คํŠธ์›Œํฌ ๊ณ„์ธต๊นŒ์ง€ ์‚ดํŽด๋ณด๋ฉด์„œ '๋ชฉ์ ์ง€'๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ณผ์ •์„ ์•Œ์•„๋ณด์•˜์ง€๋งŒ, ๊ณผ์—ฐ ์ด๊ฒƒ์ด ์•ˆ์ „ํ•œ์ง€, ์‹ ๋ขฐํ•  ๋งŒํ•œ ์ˆ˜์ค€์ธ์ง€์— ๋Œ€ํ•ด์„  ๋งŽ์ด ์งš์ง€ ๋ชปํ–ˆ๋‹ค. ์ฆ‰, ๋‹ค์‹œ ๋งํ•ด ์–ธ๊ธ‰ํ•œ ์„ธ ๊ฐœ์˜ ๊ณ„์ธต์—์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์†์ƒ๋˜๊ฑฐ๋‚˜ ์œ ์‹ค๋˜์–ด๋„ '์ฑ…์ž„์„ ์ง€์ง€์ง€ ์•Š๋Š”๋‹ค'

 

๊ทธ๋ž˜์„œ ๋ชฉ์ ์ง€์— ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด '์ „์†ก ๊ณ„์ธต'์ด ์กด์žฌํ•œ๋‹ค.

 

์ „์†ก ๊ณ„์ธต์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฅ˜๋ฅผ ์ ๊ฒ€ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ์ปดํ“จํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•˜์„ ๊ฒฝ์šฐ ์–ด๋–ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋„๋‹ฌํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

 

์—ฐ๊ฒฐํ˜• ํ†ต์‹ ๊ณผ ๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹ 

  • ์—ฐ๊ฒฐํ˜• ํ†ต์‹  : ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ†ต์‹ . ๋”ฐ๋ผ์„œ ํ†ต์‹ ํ•˜๊ณ ์ž ํ•˜๋Š” ์ƒ๋Œ€์™€ 'ํ™•์ธ'ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
  • ๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹  : ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํ†ต์‹ . ํ†ต์‹ ํ•˜๊ณ ์ž ํ•˜๋Š” ์ƒ๋Œ€์™€ ํ™•์ธํ•˜์ง€ ์•Š๊ณ , '์ผ๋ฐฉ์ '์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

์–ผํ• ์ƒ๊ฐํ•˜๊ธฐ์—๋Š” ๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹ ์˜ ํšจ์šฉ์ด ์—†์„ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ํšจ์œจ์„ ์ค‘์š”์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์˜์ƒ ๊ฐ™์ด ์‹ ๋ขฐํ•˜๊ณ  ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก๋ณด๋‹ค๋Š” '๋น ๋ฅธ ์ „์†ก'์ด ํ•„์š”ํ•œ ํ†ต์‹ ์—์„œ ์ œ๊ธฐ๋Šฅ์„ ๋ฐœํœ˜ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฐ๊ฒฐํ˜• ํ†ต์‹  ๋ฐฉ์‹์ฒ˜๋Ÿผ ๋ช‡ ๋ฒˆ์”ฉ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š๋ผ ์ง€์—ฐ๋˜์–ด ๋„์ฐฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฐ์ดํ„ฐ์˜ ์•ฝ๊ฐ„์˜ ์†์‹ค์„ ๊ฐ์ˆ˜ํ•˜๋”๋ผ๋„ ๋น ๋ฅด๊ฒŒ ์žฌ์ƒ๋˜๋Š” ๊ฒƒ์ด ๋”์šฑ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฆ‰, ๋‘ ํ†ต์‹  ๋ฐฉ์‹์€ ๋ชจ๋‘ ์žฅ๋‹จ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ํƒ์ผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋•Œ, ์—ฐ๊ฒฐํ˜• ํ†ต์‹  ๋ฐฉ์‹์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด TCP(Transmission Control Protocol), ๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด UDP(User Datagram Protocol)

 

TCP์˜ ๊ตฌ์กฐ

๊ฐ ๊ณ„์ธต์˜ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์„ ์‚ดํŽด๋ณด๋ฉด์„œ, ์บก์Šํ™”์™€ ์—ญ์บก์Šํ™” ๊ฐœ๋…์„ ์ตํ˜”๋‹ค. ์ „์†ก ๊ณ„์ธต์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ „์†ก์ด ์ผ์–ด๋‚  ๋•Œ ํ—ค๋”๋ฅผ ๋ถ™์ด๋Š” ์บก์Šํ™”์™€ ์ด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์—ญ์บก์Šํ™”๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.

TCP๋กœ ์ „์†กํ•  ๋•Œ ๋ถ™์ด๋Š” ํ—ค๋”๋Š” TCP ํ—ค๋”, ์ด ํ—ค๋”๊ฐ€ ๋ถ™์€ ๋ฐ์ดํ„ฐ๋Š” ์„ธ๊ทธ๋จผํŠธ(segment)๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

์„ธ๊ทธ๋จผํŠธ์˜ ๊ตฌ์กฐ

 

์ถœ๋ฐœ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ(16๋น„ํŠธ) ๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ(16๋น„ํŠธ)
์ผ๋ จ ๋ฒˆํ˜ธ(32๋น„ํŠธ)
ํ™•์ธ ์‘๋‹ต ๋ฒˆํ˜ธ(32๋น„ํŠธ)
ํ—ค๋” ๊ธธ์ด (4๋น„ํŠธ) ์˜ˆ์•ฝ ์˜์—ญ (6๋น„ํŠธ) ์ฝ”๋“œ ๋น„ํŠธ (6๋น„ํŠธ) ์œˆ๋„์šฐ ํฌ๊ธฐ (16๋น„ํŠธ)
์ฒดํฌ์„ฌ (16๋น„ํŠธ) ๊ธด๊ธ‰ ํฌ์ธํ„ฐ (16๋น„ํŠธ)
์˜ต์…˜

TCP ํ—ค๋”์˜ ๊ตฌ์กฐ

 

TCP๋ผ๋Š” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์€ ์—ฐ๊ฒฐํ˜• ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— 'ํ™•์ธ'์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ „ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ์„ ์ œ ์ž‘์—…์ด ์žˆ๋‹ค: ์—ฐ๊ฒฐ(Connection)์ด๋ผ๋Š” ๊ฐ€์ƒ์˜ ๋…์  ํ†ต์‹ ๋กœ๋ฅผ ํ™•๋ณดํ•ด์•ผ ํ•œ๋‹ค.

 

์œ„์˜ TCP ํ—ค๋”์˜ ๊ตฌ์กฐ์—์„œ '์ฝ”๋“œ ๋น„ํŠธ'๋ฅผ ๋ณด๋ฉด, ์ „์ฒด TCP ํ—ค๋”์˜ 107๋ฒˆ์งธ ๋น„ํŠธ~112๋ฒˆ์งธ ๋น„ํŠธ๊นŒ์ง€๋ฅผ ์ฐจ์ง€ํ•˜๋Š” 6๋น„ํŠธ์งœ๋ฆฌ์˜ ์—ฐ๊ฒฐ ์ œ์–ด ์ •๋ณด๊ฐ€ ๊ธฐ๋ก๋œ๋‹ค.

TCP Flags์˜ ์˜๋ฏธ

URG(Urgent Pointer) ACK(Acknowledgement) PSH(Push) RST(Reset) SYN(Synchronisation) FIN(Finish)
0 0 0 0 0 0
1 ๋น„ํŠธ 1 ๋น„ํŠธ 1 ๋น„ํŠธ 1 ๋น„ํŠธ 1 ๋น„ํŠธ 1 ๋น„ํŠธ
  • URG : "์ด ํŒจํ‚ท์€ Urgent Pointer์— ์˜ํ•ด ์ง€์ •๋œ ๊ธด๊ธ‰ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค!" ์‘๋‹ตํ•  ๋•Œ, ๋ฐ์ดํ„ฐ์— ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ACK : ๋ฐ์ดํ„ฐ์˜ ์„ฑ๊ณต์ ์ธ ์ˆ˜์‹ ์„ ์ธ์ •ํ•œ๋‹ค.
  • PSH : ํ†ต์‹ ์„ ์ˆ˜์‹ ํ•˜๋Š” ์ชฝ์˜ Buffer ์ƒํƒœ๊ฐ€ ์–ด๋–ป๋“  ๊ด€๊ณ„ ์—†์ด ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์ž๋งˆ์ž ๋†’์€ ๊ณ„์ธต์œผ๋กœ PUSH(transfter; ์ „์†ก)ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ๊ฒƒ
  • RST : ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํŒจํ‚ท์ด ์ผ์–ด๋‚˜๊ฑฐ๋‚˜ ์ปค๋„ฅ์…˜์ด ์‹คํŒจํ–ˆ์„ ๋•Œ์˜ ์–ด๋–ค ์—๋Ÿฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • SYN : "์ด ํŒจํ‚ท์€ TCP ์—ฐ๊ฒฐ ํ™•๋ฆฝ์„ ์œ„ํ•œ process์ž…๋‹ˆ๋‹ค"๋ฅผ ๋งํ•œ๋‹ค.
  • FIN : "์ด ํŒจํ‚ท์€ TCP ์—ฐ๊ฒฐ release๋ฅผ ์œ„ํ•œ process์ž…๋‹ˆ๋‹ค"๋ฅผ ๋งํ•œ๋‹ค.

 

 

 

์ฝ”๋“œ ๋น„ํŠธ๋Š” ๊ฐ ๋น„ํŠธ๋ณ„๋กœ ์—ญํ• ์ด ์žˆ๋Š”๋ฐ, ์ดˆ๊นƒ๊ฐ’์€ 0์œผ๋กœ ์„ค์ •์ด ๋˜๋ฉฐ, ๋น„ํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ 1์ด ๋œ๋‹ค. ์ปค๋„ฅ์…˜์„ ํ™•๋ฆฝ(to establish the connection)ํ•˜๋ ค๋ฉด SYN์™€ ACK์ด ํ•„์š”ํ•˜๋‹ค.

  • SYN : ์—ฐ๊ฒฐ ์š”์ฒญ
  • ACK : ํ™•์ธ ์‘๋‹ต

 

3-way Handshake (3-way ํ•ธ๋“œ์…ฐ์ดํฌ)

SYN๊ณผ ACK๋ฅผ ์‚ฌ์šฉํ•œ ์—ฐ๊ฒฐ ํ™•๋ฆฝ

 

  1. ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„œ๋ฒ„์— ํ—ˆ๊ฐ€๋ฅผ ๋ฐ›์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์—ฐ๊ฒฐ ํ™•๋ฆฝ ํ—ˆ๊ฐ€๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•œ ์š”์ฒญ(SYN)์„ ๋ณด๋‚ด๊ณ , ์ด๋•Œ ์ฝ”๋“œ ๋น„ํŠธ SYN์˜ ์ดˆ๊นƒ๊ฐ’ 0์ด 1๋กœ ํ™œ์„ฑํ™”๋œ๋‹ค.
  2. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์€ ํ›„ ํ—ˆ๊ฐ€ํ•œ๋‹ค๋Š” ์‘๋‹ต์„ ํšŒ์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐ ํ™•๋ฆฝ ์‘๋‹ต(ACK)๋ฅผ ๋ณด๋‚ด๊ณ  ๋™์‹œ์— ์„œ๋ฒ„๋„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ „์†ก ํ—ˆ๊ฐ€๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐ ํ™•๋ฆฝ ์š”์ฒญ(SYN)์„ ๋ณด๋‚ธ๋‹ค. ์ฝ”ํŠธ ๋น„ํŠธ์˜ ACK๊ณผ SYN์ด ๋ชจ๋‘ ํ™œ์„ฑํ™”๋œ๋‹ค.
  3. ์„œ๋ฒ„์˜ ์š”์ฒญ์„ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ํ—ˆ๊ฐ€ํ•œ๋‹ค๋Š” ์‘๋‹ต(ACK)์„ ๋ณด๋‚ด๊ณ  ๋น„ํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•œ๋‹ค.

3๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— 3-way handshake๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ์—ฐ๊ฒฐ ์ข…๋ฃŒ(TCP Release)๋ฅผ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค๋„ ๋น„์Šทํ•˜๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ, ๊ฐ ๊ณผ์ •์—์„œ ํ™œ์„ฑํ™”๋˜๋Š” ๋น„ํŠธ๋“ค์€ FIN, ACK๊ฐ€ ์žˆ๋‹ค.

 

์ผ๋ จ ๋ฒˆํ˜ธ์™€ ํ™•์ธ ์‘๋‹ต ๋ฒˆํ˜ธ์˜ ๊ตฌ์กฐ

์œ„ TCP ํ—ค๋”์— ๋“ค์–ด๊ฐ€๋Š” ์ •๋ณด๋ฅผ ํ™•์ธํ•ด๋ณด์ž. ์ผ๋ จ ๋ฒˆํ˜ธ(sequence number)์™€ ํ™•์ธ ์‘๋‹ต ๋ฒˆํ˜ธ(acknowledge number)๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • ์ผ๋ จ ๋ฒˆํ˜ธ : TCP๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•ด์„œ ๋ณด๋‚ผ ๋•Œ ์†ก์‹  ์ธก์—์„œ ์ˆ˜์‹  ์ธก์— ์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ถ”ํ›„์— ์ด๋ ‡๊ฒŒ ๋ถ„ํ• ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ํ•ฉ์น  ๋•Œ ๊ผญ ํ•„์š”ํ•œ ์ •๋ณด์ด๋‹ค.
  • ํ™•์ธ ์‘๋‹ต ๋ฒˆํ˜ธ : ๋ฐ›๋Š” ์ชฝ์€ ๋ช‡ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•˜๋Š”์ง€๋ฅผ ํ™•์ธ ์‘๋‹ต ๋ฒˆํ˜ธ์— ์‹ค์–ด ๋ณด๋‚ด๊ณ , ์ด ๋ฐ์ดํ„ฐ๋Š” ์†ก์‹  ์ธก์ด ๋‹ค์Œ ๋ฒˆ์— ๋ช‡ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š”์ง€์—๋„ ์“ฐ์ธ๋‹ค.

๋งŒ์ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์ƒ๋˜๊ฑฐ๋‚˜ ์œ ์‹ค๋˜์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ „๋‹ฌ์ด ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด, ๋ฐ์ดํ„ฐ๋Š” ์žฌ์ „์†ก๋˜์–ด์•ผ ํ•˜๊ณ  ์ด๋ฅผ ์žฌ์ „์†ก ์ œ์–ด(์˜ค๋ฅ˜ ์ œ์–ด)๋ผ๊ณ  ํ•œ๋‹ค. ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ์กฐ์ ˆํ•˜๋Š” ํ๋ฆ„ ์ œ์–ด, ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์— ๋Œ€์ฒ˜ํ•˜๋Š” ํ˜ผ์žก ์ œ์–ด๋„ ์กด์žฌํ•œ๋‹ค.

 

์œˆ๋„์šฐ ํฌ๊ธฐ

๊ทธ๋Ÿฐ๋ฐ ์œ„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•  ๋•Œ ํšจ์œจ์€ ์–ด๋–จ๊นŒ? ๋งค๋ฒˆ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ํ™•์ธ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋ฉด ํšจ์œจ์ด ๋ฌด์ฒ™ ๋‚ฎ์„ ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์—ฐ์†ํ•ด์„œ ๋ณด๋‚ด๊ณ , ํ™•์ธ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ ค๋ฉด ์ˆ˜์‹  ์ธก์— (์†ก์‹  ์ธก์ด ์—ฐ์†ํ•ด์„œ ๋ณด๋‚ด๋Š”) ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋ณด๊ด€ํ•˜๋Š” ๋ฒ„ํผ(buffer)๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ, ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ๋„˜๊ธฐ๋Š”(overflow) ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋œ๋‹ค๋ฉด ์ˆ˜์‹  ์ธก์ด ๊ฐ๋‹นํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋ฒ„ํผ๊ฐ€ ์–ด๋Š ์ •๋„์˜ ํ•œ๊ณ„๋ฅผ ๊ฐ–๋Š”์ง€ ํฌ๊ธฐ๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ณ , ์ด ์ •๋ณด๊ฐ’์€ TCP ํ—ค๋”์˜ '์œˆ๋„์šฐ ํฌ๊ธฐ(window size)'์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

TCP ํ—ค๋”์˜ ๊ธธ์ด๋Š” 4 ๋ฐ”์ดํŠธ. ์šฉ๋Ÿ‰์€ 20 ๋ฐ”์ดํŠธ์ด๋‹ค. (๋””ํดํŠธ์ด๋ฉฐ, ํ•„์š”ํ•  ๊ฒฝ์šฐ ํฌ๊ธฐ๋Š” ๋Š˜์–ด๋‚œ๋‹ค.)

์œ„์—์„œ TCP ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๋Œ€์˜ ์ปดํ“จํ„ฐ๊ฐ€ ์—ฐ๊ฒฐ ํ™•๋ฆฝ(Connection Establishment)์„ ์œ„ํ•ด 3-way handshake๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ์œˆ๋„์šฐ ํฌ๊ธฐ๋Š” ๊ทธ๋•Œ TCP ํ—ค๋”์— ๊ฐ™์ด ์ „๋‹ฌ๋˜์–ด ์„œ๋กœ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ๋‘˜ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค! ์ด๋ฅผ TCP์˜ ํ๋ฆ„ ์ œ์–ด ๊ธฐ๋Šฅ์ด๋ผ ํ•œ๋‹ค.

 

ํฌํŠธ ๋ฒˆํ˜ธ์˜ ๊ตฌ์กฐ

์ด ํฌ์ŠคํŠธ์˜ ๋ชฉ์ ์€ ์ „์†ก ๊ณ„์ธต์˜ ๋‘ ๊ฐ€์ง€ ์—ญํ• ์„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด๊ณ , ์ง€๊ธˆ๊นŒ์ง€๋Š” ๊ทธ ์ค‘ ํ•˜๋‚˜์ธ ์˜ค๋ฅ˜ ์ ๊ฒ€ ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณด์•˜๋‹ค. ๋‚˜๋จธ์ง€ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์ „์†ก๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชฉ์ ์ง€๊ฐ€ ์–ด๋–ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ์ง€๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์—ญํ• ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋„์ฐฉํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฉ”์ผ ํ”„๋กœ๊ทธ๋žจ์„ ๋ชฉ์ ์ง€๋กœ ๊ฐ–๋Š”์ง€, ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋ชฉ์ ์ง€๋กœ ๊ฐ–๋Š”์ง€๋ฅผ ํŒ๋‹จํ•œ๋‹ค.

 

TCP ํ—ค๋”์— ํ•ด๋‹น ์ •๋ณด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค. TCP ํ—ค๋”์—๋Š” ์ถœ๋ฐœ์ง€, ๋ชฉ์ ์ง€์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋งŒ ๋‹ด๊ธฐ๊ณ , ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์—์„œ IP ์ฃผ์†Œ๊ฐ€ ๋‹ด๊ธธ ๊ฒƒ์ด๋‹ค.

 

 

  • ์˜ค๋ฅธ์ชฝ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ(@์ƒํ™œ์ฝ”๋”ฉ, ํ•˜๋‹จ ๋งํฌ ์ถœ์ฒ˜ ์ฐธ๊ณ ), 0~1023๋ฒˆ  ํฌํŠธ๋Š” ์ฃผ์š” ํ”„๋กœํ† ์ฝœ์ด ์‚ฌ์šฉํ•˜๋„๋ก ์˜ˆ์•ฝ๋œ ์ž˜ ์•Œ๋ ค์ง„ ํฌํŠธ(Well-known ports)์ด๋‹ค. ์ฃผ๋กœ ์„œ๋ฒ„ ์ธก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.
  • 1024๋ฒˆ์€ ์˜ˆ์•ฝ ๋˜์–ด ์žˆ์ง€๋งŒ, ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š๋Š” ํฌํŠธ์ด๋ฉฐ,
  • 1025๋ฒˆ ์ด์ƒ์€ ๋žœ๋ค ํฌํŠธ๋กœ, ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ์†ก์‹  ํฌํŠธ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์›๊ฒฉ  ๋กœ๊ทธ์ธ(๋ณด์•ˆ) : SSH (22)
  • ์ „์ž๋ฉ”์ผ(์†ก์‹ ) : SMTP (25)
  • Domain Name System : DNS (53)
  • www : HTTP (80)
  • ์ „์ž๋ฉ”์ผ(์ˆ˜์‹ ) : POP3 (110)
  • www(๋ณด์•ˆ) : HTTPS (443)

์ด๋•Œ ์„œ๋ฒ„ ์ธก์€ ํฌํŠธ ๋„˜๋ฒ„๊ฐ€ ์ •ํ™•ํžˆ ์„ค์ •์ด ๋˜์–ด ์žˆ์–ด์•ผ ๋„คํŠธ์›Œํฌ ์ „์†ก ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•ˆ์ „ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ชฉ์ ์ง€์— ๋„์ฐฉํ•˜์ง€๋งŒ, ํด๋ผ์ด์–ธํŠธ ์ชฝ์€ ์ž„์˜์˜ ํฌํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ํ• ๋‹น๋˜์–ด์„œ ๊ตณ์ด ์ •ํ•ด๋‘์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

UDP์˜ ๊ตฌ์กฐ

๋น„์—ฐ๊ฒฐํ†ต์‹ ์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ UDP๋Š” TCP๋งŒํผ ๊ผผ๊ผผํ•˜๊ฒŒ ์‹œ๊ฐ„์„ ๋“ค์—ฌ ํ™•์ธํ•˜๋Š” ์ž‘์—…์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํšจ์œจ์„ฑ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—ฐ๊ฒฐ ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

UDP ํ—ค๋”

์ถœ๋ฐœ์ง€ ํฌํŠธ (16๋น„ํŠธ) ๋ชฉ์ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ (16๋น„ํŠธ)
๊ธธ์ด (16๋น„ํŠธ) ์ฒดํฌ์„ฌ (16๋น„ํŠธ)

TCP์˜ ์„ธ๊ทธ๋จผํŠธ์™€ ๊ฐ™์€ ๊ฒƒ์ด UDP์—์„œ๋Š” UDP ๋ฐ์ดํ„ฐ๊ทธ๋žจ์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

ํšจ์œจ์„ฑ์„ ์ค‘์š”์‹œ์—ฌ๊ธฐ๋ฏ€๋กœ ํ™•์ธ ์‘๋‹ต ์—†์ด, ์—ฐ์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ „์†ก ์†๋„๊ฐ€ ๋ฌด์ฒ™ ๋น ๋ฅด๋‹ค. ๋˜ํ•œ, UDP๋ฅผ ์ด์šฉํ•˜๋ฉด ๋žœ ๋‚ด ์ปดํ“จํ„ฐ๋‚˜ ๋„คํŠธ์›Œํฌ ์žฅ๋น„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๊ด„๋กœ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค. (๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ)

TCP๋Š” 3-way handshake์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ์— ํ™•์ธ ์‘๋‹ต์„ ํ•˜๋‚˜์”ฉ ๋ณด๋‚ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— '์ผ๊ด„๋กœ', '๋ถˆํŠน์ •๋‹ค์ˆ˜์—๊ฒŒ' ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ ํ†ต์‹  ๋ฐฉ์‹๊ณผ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์•„ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋Š” ํ•˜์ง€ ์•Š๋Š”๋‹ค.

Wireshark

@Chris Greer / How TCP Works - Sequence Numbers

์ด๋Ÿฐ ํŒจํ‚ท์˜ ํ๋ฆ„์„ ์กฐ๊ธˆ ๋” ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ wireshark๋ผ๋Š” ํˆด์„ ์ด์šฉํ•ด ํŒจํ‚ท์˜ ํ๋ฆ„์„ ๋ถ„์„ํ•ด๋ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

๐Ÿ” WireShark : 1998๋…„ ์ œ๋Ÿด๋“œ ์ฝค์Šค ์ด๋”๋ฆฌ์–ผ์ด ๋ฌด๋ฃŒ๋กœ ์ œ์ž‘ํ•ด ๋ฐฐํฌํ•œ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๋ถ„์„ ํˆด. wireshark๋Š” ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ชจ๋“  ํŒจํ‚ท์„ ์บก์ณํ•œ๋‹ค. ์™€์ด์–ด์ƒคํฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๋ชจ๋“  ํŒจํ‚ท์„ ์บก์ณํ•˜๊ณ , ํƒ์ง€๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค. ์‹คํ–‰ ํ›„ ๊ฒฝ๊ณผ ์‹œ๊ฐ„, ์†ก์‹  IP, ์ˆ˜์‹  IP, ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ, ํŒจํ‚ท์˜ ํฌ๊ธฐ ์ •๋ณด ๋“ฑ ๋‹ค์–‘ํ•œ ํŒจํ‚ท ๋‚ด ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ฐธ๊ณ 

[์ƒํ™œ์ฝ”๋”ฉ] WEB2 - Home Server

์™€์ด์–ด์ƒคํฌ(WireShark) ์‚ฌ์šฉ๋ฐฉ๋ฒ•

How TCP Works - Sequence Numbers

Sharetechnote

'๐Ÿ‘ฉโ€๐Ÿ’ป > Network' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋„คํŠธ์›Œํฌ ์Šคํ„ฐ๋””] 8 ๋„คํŠธ์›Œํฌ์˜ ์ „์ฒด ํ๋ฆ„ ์‚ดํŽด๋ณด๊ธฐ (์ปดํ“จํ„ฐ->์Šค์œ„์น˜->๋ผ์šฐํ„ฐ->์›น์„œ๋ฒ„ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ์ „๋‹ฌ, ์บก์Šํ™”, ์—ญ์บก์Šํ™”, OSI ๊ณ„์ธต, ๋ผ์šฐํŒ…)  (0) 2020.10.30
[๋„คํŠธ์›Œํฌ ์Šคํ„ฐ๋””] 7 ์‘์šฉ ๊ณ„์ธต : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐ์ดํ„ฐ ์ „์†กํ•˜๊ธฐ(์›น ์„œ๋ฒ„, DNS, ์ด๋ฆ„ ํ•ด์„ ๊ตฌ์กฐ, ๋ฉ”์ผ ์†ก์ˆ˜์‹ , SMTP, POP3, HTTP)  (0) 2020.10.27
[๋„คํŠธ์›Œํฌ ์Šคํ„ฐ๋””] 5 ๋„คํŠธ์›Œํฌ ๊ณ„์ธต : ๋ชฉ์ ์ง€์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ (IP, ๋ผ์šฐํ„ฐ, IP ์ฃผ์†Œ, ์„œ๋ธŒ๋„ท, ๋ผ์šฐํŒ…)  (0) 2020.10.17
[๋„คํŠธ์›Œํฌ ์Šคํ„ฐ๋””] 4 ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต : ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ ๊ฐ„ ์ „์†ก๊ณผ ์ด๋”๋„ท(MAC ์ฃผ์†Œ, ํ”„๋ ˆ์ž„, ์Šค์œ„์น˜, ์ „์ด์ค‘ ํ†ต์‹ , ๋ฐ˜์ด์ค‘ ํ†ต์‹ )  (0) 2020.10.13
[๋„คํŠธ์›Œํฌ ์Šคํ„ฐ๋””] 3 ๋ฌผ๋ฆฌ ๊ณ„์ธต : ๋ฐ์ดํ„ฐ๋ฅผ ์ „๊ธฐ ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ (๋žœ ์นด๋“œ, UTP/ FTP/STP ์ผ€์ด๋ธ”, ์ปค๋„ฅํ„ฐ, ๋ฆฌํ”ผํ„ฐ, ํ—ˆ๋ธŒ, ์Šค์œ„์น˜)  (0) 2020.10.13