TCP / UDP

Reference: [์ฑ…] IT ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ๋„คํŠธ์›Œํฌ ์ž…๋ฌธ

  • 2๊ณ„์ธต๊ณผ 3๊ณ„์ธต์€ ๋ชฉ์ ์ง€๋ฅผ ์ •ํ™•ํžˆ ์ฐพ์•„๊ฐ€๊ธฐ ์œ„ํ•œ ์ฃผ์†Œ ์ œ๊ณต์ด ๋ชฉ์ ์ด์—ˆ์ง€๋งŒ, 4๊ณ„์ธต์—์„œ ๋™์ž‘ํ•˜๋Š” protocol์€ ๋งŒ๋“ค์–ด์ง„ ๋ชฉ์ ์ด 2, 3 ๊ณ„์ธต๊ณผ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค

    • ๋ชฉ์ ์ง€ ๋‹จ๋ง ์•ˆ์—์„œ ๋™์ž‘ํ•˜๋Š” ์—ฌ๋Ÿฌ application process ์ค‘ ํ†ต์‹ ํ•ด์•ผ ํ•  ๋ชฉ์ ์ง€ process๋ฅผ ์ •ํ™•ํžˆ ์ฐพ์•„๊ฐ€๊ณ ,

    • packet ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๋„๋ก ์ž˜ ์กฐํ•ฉํ•ด

    • ์›๋ž˜ data๋ฅผ ์ž˜ ๋งŒ๋“ค์–ด๋‚ด๊ธฐ ์œ„ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค

1. Layer 4 Protocol (TCP, UDP) and Service Port

  • Data๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ›๋Š” Encapsulation, Decapsulation ๊ณผ์ •์— ๊ฐ ๊ณ„์ธต์—์„œ ์ •์˜ํ•˜๋Š” header๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ , ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค

    • ๋‹ค์–‘ํ•œ ์ •๋ณด ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋‘ ๊ฐ€์ง€ ์ •๋ณด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค

      1. ๊ฐ ๊ณ„์ธต์—์„œ ์ •์˜ํ•˜๋Š” ์ •๋ณด

        • ์ˆ˜์‹  ์ธก์˜ ๋™์ผ ๊ณ„์ธต์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด

      2. ์ƒ์œ„ protocol ์ง€์‹œ์ž ์ •๋ณด

        • Decapsulation ๊ณผ์ •์—์„œ ์ƒ์œ„ ๊ณ„์ธต์˜ protocol์ด๋‚˜ process๋ฅผ ์ •ํ™•ํžˆ ์ฐพ์•„๊ฐ€๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ

  • TCP/IP Protocol Stack์—์„œ 4๊ณ„์ธต์€ TCP์™€ UDP๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค

    • 4๊ณ„์ธต์˜ ๋ชฉ์ ์€ application์—์„œ ์‚ฌ์šฉํ•˜๋Š” process๋ฅผ ์ •ํ™•ํžˆ ์ฐพ์•„๊ฐ€๊ณ , data๋ฅผ ๋ถ„ํ• ํ•œ packet์„ ์ž˜ ์ชผ๊ฐœ ๋ณด๋‚ด๊ณ  ์ž˜ ์กฐ๋ฆฝํ•˜๋Š” ๊ฒƒ์ด๋‹ค

    • packet์„ ๋ถ„ํ• ํ•˜๊ณ  ์กฐ๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด Sequence Number์™€ ACK Number๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

  • TCP/IP Protocol Stack์—์„œ ์ƒ์œ„ protocol ์ง€์‹œ์ž๋Š” port๋ฒˆํ˜ธ์ด๋‹ค

    • 4๊ณ„์ธต protocol ์ง€์‹œ์ž์ธ port ๋ฒˆํ˜ธ๋Š” ์ถœ๋ฐœ์ง€์™€ ๋ชฉ์ ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค

Well Known Port

  • HTTP TCP 80, HTTPS TCP 443, SMTP TCP 25์™€ ๊ฐ™์ด ์ž˜ ์•Œ๋ ค์ง„ Port๋ฅผ Well known port ๋ผ๊ณ  ํ•œ๋‹ค

  • ์ด port๋“ค์€ ์ด๋ฏธ ์ธํ„ฐ๋„ท ์ฃผ์†Œ ํ• ๋‹น ๊ธฐ๊ตฌ์ธ **IANA (Internet Assgined Numbers Authority)**์— ๋“ฑ๋ก๋˜๊ณ  1023๋ฒˆ ์ดํ•˜์˜ port ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

  • ๋‹ค์–‘ํ•œ application์— port ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด Registered Port ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

    • 1024 ~ 49151 ์˜ ๋ฒ”์œ„์ด๋ฉฐ,port ๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹น๋ฐ›๊ธฐ ์œ„ํ•ด ์‹ ์ฒญํ•˜๋ฉด IANA์— ๋“ฑ๋ก๋˜์–ด ๊ด€๋ฆฌ๋œ๋‹ค

      • but, ๊ณต์‹ ๋ฒˆํ˜ธ์™€ ๋น„๊ณต์‹ ๋ฒˆํ˜ธ๊ฐ€ ํ˜ผ์žฌ๋˜์–ด ์žˆ๊ณ , ์‚ฌ์„ค port ๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค

  • ๋™์ , ์‚ฌ์„ค, ์ž„์‹œ port ์˜ ๋ฒ”์œ„๋Š” 49152 ~ 65535 ์ด๋‹ค

    • ์ด ๋ฒ”์œ„์˜ port ๋ฒˆํ˜ธ๋Š” IANA์— ๋“ฑ๋ก๋˜์–ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค

    • ์ด port ๋ฒˆํ˜ธ๋Š” ์ž๋™์œผ๋กœ ํ• ๋‹น๋˜๊ฑฐ๋‚˜, ์‚ฌ์„ค ์šฉ๋„๋กœ ํ• ๋‹น๋˜๊ณ , client์˜ ์ž„์‹œ port ๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉ๋œ๋‹ค!

2. TCP

  • TCP๋Š” Layer 4์˜ ํŠน์ง•์„ ๋Œ€๋ถ€๋ถ„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค

  • TCP protocol์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๊ณต์šฉ๋ง์—์„œ๋„ ์ •๋ณด์œ ์‹ค ์—†๋Š” ํ†ต์‹ ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด

    • session์„ ์•ˆ์ „ํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•˜๊ณ 

    • data๋ฅผ ๋ถ„ํ• ํ•˜๊ณ 

    • ๋ถ„ํ• ๋œ packet์ด ์ž˜ ์ „์†ก๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค

  • Packet ์— ๋ฒˆํ˜ธ(Sequence Number)๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์ž˜ ์ „์†ก๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•ด ์‘๋‹ต(Acknowledge Number) ํ•œ๋‹ค

    • ๋˜ํ•œ, ํ•œ๊บผ๋ฒˆ์— ์–ผ๋งˆ๋‚˜ ๋ณด๋‚ด์•ผ ์ˆ˜์‹ ์ž๊ฐ€ ์ž˜ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ „์†กํฌ๊ธฐ (Window Size)๊นŒ์ง€ ๊ณ ๋ คํ•ด ํ†ต์‹ ํ•œ๋‹ค

      • ์ด๋Ÿฌํ•œ TCP์˜ ์—ญํ•  ๋•๋ถ„์— network ์ƒํƒœ๋ฅผ ์‹ฌ๊ฐํ•˜๊ฒŒ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ network๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

2-1. Packet ์ˆœ์„œ์™€ ์‘๋‹ต ๋ฒˆํ˜ธ (ACK Number)

  • TCP์—์„œ๋Š” ๋ถ„ํ• ๋œ packet์„ ์ž˜ ๋ถ„ํ• ํ•˜๊ณ  ์ˆ˜์‹ ์ธก์ด ์ž˜ ์กฐํ•ฉํ•˜๋„๋ก packet์— ์ˆœ์„œ๋ฅผ ์ฃผ๊ณ  ์‘๋‹ต ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค

  • Packet์— ์ˆœ์„œ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์„ Sequence Number, ์‘๋‹ต ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์„ ACK Number ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค

    • ๋‘ ๋ฒˆํ˜ธ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•ด ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์ค‘๊ฐ„์— packet์ด ์†์‹ค๋œ ๊ฒƒ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค

Sequence Number ์™€ ACK Number์˜ ๊ธฐ๋ณธ ๋™์ž‘ ๋ฐฉ์‹

  • ๋ณด๋‚ด๋Š” ์ชฝ์—์„œ packet์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ๋ฐ›๋Š” ์ชฝ์€ ์ด ๋ฒˆํ˜ธ์˜ ์ˆœ์„œ๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค

  • ๋ฐ›์€ packet ๋ฒˆํ˜ธ๊ฐ€ ๋งž์œผ๋ฉด ์‘๋‹ต์„ ์ฃผ๋Š”๋ฐ, ์ด๋•Œ ๋‹ค์Œ ๋ฒˆํ˜ธ์˜ packet์„ ์š”์ฒญํ•œ๋‹ค

    • ์ด ์ˆซ์ž๋ฅผ ACK Number๋ผ๊ณ  ํ•œ๋‹ค

  • ์†ก์‹  ์ธก์ด 1๋ฒˆ packet์„ ๋ณด๋ƒˆ๋Š”๋ฐ ์ˆ˜์‹  ์ธก์ด ์ด packet์„ ์ž˜ ๋ฐ›๋Š”๋‹ค๋ฉด 1๋ฒˆ์„ ์ž˜ ๋ฐ›์•˜์œผ๋‹ˆ ๋‹ค์Œ์—๋Š” 2๋ฒˆ์„ ๋‹ฌ๋ผ๋Š” ํ‘œ์‹œ๋กœ ACK Number 2๋ฅผ ์ค€๋‹ค

ex)

  1. ์ถœ๋ฐœ์ง€์—์„œ Sequence Number ๋ฅผ 0์œผ๋กœ ๋ณด๋‚ธ๋‹ค (SEQ = 0)

  2. ์ˆ˜์‹  ์ธก์—์„œ๋Š” 0๋ฒˆ packet์„ ์ž˜ ๋ฐ›์•˜๋‹ค๋Š” ํ‘œ์‹œ๋กœ ์‘๋‹ต ๋ฒˆํ˜ธ (ACK Number ์— 1์„ ์ ์–ด ์‘๋‹ตํ•œ๋‹ค

    ์ด๋•Œ ์ˆ˜์‹  ์ธก์—์„œ๋Š” ์ž์‹ ์ด ์ฒ˜์Œ ๋ณด๋‚ด๋Š” packet์ด๋ฏ€๋กœ ์ž์‹ ์˜ packet์— Sequence Number 0์„ ๋ถ€์—ฌํ•œ๋‹ค

  3. ์ด packet์„ ๋ฐ›์€ ์†ก์‹  ์ธก์€ Sequence Number๋ฅผ1๋กœ, (์ˆ˜์‹  ์ธก์ด ACK Number๋กœ 1๋ฒˆ packet์„ ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ–ˆ์œผ๋‹ˆ๊นŒ!!)

    ACK Number๋Š” ์ƒ๋Œ€๋ฐฉ์˜ 0๋ฒˆ Sequence๋ฅผ ์ž˜ ๋ฐ›์•˜๋”ฐ๋Š” ์˜๋ฏธ๋กœ Sequence Number๋ฅผ 1๋กœ ๋ถ€์—ฌํ•ด ๋‹ค์‹œ ์†ก์‹ ํ•œ๋‹ค!

2-2. Window Size & Sliding Window

  • TCP๋Š” ์ผ๋ฐฉ์ ์œผ๋กœ packet์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒ๋Œ€๋ฐฉ์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ๋ฐ›์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ACK ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹ค์Œ packet์„ ์ „์†กํ•œ๋‹ค

    • Packet์ด ์ž˜ ์ „์†ก๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„ packet์„ ๋ฐ›๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ ํ†ต์‹  ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ์ง€๋งŒ, ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๊ฐ€ ๋จผ ๊ฑฐ๋ฆฌ์— ๋–จ์–ด์ ธ ์žˆ์œผ๋ฉด **์™•๋ณต ์ง€์—ฐ์‹œ๊ฐ„ (Round Trip Time, RTT)**์ด ๋Š˜์–ด๋‚˜๋ฏ€๋กœ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋” ๊ธธ์–ด์ง„๋‹ค

      • ๋งŒ์•ฝ ์ž‘์€ packet์„ ํ•˜๋‚˜ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›์•„์•ผ๋งŒ ํ•˜๋‚˜๋ฅผ ๋” ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ชจ๋“  data๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐ ๊ธด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์ด๋‹ค

      • ๊ทธ๋ž˜์„œ data๋ฅผ ๋ณด๋‚ผ ๋•Œ packet์„ ํ•˜๋‚˜๋งŒ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋งŽ์€ packet์„ ํ•œ๊บผ๋ฒˆ์— ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ํ•˜๋‚˜๋งŒ ๋ฐ›๋Š”๋‹ค

  • ๊ฐ€๋Šฅํ•˜๋ฉด ์ตœ๋Œ€ํ•œ ๋งŽ์€ packet์„ ํ•œ๊บผ๋ฒˆ์— ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด์ง€๋งŒ, Network ์ƒํƒœ๊ฐ€ ์•ˆ ์ข‹์œผ๋ฉด packet ์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง€๋ฏ€๋กœ ์ ์ ˆํ•œ ์†ก์‹ ๋Ÿ‰์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ,

    • ํ•œ ๋ฒˆ์— data๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” data์˜ ํฌ๊ธฐ๋ฅผ Window Size๋ผ๊ณ  ํ•˜๊ณ ,

    • Network ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ด window size๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ์„ Sliding Window๋ผ๊ณ  ํ•œ๋‹ค

  • TCP Header์—์„œ window size๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” 2^16 ์ด๋‹ค

    • ์‹ค์ œ๋กœ 64K๋งŒํผ window size๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด size๋Š” ํšŒ์„ ์˜ ์•ˆ์ •์„ฑ์ด ๋†’์•„์ง€๊ณ  ๊ณ ์†ํ™”๋˜๋Š” ํ˜„๋Œ€ network์—์„œ๋Š” ๋„ˆ๋ฌด ์ž‘์€ ์ˆซ์ž์ด๋‹ค

      • ๊ทธ๋ž˜์„œ window size๋ฅผ 64K๋ณด๋‹ค ๋Œ€ํญ ๋Š˜๋ ค ํ†ต์‹ ํ•˜๋Š”๋ฐ TCP header๋Š” ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ header size๋ฅผ ๋Š˜๋ฆฌ์ง€ ์•Š๊ณ  ๋’ค์˜ ์ˆซ์ž๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ window size๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ ํ†ต์‹ ํ•œ๋‹ค

        • ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ์ˆซ์ž์˜ 10๋ฐฐ, 100๋ฐฐ๋กœ window๊ฐ€ ์ปค์ง„๋‹ค!

  • TCP๋Š” data ์œ ์‹ค์ด ๋ฐœ์ƒํ•˜๋ฉด window size๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ๋–จ์–ด๋œจ๋ฆฌ๊ณ  ์ •์ƒ์ ์ธ ํ†ต์‹ ์ด ๋˜๋Š” ๊ฒฝ์šฐ ์„œ์„œํžˆ ํ•˜๋‚˜์”ฉ ๋Š˜๋ฆฐ๋‹ค

    • ๋งŒ์•ฝ Network ๊ฒฝํ•ฉ์ด ๋ฐœ์ƒํ•ด packet drop์ด ์ƒ๊ธฐ๋ฉด ์ž‘์•„์ง„ window size๋กœ ์ธํ•ด data ํ†ต์‹  ์†๋„๊ฐ€ ๋А๋ ค์ ธ ํšŒ์„ ์„ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค

      • ์ด ๊ฒฝ์šฐ ๊ฒฝํ•ฉ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด

        1. ํšŒ์„  ์†๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ฑฐ๋‚˜

        2. ๊ฒฝํ•ฉ์„ ์ž„์‹œ๋กœ ํ”ผํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” buffer๊ฐ€ ํฐ network ์žฅ๋น„๋ฅดใ„น ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜

        3. TCP ์ตœ์ ํ™” solution์„ ์‚ฌ์šฉํ•ด ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค

2-3. 3-Way Handshake

  • TCP์—์„œ๋Š” ์œ ์‹ค์—†๋Š” ์•ˆ์ „ํ•œ ํ†ต์‹ ์„ ์œ„ํ•ด ํ†ต์‹  ์‹œ์ž‘ ์ „ ์‚ฌ์ „ ์—ฐ๊ฒฐ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค

    • ๋งŒ์•ฝ ๋ชฉ์ ์ง€๊ฐ€ data๋ฅผ ๋ฐ›์„ ์ค€๋น„๊ฐ€ ์•ˆ ๋œ ์ƒํ™ฉ์—์„œ data๋ฅผ ์ผ๋ฐฉ์ ์œผ๋กœ ์ „์†กํ•˜๋ฉด ๋ชฉ์ ์ง€์—์„œ๋Š” data๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์–ด data๊ฐ€ ๋ฒ„๋ ค์ง„๋‹ค

    • ์ด๋Ÿฐ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด TCP protocol์€ data๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๋‚ด๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฏธ๋ฆฌ ํ™•์ธํ•˜๋Š” ์ž‘์—…์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์ด๋‹ค!

  • Packet Network์—์„œ๋Š” ๋™์‹œ์— ๋งŽ์€ ์ƒ๋Œ€๋ฐฉ๊ณผ ํ†ต์‹ ํ•˜๋ฏ€๋กœ ์ •ํ™•ํ•œ ํ†ต์‹ ์„ ์œ„ํ•ด ํ†ต์‹  ์ „ ํ†ต์‹ ์— ํ•„์š”ํ•œ resource๋ฅผ ๋ฏธ๋ฆฌ ํ™•๋ณดํ•˜๋Š” ์ž‘์—…์ด ์ค‘์š”ํ•˜๋‹ค

    • TCP์—์„œ๋Š” 3๋ฒˆ์˜ packet์„ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉด์„œ ํ†ต์‹ ์„ ์„œ๋กœ ์ค€๋น„ํ•˜๋ฏ€๋กœ 3-Way Handshake๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค

  • TCP์—์„œ๋Š” ์ด๋Ÿฐ 3-Way Handshake ์ง„ํ–‰ ์ƒํ™ฉ์— ๋”ฐ๋ผ state ์ •๋ณด๋ฅผ ๋ถ€๋ฅด๋Š” ์ด๋ฆ„์ด ๋‹ค๋ฅด๋‹ค

    • Server์—์„œ๋Š” service๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด client์˜ ์ ‘์†์„ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋Š” LISTEN state๋กœ ๋Œ€๊ธฐํ•œ๋‹ค

    • Client์—์„œ ํ†ต์‹ ์„ ์‹œ๋„ํ•  ๋•Œ Syn packet์„ ๋ณด๋‚ด๋Š”๋ฐ client์—์„œ๋Š” ์ด ์ƒํƒœ๋ฅผ SYN-SENT state ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค

    • Client์˜ Syn ์„ ๋ฐ›์€ server๋Š” SYN-RECEIVED state๋กœ ๋ณ€๊ฒฝ๋˜๊ณ , Syn, Ack๋กœ ์‘๋‹ตํ•œ๋‹ค

    • ์‘๋‹ต์„ ๋ฐ›์€ client๋Š” ESTABLISHED state๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๊ทธ์— ๋Œ€ํ•œ ์‘๋‹ต์„ server์— ๋ณด๋‚ธ๋‹ค

    • Server์—์„œ๋„ client์˜ Ack ์‘๋‹ต์„ ๋ฐ›๊ณ  ESTABLISHED state๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค

      • ESTABLISHED state๋Š” server์™€ client ๊ฐ„์˜ ์—ฐ๊ฒฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค!

    3-Way-Handshake
  • 3-Way Handshake ๊ณผ์ •์ด ์ƒ๊ธฐ๋‹ค๋ณด๋‹ˆ ์–ด๋–ค packet์ด ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ ์‹œ๋„์ด๊ณ  ๊ธฐ์กด์— ๋Œ€ํ•œ ์‘๋‹ต์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด header์— Flag๋ผ๋Š” ๊ฐ’์„ ๋„ฃ์–ด ํ†ต์‹ ํ•œ๋‹ค

    • TCP Flags

      • SYN

        • ์—ฐ๊ฒฐ ์‹œ์ž‘ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค

        • ์—ฐ๊ฒฐ์ด ์‹œ์ž‘๋  ๋•Œ SYN Flag์— 1๋กœ ํ‘œ์‹œํ•ด ๋ณด๋‚ธ๋‹ค

      • ACK

        • ACK ๋ฒˆํ˜ธ๊ฐ€ ์œ ํšจํ•  ๊ฒฝ์šฐ 1๋กœ ํ‘œ์‹œํ•ด ๋ณด๋‚ธ๋‹ค

        • ์ดˆ๊ธฐ SYN์ด ์•„๋‹Œ ๋ชจ๋“  packet์€ ๊ธฐ์กด message์— ๋Œ€ํ•œ ์‘๋‹ต์ด๋ฏ€๋กœ ACK flag๊ฐ€ 1๋กœ ํ‘œ๊ธฐ๋œ๋‹ค

      • FIN

        • ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์‹œ 1๋กœ ํ‘œ์‹œ๋œ๋‹ค

        • Data ์ „์†ก์„ ๋งˆ์นœ ํ›„ ์ •์ƒ์ ์œผ๋กœ ์–‘๋ฐฉํ–ฅ ์ข…๋ฃŒ ์‹œ ์‚ฌ์šฉ๋œ๋‹ค

      • RST

        • ์—ฐ๊ฒฐ ์ข…๋ฃŒ์‹œ 1๋กœ ํ‘œ์‹œ๋œ๋‹ค

        • ์—ฐ๊ฒฐ ๊ฐ•์ œ ์ข…๋ฃŒ๋ฅผ ์œ„ํ•ด ์—ฐ๊ฒฐ์„ ์ผ๋ฐฉ์ ์œผ๋กœ ๋Š์„ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค

      • URG

        • ๊ธด๊ธ‰ data์ธ ๊ฒฝ์šฐ 1๋กœ ํ‘œ์‹œํ•ด ๋ณด๋‚ธ๋‹ค

      • PSH

        • Server์ธก์—์„œ ์ „์†กํ•  data๊ฐ€ ์—†๊ฑฐ๋‚˜ data๋ฅผ buffering ์—†์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ฆ‰์‹œ ์ „๋‹ฌํ•  ๊ฒƒ์„ ์ง€์‹œํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค

3. UDP

  • TCP์™€ ๋‹ฌ๋ฆฌ UDP๋Š” Layer 4 protocol์ด ๊ฐ€์ ธ์•ผ ํ•  ํŠน์ง•์ด ๊ฑฐ์˜ ์—†๋‹ค

    • 4๊ณ„์ธต์—์„œ๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ต์‹ ์„ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค

      • ์—ฐ๊ฒฐ์„ ๋ฏธ๋ฆฌ ํ™•๋ฆฝ (3-Way Handshake)

      • Data๋ฅผ ์ž˜ ๋ถ„ํ• ํ•˜๊ณ  ์กฐ๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด packet ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์ˆ˜์‹ ๋œ data์— ๋Œ€ํ•ด ์‘๋‹ต

      • Data๋ฅผ ํŠน์ • ๋‹จ์œ„(Window Size)๋กœ ๋ณด๋‚ด๊ณ  memory์— ์œ ์ง€ํ•˜๋‹ค๊ฐ€ ACK Number๋ฅผ ๋ฐ›์€ ํ›„ ํ†ต์‹ ์ด ์ž˜ ๋œ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•˜๊ณ ๋‚˜์„œ์•ผ memory์—์„œ ์ด data๋“ค์„ ์ œ๊ฑฐ

      • ๋งŒ์•ฝ ์ค‘๊ฐ„์— ์œ ์‹ค์ด ์žˆ์œผ๋ฉด Sequence Number์™€ ACK Number๋ฅผ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ์ด๋ฅผ ํŒŒ์•…ํ•˜๊ณ , memory์— ์œ ์ง€ํ•ด๋†“์€ data๋ฅผ ์ด์šฉํ•ด ์žฌ์ „์†ก

        • ์ด ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด data ์œ ์‹ค์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋”๋ผ๋„ ๋ฐ”๋กœ ์žก์„ ์ˆ˜ ์žˆ์Œ

    • UDP์—๋Š” ์œ„์˜ TCP์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ์ „ํ˜€ ์—†๋‹ค

  • UDP header๋Š” TCP์™€ ๋น„๊ตํ•˜๋ฉด ๋‚ด์šฉ์ด ๊ฑฐ์˜ ์—†๋‹ค

    • UDP์—๋Š” 4๊ณ„์ธต์˜ ํŠน์ง•์ธ ์‹ ๋ขฐ ํ†ต์‹ ์„ ์œ„ํ•œ ๋‚ด์šฉ (Sequence Number,ACK Number, Flag, Window Size) ์ด ์—†๋‹ค

  • Data ํ†ต์‹ ์€ data ์ „์†ก์˜ ์‹ ๋ขฐ์„ฑ์ด ํ•ต์‹ฌ์ด๋‹ค

    • application์—์„œ ๊ฑฑ์ •ํ•˜์ง€ ์•Š๊ณ  data๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด data ํ†ต์‹ ์˜ ๋ชฉ์ ์ด์ง€๋งŒ,

    • UDP๋Š” data ์ „์†ก์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š” protocol ์ด๋ฏ€๋กœ ์ œํ•œ๋œ ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค

  • UDP๋Š” ์Œ์„ฑ data๋‚˜ ์‹ค์‹œ๊ฐ„ streamnig๊ณผ ๊ฐ™์ด ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•œ protocol์ด๋‚˜ application์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋‚˜ ์‚ฌ๋‚ด ๋ฐฉ์†ก์ด๋‚˜ ์ฆ๊ถŒ ์‹œ์„ธ ๋ฐ์ดํ„ฐ ์ „์†ก์— ์‚ฌ์šฉ๋˜๋Š” multicast ์ฒ˜๋Ÿผ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ๋‹ค์ˆ˜์˜ ๋‹จ๋ง๊ณผ ํ†ต์‹ ์— ์‘๋‹ต์„ ๋ฐ›๊ธฐ ์–ด๋ ค์šด ํ™˜๊ฒฝ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค

    • Data๋ฅผ ์ „์†กํ•˜๋Š”๋ฐ ์‹ ๋ขฐ์„ฑ๋ณด๋‹ค ์ผ๋ถ€ data๊ฐ€ ์œ ์‹ค๋˜๋”๋ผ๋„ ์‹œ๊ฐ„์— ๋งž์ถ”์–ด ๊ณ„์† ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ํ™”์ƒํšŒ์˜ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

      • UDP๋Š” ์ค‘๊ฐ„์— data๊ฐ€ ์ผ๋ถ€ ์œ ์‹ค๋˜๋”๋ผ๋„ ์œ ์‹ค๋œ ์ƒํƒœ๋กœ data๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค!

  • UDP๋Š” TCP์™€ ๋‹ฌ๋ฆฌ ํ†ต์‹  ์‹œ์ž‘ ์ „ 3-Way Handshake์™€ ๊ฐ™์ด ์‚ฌ์ „์— ์—ฐ๊ฒฐ์„ ํ™•๋ฆฝํ•˜๋Š” ์ ˆ์ฐจ๊ฐ€ ์—†๋‹ค

    • ๊ทธ ๋Œ€์‹  UDP์—์„œ ์ฒซ data๋Š” resource ํ™•๋ณด๋ฅผ ์œ„ํ•ด Interrupt๋ฅผ ๊ฑฐ๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์œ ์‹ค๋œ๋‹ค

      • ๊ทธ๋ž˜์„œ UDP protocol์„ ์‚ฌ์šฉํ•˜๋Š” application์ด ๋Œ€๋ถ€๋ถ„ ์ด๋Ÿฐ ์ƒํ™ฉ์„ ์ธ์ง€ํ•˜๊ณ  ๋™์ž‘ํ•˜๊ฑฐ๋‚˜,

      • ์—ฐ๊ฒฐ ํ™•๋ฆฝ์€ TCP protocol์„ ์‚ฌ์šฉํ•˜๊ณ , application ๋ผ๋ฆฌ ๋ชจ๋“  ์ค€๋น„๋ฅผ ๋งˆ์นœ ํ›„ ์‹ค์ œ data๋งŒ UDP๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค

  • ex)

    • Netflix๋‚˜ Youtube์™€ ๊ฐ™์ด ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•˜์ง€ ์•Š์€ ๋‹จ์ผ ์‹œ์ฒญ์ž๋ฅผ ์œ„ํ•œ ์—ฐ๊ฒฐ์€ TCP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

    • ์‹ค์‹œ๊ฐ„ ํ™”์ƒํšŒ์˜ ์†”๋ฃจ์…˜์€ data ์ „์†ก์ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ผ์–ด๋‚˜๊ณ  ์‹œ๊ฐ„์— ๋งค์šฐ ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜๋ฏ€๋กœ TCP ์ด์šฉ ํ™˜๊ฒฝ์—์„œ data ์œ ์‹ค์ด ๋ฐœ์ƒํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” network ํ’ˆ์งˆ์ด ๋‚˜์˜๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

TCP vs UDP

TCP
UDP

์—ฐ๊ฒฐ ์ง€ํ–ฅ (Connection Oriented)

๋น„์—ฐ๊ฒฐํ˜• (Connectionless)

์˜ค๋ฅ˜ ์ œ์–ด ์ˆ˜ํ–‰ O

์˜ค๋ฅ˜ ์ œ์–ด ์ˆ˜ํ–‰ X

ํ๋ฆ„ ์ œ์–ด ์ˆ˜ํ–‰ O

ํ๋ฆ„ ์ œ์–ด ์ˆ˜ํ–‰ X

Unicast

Unicast, Multicast, Broadcast

์ „์ด์ค‘ (Full Duplex)

๋ฐ˜์ด์ค‘ (Half Duplex)

Data ์ „์†ก

์‹ค์‹œ๊ฐ„ traffic ์ „์†ก

+

Communication channels in telecommunications

  • ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ (simplex communication)

    • ๋‹จ๋ฐฉํ–ฅ ์ „์†ก

    • ex) TV, Radio

  • ๋ฐ˜์ด์ค‘ ํ†ต์‹ (half-duplex communication)

    • ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋™์‹œ์— ์–‘์ชฝ์—์„œ๋Š” ์ „์†กํ•  ์ˆ˜ ์—†๋‹ค

    • ex) ๋ฌด์ „๊ธฐ

  • ์ „์ด์ค‘ ํ†ต์‹ (full-duplex communication)

    • ๋™์‹œ์— ์–‘๋ฐฉํ–ฅ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค

    • ex) ์ „ํ™”๊ธฐ

Last updated

Was this helpful?