๐Ÿ’ป/CS

[๋„คํŠธ์›Œํฌ] ์ „์†ก ๊ณ„์ธต (Transport Layer)

ruhz 2020. 10. 26. 04:15

0. ์ „์†ก ๊ณ„์ธต ์„œ๋น„์Šค (Transport Layer Services)

  Q. ํ˜•์ฃผ์ง‘ 12๋ช…์˜ ์ž๋…€๋“ค์ด ๊ทผ๋‚จ์ด์ง‘ 12๋ช…์˜ ์ž๋…€๋“ค์—๊ฒŒ ํŽธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค๋ฉด?
  A. ํ˜•์ฃผ์ง‘, ๊ทผ๋‚จ์ด์ง‘ (=ํ˜ธ์ŠคํŠธ)
       ์ž๋…€๋“ค (=ํ”„๋กœ์„ธ์Šค)
       ๋ด‰ํˆฌ ์•ˆ์˜ ํŽธ์ง€ (=์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฉ”์„ธ์ง€)

       ์ „์†ก ํ”„๋กœํ† ์ฝœ (= ๋ณด๋‚ผ ํŽธ์ง€๋ฅผ ๋ชจ์œผ๊ณ , ๋ฐ›์€ ํŽธ์ง€๋ฅผ ๋‚˜๋ˆ ์ฃผ๋Š” ํ˜•์ฃผ์™€ ๊ทผ๋‚จ์ด)
       ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ (=์šฐํŽธ ์„œ๋น„์Šค)

 

5๊ฐœ์˜ ๊ณ„์ธต์„ ์ƒ๊ฐํ•ด๋ณด์ž. ์ „์†ก ํ”„๋กœํ† ์ฝœ์—์„œ๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ ๊ณ„์ธต์—์„œ ๋ณด๋‚ธ ๋ฉ”์„ธ์ง€๋ฅผ ์„ธ๊ทธ๋จผํŠธ๋กœ ๋‚˜๋ˆ ์„œ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์œผ๋กœ ์ค€๋‹ค. ์ˆ˜์‹ ์ธก์—์„œ๋Š” ์„ธ๊ทธ๋จผํŠธ๋“ค์„ ๋‹ค์‹œ ์žฌ์กฐํ•ฉํ•ด ๋ฉ”์„ธ์ง€๋กœ ๋งŒ๋“ค๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ธต์œผ๋กœ ์ค€๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์ „์†ก ํ”„๋กœํ† ์ฝœ๋กœ๋Š” TCP, UDP๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ผญ ํ•œ ๊ฐ€์ง€๋งŒ ์“ฐ์ด๋ผ๋Š” ๋ฒ•์€ ์—†๋‹ค.

 

 

์ „์†ก ํ”„๋กœํ† ์ฝœ(transport protocols)
  - TCP : ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”, ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ „์†ก(ํ˜ผ์žก ์ œ์–ด, ํ๋ฆ„ ์ œ์–ด, ์—ฐ๊ฒฐ์ž‘์—… ํ•„์š”)
  - UDP : ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š”, ์ˆœ์„œ๊ฐ€ ์—†๋Š” ์ „์†ก("best effort" : ์ตœ์„ ์„ ๋‹คํ•˜๋Š”(์‹ ๋ขฐ์„ฑ ๋ณด์žฅX), ๊ผญ ํ•„์š”ํ•œ ์š”์†Œ๋งŒ ํ™•์žฅ)
  - ๋‘˜ ๋‹ค ์ง€์—ฐ ๋ณด์žฅ(delay guarantees), ๋Œ€์—ญํญ ๋ณด์žฅ(bandwidth guarantes) ์—†์Œ

 

 

 

1. ๋‹ค์ค‘ํ™”์™€ ์—ญ๋‹ค์ค‘ํ™”(Multiplexing and Demultiplexing)

์„ธ๊ทธ๋จผํŠธ๋ผ๋Š” ๊ฐœ๋…์ด ๋‚˜์™€ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ž ์‹œ ์ •๋ฆฌํ•˜๋ฉด, ๊ฐ ๊ณ„์ธต๋ณ„๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ์ •๋ณด์˜ ๋‹จ์œ„๊ฐ€ ๋‹ค๋ฅด๋‹ค.

์‘์šฉํ”„๋กœ๊ทธ๋žจ ๊ณ„์ธต : ๋ฉ”์„ธ์ง€
์ „์†ก ๊ณ„์ธต : ์„ธ๊ทธ๋จผํŠธ
๋„คํŠธ์›Œํฌ ๊ณ„์ธต : ํŒจํ‚ท, ๋ฐ์ดํ„ฐ๊ทธ๋žจ (์ฐธ๊ณ )
๋งํฌ ๊ณ„์ธต : ํ”„๋ ˆ์ž„
๋ฌผ๋ฆฌ ๊ณ„์ธต : ๋น„ํŠธ

 

 

๋‹ค์ค‘ํ™” / ์—ญ๋‹ค์ค‘ํ™”(multiplexing(MUX) / demultiplexing(DEMUX))
  - ํ”„๋กœ์„ธ์Šค๋“ค์€ ์†Œ์ผ“์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋ƒ„
  - ์†Œ์ผ“์œผ๋กœ ๋‚˜์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ€๋ถ„๋ถ€๋ถ„ ๋‚˜๋ˆ ์„œ, ์ „์†ก ํ—ค๋”(transport header)๋ฅผ ๋ถ™์ž„
  - ์ด๋ ‡๊ฒŒ ์„ธ๊ทธ๋จผํŠธ(segment, ์กฐ๊ฐ)๋‹จ์œ„๋กœ ๋งŒ๋“ค์–ด ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์„ ํ†ตํ•ด ๋ณด๋‚ด๋Š” ๊ณผ์ •์„ ๋‹ค์ค‘ํ™”๋ผ๊ณ  ํ•จ
  - ๋ฉ”์„ธ์ง€์— ๋ถ™์–ด์žˆ๋Š” ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•ด์„œ, ๊ฐ ๋ถ€๋ถ„์„ ์ •ํ™•ํ•œ ์†Œ์ผ“์œผ๋กœ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์—ญ๋‹ค์ค‘ํ™”๋ผ๊ณ  ํ•จ

 

๋ฐ์ดํ„ฐ๊ทธ๋žจ(datagram)
  - IP ๊ณ„์ธต์˜ ๊ฐ€๋ณ€๊ธธ์ด ํŒจํ‚ท
  - ๋ผ์šฐํŒ…(๊ฒฝ๋กœ์ง€์ •)๊ณผ ์ „๋‹ฌ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จ
  - ํ—ค๋”(20~60byte, TCP/IP์—์„œ๋Š” ํ—ค๋”๋ฅผ 4byte ๋‹จ์œ„๋กœ ํ‘œ์‹œ)์™€ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ

  - ํ—ค๋” : ๋ฐœ์‹  IP, ์ˆ˜์‹ ์ž IP ์ฃผ์†Œ
  - ๋ฐ์ดํ„ฐ : ํ•˜๋‚˜์˜ ์„ธ๊ทธ๋จผํŠธ(๋ฐœ์‹  ํฌํŠธ๋ฒˆํ˜ธ, ์ˆ˜์‹  ํฌํŠธ๋ฒˆํ˜ธ ํฌํ•จใ…กTCP๋Š” IP์ฃผ์†Œ๋„ ํฌํ•จ)
  - ํ˜ธ์ŠคํŠธ๋Š” IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ ์ ˆํ•œ ์†Œ์ผ“์— ์ „๋‹ฌ

 

๋น„์—ฐ๊ฒฐ ๊ธฐ๋ฐ˜ ์—ญ๋‹ค์ค‘ํ™”(connectionless demultiplexing, UDP)
  - ํ—ค๋”์—๋Š” ๋ฐœ์‹  IP์ฃผ์†Œ, ์ˆ˜์‹  IP์ฃผ์†Œ
  - ๋ฐ์ดํ„ฐ์—๋Š” ์„ธ๊ทธ๋จผํŠธ(๋ฐœ์‹  ํฌํŠธ๋ฒˆํ˜ธ, ์ˆ˜์‹  ํฌํŠธ๋ฒˆํ˜ธ)
  - ์†Œ์ผ“(ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ์ฐฝ๊ตฌ)๊ณผ ํฌํŠธ(ํ”„๋กœ์„ธ์Šค ๋ณ„๋กœ ํ• ๋‹น๋ฐ›๋Š” ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ)๋Š” ๋‹ค๋ฆ„
  - ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ์˜จ ๋ฐ์ดํ„ฐ์ธ์ง€, ํฌํŠธ์˜ ์—ฌ๋Ÿฌ ์†Œ์ผ“ ์ค‘ ์–ด๋””๋กœ ๋ณด๋‚ผ์ง€ ๊ทผ๊ฑฐ๊ฐ€ ๋ณ„๋กœ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์†Œ์ผ“์— ๋•Œ๋ ค๋ฐ•์Œ

 

์—ฐ๊ฒฐ ๊ธฐ๋ฐ˜ ์—ญ๋‹ค์ค‘ํ™”(connection-oriented demultiplexing, TCP)
  - ๊ฐ TCP ์†Œ์ผ“์€ ํŠœํ”Œ๋กœ ๊ตฌ๋ถ„๋จ {๋ฐœ์‹  IP: , ๋ฐœ์‹  ํฌํŠธ: , ์ˆ˜์‹  IP: , ์ˆ˜์‹  ํฌํŠธ: }
  - ์—ญ๋‹ค์ค‘ํ™” ํ•˜์—ฌ ์•Œ๋งž์€ ์†Œ์ผ“์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ์— ํŠœํ”Œ์˜ 4๊ฐ€์ง€ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉ
  - ์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ๋Š” ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ TCP ์†Œ์ผ“์„ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(๊ตฌ๋ณ„์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์†Œ์ผ“์— ๋ถ„๋ฐฐ๊ฐ€๋Šฅ)
  - ์›น ์„œ๋ฒ„๋Š” ๊ฐ ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•˜์—ฌ ๋‹ค๋ฅธ ์†Œ์ผ“์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ(๋น„์˜๊ตฌ์  HTTP๋Š” ๊ฐ ์š”์ฒญ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๊ฐ€์ง)

 

 

 

2. UDP (User Datagram Protocols)

UDP
  - ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์žˆ๋Š”, ๊ธฐ๋ณธ ๊ณจ๊ฒฉ์˜ ์ธํ„ฐ๋„ท ์ „์†ก ํ”„๋กœํ† ์ฝœ
  - "best effort" ์„œ๋น„์Šค(์†์‹ค๋˜๊ฑฐ๋‚˜ ์ž˜๋ชป ์ „๋‹ฌ๋  ์ˆ˜๋„ ์žˆ์Œ)
  - ๋ฐœ์‹ ์ž, ์ˆ˜์‹ ์ž ์‚ฌ์ด์— ์—ฐ๊ฒฐ ์ž‘์—…(handshaking)์ด ํ•„์š”์—†์Œ
  - ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ(์กฐ๊ธˆ ์†์‹ค๋‚˜๋„ ๋˜๊ณ , ์†๋„๋Š” ๋นจ๋ผ์•ผํ•จ), DNS, SNMP ๋“ฑ์— ์‚ฌ์šฉ
  - UDP๋กœ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ต์‹ ์„ ํ•˜๋Š” ๋ฒ• : ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ธต์—์„œ ์‹ ๋ขฐ์„ฑ์„ ๋”ํ•จ(๋ฐ›์•˜์„ ๋•Œ ์—๋Ÿฌ๋ฅผ ๋ณต๊ตฌ ๋“ฑ)
  - ์—ฐ๊ฒฐ ์ž‘์—… ํ•„์š”์—†์–ด ์ง€์—ฐ ์ตœ์†Œํ™”, ์ž‘์€ ํ—ค๋”ํฌ๊ธฐ, ์—ฐ๊ฒฐ ์ƒํƒœ ์—†์Œ, ๋ณด๋‚ด๊ณ  ์‹ถ์€ ๋งŒํผ ๋น ๋ฅด๊ฒŒ ๋ณด๋‚ธ๋‹ค๋Š” ์žฅ์ 

 

UDP ์„ธ๊ทธ๋จผํŠธ ํ—ค๋”
  - IP ํ—ค๋”๋ž‘ ๋‹ค๋ฅธ ๊ฐœ๋…
  - ๋ฐœ์‹ (source) ํฌํŠธ, ์ˆ˜์‹ (destination) ํฌํŠธ, ํ—ค๋”๊ธธ์ด, ์ฒดํฌ์„ฌ, ๋ฐ์ดํ„ฐ
  - ์ฒดํฌ์„ฌ(์˜ค๋ฅ˜ ๊ฒ€์ถœ, ์ตœ์†Œํ•œ์˜ ์‹ ๋ขฐ์„ฑ : UDP ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ด๋™ ๊ฐ„ ๋ฐ”๋€๊ฒŒ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ)
  - ์„ธ๊ทธ๋จผํŠธ๋ฅผ 16 bit ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ, ๋ชจ๋‘ ๋”ํ•œ ๋‹ค์Œ(์˜ฌ๋ฆผ์ˆ˜๋Š” ๋งจ ์ฒซ์ž๋ฆฌ์— ๋”ํ•ด์ค€๋‹ค) 1์˜ ๋ณด์ˆ˜(์ฐธ๊ณ ) ์ทจํ•ด์ค€ ๊ฒƒ์ด ์ฒดํฌ์„ฌ
  - ๋ฐ›์•˜์„ ๋•Œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋‹ค ๋”ํ•œ๋‹ค์Œ ์ฒดํฌ์„ฌ์ด๋ž‘ ๋”ํ•˜๋ฉด 1111 1111 1111์ด ๋‚˜์™€์•ผํ•จ(๋ณด์ˆ˜๋‹ˆ๊นŒ)

 

 

 

3. ์‹ ๋ขฐ์  ๋ฐ์ดํ„ฐ ์ „์†ก (Reliable Data Transfer)

์‹ ๋ขฐ์  ๋ฐ์ดํ„ฐ ์ „์†ก์€ ์ •๋ณด๊ตํ™˜์— ์žˆ์–ด์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฃผ์ œ๋ผ๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‚ด๊ฐ€ 100๋งŒ์›์„ ๋‹ค๋ฅธ ๊ณ„์ขŒ์— ์†ก๊ธˆํ–ˆ๋Š”๋ฐ, '0'์ด ํ•˜๋‚˜ ๋น ์ ธ 10๋งŒ์›์˜ ์ž…๊ธˆ ์ •๋ณด๊ฐ€ ๊ฐ„๋‹ค๋ฉด ์–ด๋–ป๊ฒ ๋Š”๊ฐ€? ํ˜น์€ ๋‚ด๊ฐ€ ๋งค๋ฒˆ ์ž…๊ธˆ์„ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค '์ด๊ฒŒ ์ œ๋Œ€๋กœ ์˜จ๊ฑด๊ฐ€?'ํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์–ด๋–ป๊ฒ ๋Š”๊ฐ€? ๋‹คํ–‰ํžˆ ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์‹ ๋ขฐ ๋ณด์žฅ ํ”„๋กœํ† ์ฝœ๋“ค์ด ์žˆ๋‹ค.

 

Computer Netwoking : A Top Down Approach ๊ต์žฌ

์‹ ๋ขฐ์  ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์›์น™
  - rdt_send() : ์ƒ์œ„ ๊ณ„์ธต์—์„œ ํ˜ธ์ถœ, ์ˆ˜์‹  ์ธก ์ƒ์œ„ ๊ณ„์ธต์ด ๋ฐ›์„ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์คŒ
  - udt_send() : rdt๊ฐ€ ํ˜ธ์ถœํ•˜๊ณ , ํŒจํ‚ท์„ ๋น„์‹ ๋ขฐ์  ์ฑ„๋„์„ ํ†ตํ•ด ์ˆ˜์‹  ์ธก์— ๋„˜๊ฒจ์คŒ
  - rdt_rcv() : ํŒจํ‚ท์ด ์ˆ˜์‹  ์ธก์— ๋„์ฐฉํ•˜๋ฉด ํ˜ธ์ถœ
  - deliver_data() : rdt๊ฐ€ ํ˜ธ์ถœํ•˜๊ณ , ๋ฐ›์€ ํŒจํ‚ท์„ ์ƒ์œ„์— ์ „๋‹ฌํ•จ

 

RDT(Reliable Data Transfer protocols) 1.0
  - ํ•˜์œ„์˜ ์ฑ„๋„๋“ค์ด ์™„๋ฒฝํ•˜๊ฒŒ ์‹ ๋ขฐ๊ฐ€๋Šฅ(bit ์—๋Ÿฌ, ์†์‹ค ์—†์Œ)
  - sender : ์ƒ์œ„ ๊ณ„์ธต์˜ ํ˜ธ์ถœ(rdt_send(data))์„ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€, udt_send(make_packet(data))๋กœ ๋ณด๋ƒ„
  - reciever : ํ•˜์œ„ ๊ณ„์ธต์˜ ํ˜ธ์ถœ(rdt_rcv(packet))์„ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€, extract(packet, data), deliver_data(data)๋กœ ์ƒ์œ„์— ๋ณด๋ƒ„

 

RDT(Reliable Data Transfer protocols) 2.0
  - ํ•˜์œ„ ์ฑ„๋„๋“ค์— ๋น„ํŠธ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ์Œ
  - ์˜ค๋ฅ˜ ํƒ์ง€(์ฒดํฌ์„ฌ ๋“ฑ)์™€ ํ”ผ๋“œ๋ฐฑ(ACK='์ž˜ ๋ฐ›์•˜์–ด์š”', NCK='์ž˜๋ชป ์™”์–ด์š”')์„ ํ†ตํ•ด ์‹ ๋ขฐ์„ฑ ๋ณด์™„
  - sender : ์ƒ์œ„ ๊ณ„์ธต์˜ ํ˜ธ์ถœ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€, ํŒจํ‚ท์„ ๋ณด๋ƒ„. ์ˆ˜์‹ ์ž ์ธก์—์„œ ACK๊ฐ€ ์˜ค๋ฉด ์ƒ์œ„ํ˜ธ์ถœ ๋Œ€๊ธฐ. NAK๊ฐ€ ์˜ค๋ฉด ์žฌ์ „์†ก
  - reciever : ํ•˜์œ„ ๊ณ„์ธต์˜ ํ˜ธ์ถœ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€, ๋น„ํŠธ ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ๋ฐ์ดํ„ฐ ์ถ”์ถœํ•ด ์ƒ์œ„์— ์ „์†ก ํ›„ ACK ์ „์†ก. ์žˆ์œผ๋ฉด NAK

 

RDT(Reliable Data Transfer protocols) 2.1
  - 2.0์€ ๋‘๊ฐ€์ง€ ์น˜๋ช…์  ์˜ค๋ฅ˜(ACK, NAK์˜ ์‹ ๋ขฐ์„ฑ ๋ณด์žฅ๋ถˆ๊ฐ€, ๋˜ ๋ช‡๋ฒˆ์งธ ํŒจํ‚ท์ด ์˜ค๋ฅ˜์ธ์ง€ ๋ชจ๋ฆ„)๋ฅผ ๊ฐ€์ง
  - 2.1์€ ํŒจํ‚ท์˜ ๊ฐœ์ˆ˜๋งŒํผ ์ƒํƒœ๋ฅผ ๊ฐ€์ง, 0๋ฒˆ, 1๋ฒˆ ์ฐจ๋ก€์ฐจ๋ก€ ๋ณด๋‚ด๊ณ  ํ”ผ๋“œ๋ฐฑ ๋ฐ›์Œ(ex. NAK 2 : 2๋ฒˆ ํŒจํ‚ท ๋ฌธ์ œ) 

 

RDT(Reliable Data Transfer protocols) 2.2
  - 2.2๋Š” NAK๋ฅผ ์—†์•ค ๋Œ€์‹ ์— ๋ช‡๋ฒˆ ํŒจํ‚ท๊นŒ์ง€ ACK๊ฐ€ ๋–ด๋Š”์ง€ ํ”ผ๋“œ๋ฐฑ ํ•ด์คŒ

 

 

Computer Netwoking : A Top Down Approach ๊ต์žฌ


RDT(Reliable Data Transfer protocols) 3.0
  - ํŒจํ‚ท ์†์‹ค์„ ๋ณต๊ตฌํ•  ๋•Œ, ์žฌ์ „์†ก์€ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์ด๋Š” ์‹œ๊ฐ„์ ์ธ ๋‚ญ๋น„๊ฐ€ ํผ
  - 3.0์€ Timeout ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด ACK๋ฅผ 'ํ•ฉ๋ฆฌ์ ์ธ' ์‹œ๊ฐ„๋™์•ˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ , ACK๊ฐ€ ์ง€์—ฐ๋˜๋ฉด ํƒ€์ด๋จธ๋ฅผ ๋ฉˆ์ถค
  - ์‹ ๋ขฐ์„ฑ์ด ๋†’์ง€๋งŒ, ์†๋„๊ฐ€ ์ฉ์—ˆ์Œ, ๋ฌผ๋ฆฌ์ ์ธ ์ž์›์„ ํ™œ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๊ฒŒ๋จ
  - ์—ฌ์ „ํžˆ ์ „์†ก-ํ›„-๋Œ€๊ธฐ(stop-and-wait)๋ฐฉ์‹

 

ํŒŒ์ดํ”„๋ผ์ธ ํ”„๋กœํ† ์ฝœ(pipelined protocols)
  - ๋‚ ์•„์˜ค๊ณ  ์žˆ๋Š” ์ƒํƒœ์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒƒ์„ ํ—ˆ์šฉํ•ด์„œ ๋„คํŠธ์›Œํฌ ํ™œ์šฉ๋ฅ ์„ ๋†’์ž„
  - GBN๊ณผ SR๋ฐฉ์‹์ด ์žˆ์Œ

 

GBN(Go-Back-N)
  - ๋ฐœ์‹ ์ž๋Š” ํŒŒ์ดํ”„๋ผ์ธ์— ์•„์ง ACK๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ํŒจํ‚ท์„ N๊ฐœ ๋‘˜ ์ˆ˜ ์žˆ์Œ
  - ACK๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ํŒจํ‚ท ์ค‘ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๊ฒƒ์— ๋Œ€ํ•˜์—ฌ ํƒ€์ด๋จธ ์„ค์ •(๋๋‚˜๋ฉด ACK ๋ชป๋ฐ›์€ ํŒจํ‚ท ๋ชจ๋‘ ์žฌ์ „์†ก)
  - ์ˆ˜์‹ ์ž๋Š” ๋ˆ„์ ๋œ ๊ธ์ •ํ”ผ๋“œ๋ฐฑ(rdt 2.2, 3.0์ฒ˜๋Ÿผ)๋งŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ

 

SR(Selective Repeat)
  - ๋ฐœ์‹ ์ž๋Š” ํŒŒ์ดํ”„๋ผ์ธ์— ์•„์ง ACK๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ํŒจํ‚ท์„ N๊ฐœ ๋‘˜ ์ˆ˜ ์žˆ์Œ
  - ACK๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ํŒจํ‚ท๋งˆ๋‹ค ํƒ€์ด๋จธ๋ฅผ ๋‘๊ณ  ๋งŒ๋ฃŒ์‹œ ํ•ด๋‹น ํŒจํ‚ท๋งŒ ์žฌ์ „์†ก ๋ฐ›์Œ
  - ์ˆ˜์‹ ์ž๋Š” ํŒจํ‚ท์— ๋Œ€ํ•ด ๊ฐ๊ฐ ACK๋ฅผ ์ „์†ก

 

 

4. ์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ์ „์†ก(TCP)

TCP์˜ ํŠน์ง•
  - ์†ก์‹ ์ž ๋Œ€ ์ˆ˜์‹ ์ž 1:1 ์—ฐ๊ฒฐ
  - ์‹ ๋ขฐ ๊ฐ€๋Šฅ(reliable)
  - ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ ๋ฐฉ์‹(ํ•œ ๋ฒˆ์— ํ•œ ๋ฐ”์ดํŠธ ์”ฉ ์—ฐ์†์ ์œผ๋กœ ์ „์†ก๋˜๋Š” ๋ฐ”์ดํŠธ ์—ด)์œผ๋กœ, ๋ฉ”์„ธ์ง€์˜ ์ œํ•œ์ด ์—†์Œ
  - ํŒŒ์ดํ”„๋ผ์ธ ํ”„๋กœํ† ์ฝœ(GBN, SR ๋“ฑ)
  - ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ(A๊ฐ€ B์—๊ฒŒ ๋งํ•˜๋Š” ๋™์‹œ์—,  B๋„ A์—๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์Œ)
  - ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„œ๋กœ ์ „๋‹ฌํ•˜์—ฌ ์—ฐ๊ฒฐ ์‚ฌ์ „์ž‘์—…(handshaking)์ด ํ•„์š”ํ•จ
  - ์†ก์‹ ์ž๊ฐ€ ์ˆ˜์‹ ์ž๋ฅผ ์••๋„ํ•˜์ง€ ์•Š๋Š”๋‹ค(ํ๋ฆ„์ œ์–ด)

 

TCP ์„ธ๊ทธ๋จผํŠธ ๊ตฌ์กฐ
  - https://m.blog.naver.com/itexpert2007/30027739473

 

TCP ์†ก์‹  ๊ตฌ์ฒด์  ์ด๋ฒคํŠธ
  - ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ธต์—์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์‹  : ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„ ์ฒซ ๋ฐ”์ดํŠธ๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์—ฌ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ƒ์„ฑ, ํƒ€์ด๋จธ ์‹œ์ž‘
  - ํƒ€์ž„์•„์›ƒ : ํƒ€์ž„์•„์›ƒ์˜ ์›์ธ์ด ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†ก ํ•˜๊ณ , ํƒ€์ด๋จธ๋„ ์žฌ์‹œ์ž‘
  - ACK ์ˆ˜์‹  : ์ด ์ „์— ๋„์ฐฉํ–ˆ์–ด์•ผํ•  ACK๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ ํ›„, ์—†๋‹ค๋ฉด ํƒ€์ด๋จธ ์‹œ์ž‘ 
  - (๋‹จ, ๋น ๋ฅธ ์žฌ์ „์†ก ๋ฐฉ์‹(3๋ฒˆ ๊ฐ™์€ ACK๋ฅผ ๋ฐ›์œผ๋ฉด ์†์‹ค๋กœ ํŒ๋‹จ)์œผ๋กœ ํƒ€์ž„์•„์›ƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ)

 

Computer Networking : A Top Down Approach ๊ต์žฌ

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

 

Handshake
  - 2 way : ํ†ต์‹ ํ• ๋ž˜?(req_conn) → ๊ทธ๋ž˜!(acc_conn)
  - 3 way : https://sleepyeyes.tistory.com/4

 

 

 

5. ํ˜ผ์žก ์ œ์–ด

 

TCP ํ˜ผ์žก์ œ์–ด

TCP ํ˜ผ์žก์ œ์–ด TCP๋Š” ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์—์„œ ๋™์ž‘ํ•˜๋Š” ๋‘ ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์˜ ์‹ ๋ขฐ์ ์ธ ์ „์†ก ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. TCP์˜ ๋‹ค๋ฅธ ๋งค์šฐ ์ค‘์š”ํ•œ ์š”์†Œ๋Š” TCP์˜ ํ˜ผ์žก์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์— ๋”ฐ๋ผ ์—ฐ๊ฒฐ์—

wogh8732.tistory.com