Home ๐ŸŒ [Network] TCP/IP Model - Transport Layer ๐ŸŒ
Post
Cancel

๐ŸŒ [Network] TCP/IP Model - Transport Layer ๐ŸŒ

๐ŸŒ Transport Layer

Transport Layer๋Š” Network Layer์™€ Application Layer ์‚ฌ์ด์— ์œ„์น˜ํ•˜๋ฉฐ IP์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ  Application Process๋“ค์„ ์‹๋ณ„ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

IP์˜ ํ•œ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

IP์˜ ํ•œ๊ณ„์˜๋ฏธ
๋น„์‹ ๋ขฐ์„ฑ(Unreliable Protocol)์ตœ์„ ํ˜• ์ „๋‹ฌ(Best Effort Delivery): ์ตœ์„ ์„ ๋‹คํ•ด ๋ณด๊ฒ ์ง€๋งŒ, ์ „์†ก ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด์„œ๋Š” ์–ด๋– ํ•œ ๋ณด์žฅ๋„ ํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์˜๋ฏธ
๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless Protocol)์†ก์ˆ˜์‹  Host ๊ฐ„์— ์‚ฌ์ „ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ์ž‘์—…์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๊ทธ์ € ์ˆ˜์‹ ์ง€๋ฅผ ํ–ฅํ•ด Packet์„ ๋ณด๋‚ด๊ธฐ๋งŒ ํ•œ๋‹ค๋Š” ์˜๋ฏธ

๐ŸŒ Application Layer์™€ ์—ฐ๊ฒฐ

ํฌํŠธ(Port)๋ž€ Application Layer์˜ Appplication Process๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ •๋ณด์ž…๋‹ˆ๋‹ค. ์ฆ‰, Transport Layer์—์„œ๋Š” Segment(Datagram) ๋‚ด ์ˆ˜์‹ ์ง€ ํฌํŠธ์™€ ์†ก์‹ ์ง€ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์†ก์ˆ˜์‹ ์ง€ Host์˜ Application์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

IP Address์™€ ํฌํŠธ ๋ฒˆํ˜ธ์— ๋Œ€ํ•œ ํ•จ๊ป˜ ์ฃผ์–ด์ง€๋ฉด ์ • Host์—์„œ ์‹คํ–‰ ์ค‘์ธ ํŠน์ • Application Process๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TCP์™€ UDP๋Š” ๋ชจ๋‘ ์†ก์‹ ์ง€ ํฌํŠธ์™€ ์ˆ˜์‹ ์ง€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Port ๋ฒˆํ˜ธ๋Š” 16 Bit๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Port๋Š” 0๋ฒˆ ~ 65535๋ฒˆ๊นŒ์ง€ $2^{16}$๊ฐœ์ž…๋‹ˆ๋‹ค.

ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ Port ๋ฒˆํ˜ธ๋“ค์€ ๋ฒ”์œ„์— ๋”ฐ๋ผ $3$์ข…๋ฅ˜๋กœ ๋‚˜๋ˆ„์–ด์ง‘๋‹ˆ๋‹ค.

ย ํฌํŠธ ๋ฒˆํ˜ธ์‚ฌ์šฉ
์ž˜ ์•Œ๋ ค์ง„ ํฌํŠธ(Well Known Port),
์‹œ์Šคํ…œ ํฌํŠธ(System Port)
0๋ฒˆ ~ 1023๋ฒˆ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” Application Protocol์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ
๋“ฑ๋ก๋œ ํฌํŠธ(Registered Port)1024๋ฒˆ ~49151๋ฒˆ์ž˜ ์•Œ๋ ค์ง„ ํฌํŠธ์— ๋น„ํ•ด์„œ๋Š” ๋œ ๋ฒ”์šฉ์ ์ด์ง€๋งŒ ํ”ํžˆ ์‚ฌ์šฉ๋˜๋Š” Application Protocol์— ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
๋™์  ํฌํŠธ(Dynamic Port),
์‚ฌ์„ค ํฌํŠธ(Private Port),
์ž„์‹œ ํฌํŠธ(Ephemeral Port)
49152๋ฒˆ ~ 65535๋ฒˆ์ธํ„ฐ๋„ท ํ• ๋‹น ๋ฒˆํ˜ธ ๊ด€๋ฆฌ ๊ธฐ๊ด€์— ์˜ํ•ด ํ• ๋‹น๋œ Application Protocol์ด ์—†๊ณ  ํŠน๋ณ„ํžˆ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š” ํฌํŠธ ๋ฒˆํ˜ธ์ธ ๋งŒํผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

Port Forwarding์ด๋ž€ ๋„คํŠธ์›Œํฌ ๋‚ด ํŠน์ • Host์— IP Address์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๊ณ  ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” Host๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ Packet(Segment, Datagram)์„ ํŠน์ • Host๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

๐ŸŒ Protocol

๐ŸŒ TCP(Transmission Control Protocol)

TCP๋Š” IP์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋Š” Protocol์ž…๋‹ˆ๋‹ค.

๐ŸŒ Segment

Segment Header ์ค‘ ์ค‘์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

TCP Segment Header

Segment Header์„ค๋ช…
์†ก์‹ ์ง€ ํฌํŠธ(Source Port)์†ก์‹ ์ง€ Application์„ ์‹๋ณ„ํ•˜๋Š” ํฌํŠธ
์ˆ˜์‹ ์ง€ ํฌํŠธ(Destination Port)์ˆ˜์‹ ์ง€ Application์„ ์‹๋ณ„ํ•˜๋Š” ํฌํŠธ
์ˆœ์„œ ๋ฒˆํ˜ธ(Sequence Number)์†ก์ˆ˜์‹ ๋˜๋Š” Segment์˜ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด Segment์˜ ์ฒซ Byte์— ๋ถ€์—ฌ๋˜๋Š” ๋ฒˆํ˜ธ
ํ™•์ธ ์‘๋‹ต ๋ฒˆํ˜ธ(Acknowledgment Number)์ƒ๋Œ€ Host๊ฐ€ ๋ณด๋‚ธ Segment์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ, ๋‹ค์Œ์œผ๋กœ ์ˆ˜์‹ ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ ๋ช…์‹œ
์ œ์–ด ๋น„ํŠธ(Control Bits, Flag Bits)โ€ข ACK: Segment์˜ ์Šน์ธ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ Bit
โ€ข SYN: ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฆฝํ•˜๊ธฐ ์œ„ํ•œ Bit
โ€ข FIN: ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•œ Bit
์œˆ๋„์šฐ(Window)์†ก์‹  Host๊ฐ€ Pipelining ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€๋Ÿ‰์„ ์˜๋ฏธ

๐ŸŒ TCP์˜ ํ†ต์‹ 

TCP์˜ ํ†ต์‹ ์„ ํฌ๊ฒŒ ๋‚˜๋ˆ„๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝย 
2๏ธโƒฃ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ โ€ข ์˜ค๋ฅ˜ ์ œ์–ด
โ€ข ํ๋ฆ„ ์ œ์–ด
โ€ข ํ˜ผ์žก ์ œ์–ด
3๏ธโƒฃ ์—ฐ๊ฒฐ ์ข…๋ฃŒย 
๐ŸŒ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ

TCP์˜ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ์€ Three-way Handshake๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

๐ŸŒ ์˜ค๋ฅ˜ ์ œ์–ด

Segment์— ์˜ค๋ฅ˜ ๊ฒ€์ถœ์„ ์œ„ํ•œ Checksum ํ•„๋“œ๊ฐ€ ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ Checksum์€ Segment์˜ ํ›ผ์† ์—ฌ๋ถ€๋งŒ ๋‚˜ํƒ€๋‚ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Checksum ๊ฐ’์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๋ฉด Host๋Š” ํ•ด๋‹น Segment์„ ์ฝ์ง€ ์•Š๊ณ  ํ๊ธฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ์—๋Š” ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

TCP๊ฐ€ ์‹ ๋ขฐ์„ฑ์„ ์ œ๋Œ€๋กœ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์†ก์‹ ํ•œ Segment์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ค‘๋ณต๋œ ACK Segment / Timeout

TCP๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์Œ์„ ๊ฐ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ์„ค๋ช…(์œ„์˜ ์‚ฌ์ง„ ์ฐธ๊ณ )
TCP๋Š” ์ค‘๋ณต๋œ ACK Segment๋ฅผ ์ˆ˜์‹ ํ–ˆ์„ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒผ์Œ์„ ๊ฐ์ง€Host B๊ฐ€ ์š”์ฒญํ•œ Segment๋ฅผ Host A๊ฐ€ ์†ก์‹ ํ–ˆ์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด ํ๊ธฐ๋˜๊ณ 
Host B๊ฐ€ ์ด์ „์— ๋ณด๋ƒˆ๋˜ ACK Segment๋ฅผ ํ•œ ๋ฒˆ ๋” Host A์— ๋ณด๋‚ธ ๊ฒฝ์šฐ
Host A๋Š” ๊ฐ™์€ ACK Segment๋ฅผ ๋‘ ๋ฒˆ ์ˆ˜์‹ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒผ์Œ์„ ๊ฐ์ง€
TCP๋Š” ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์Œ์„ ์ธ์ง€Segment๋ฅผ ์†ก์‹ ํ•˜๋Š” Host๋Š” ๋ชจ๋‘ ์žฌ์ „์†ก ํƒ€์ด๋จธ(Retransmission Timer)๋ผ๋Š” ๊ฐ’์„ ์œ ์ง€ ํ•˜๋Š”๋ฐ
Timeout์ด ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ACK Segment๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๋ฉด
Segment๊ฐ€ ์ƒ๋Œ€ Host์—๊ฒŒ ์ •์ƒ์ ์œผ๋กœ ๋„์ฐฉํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ๊ฐ„์ฃผํ•˜์—ฌ Segment๋ฅผ ์žฌ์ „์†ก

๋ฌธ์ œ๋ฅผ ์ธ์‹ํ•˜๊ณ  ์žฌ์ „์†กํ•˜๋Š” TCP์˜ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋ฒ•์œผ๋กœ๋Š” ARQ(Automatic Repeat Request)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ARQ๋ž€ ์ˆ˜์‹  Host์˜ ๋‹ต๋ณ€๊ณผ Timeout ๋ฐœ์ƒ์„ ํ† ๋Œ€๋กœ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๋ฉ”์„ธ์ง€๋ฅผ ์žฌ์ „์†กํ•จ์œผ๋กœ์จ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

ARQ์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Stop-and-Wait ARQ์ œ๋Œ€๋กœ ์ „๋‹ฌํ–ˆ์Œ์„ ํ™•์ธํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ƒˆ๋กœ์šด ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๋Š” ๋ฐฉ์‹
Go-Back-N ARQPipelining ๋ฐฉ์‹์„ ํ™œ์šฉํ•ด ์—ฌ๋Ÿฌ Segment๋ฅผ ์ „์†กํ•˜๊ณ , ๋„์ค‘์— ์ž˜๋ชป๋œ Segment๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ํ•ด๋‹น Segment๋ถ€ํ„ฐ ์ „๋ถ€ ์žฌ์ „์†กํ•˜๋Š” ๋ฐฉ์‹
Selective Repeat ARQ์ˆ˜์‹  Host ์ธก์—์„œ ์ œ๋Œ€๋กœ ์ „์†ก๋ฐ›์€ ๊ฐ๊ฐ์˜ Segment๋“ค์— ๋Œ€ํ•ด ACK Segment๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹
๐ŸŒ ํ๋ฆ„ ์ œ์–ด

Pipelining ๊ธฐ๋ฐ˜์˜ Go-Back-N ARQ์™€ Selective Repeat ARQ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด Host๊ฐ€ ํ•œ ๋ฒˆ์— ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Segment์˜ ์–‘์—๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ํ๋ฆ„ ์ œ์–ด๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ๋ฆ„ ์ œ์–ด๋ž€ ์†ก์‹  Host๊ฐ€ ์ˆ˜์‹  Host์˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๊ณ ๋ คํ•˜๋ฉฐ ์†ก์ˆ˜์‹  ์†๋„๋ฅผ ๊ท ์ผํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

TCP์—์„œ๋Š” Sliding Window ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ํ๋ฆ„ ์ œ์–ด๋ฅผ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒ ํ˜ผ์žก ์ œ์–ด

ํ˜ผ์žก์ด๋ž€ ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์œผ๋กœ ์ธํ•ด Segment์˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋Šฆ์–ด์ง€๊ฑฐ๋‚˜ ์œ ์‹ค๋  ์šฐ๋ ค๊ฐ€ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ํ˜ผ์žก์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ํ˜ผ์žก ์ œ์–ด(Congestion Control)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํ˜ผ์žก ์ œ์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์†ก์‹  Host๋Š” ๋„คํŠธ์›Œํฌ ํ˜ผ์žก๋„๋ฅผ ํŒ๋‹จํ•˜๊ณ  ํ˜ผ์žกํ•œ ์ •๋„์— ๋งž์ถฐ ์œ ๋™์ ์œผ๋กœ ์ „์†ก๋Ÿ‰์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.

ํ˜ผ์žก ์—†์ด ์ „์†กํ•  ์ˆ˜ ์žˆ์„ ๋งŒํ•œ ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ํ˜ผ์žก ์œˆ๋„์šฐ(Congestion Window)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ๋ฆ„ ์ œ์–ด์— ์‚ฌ์šฉ๋˜๋Š” ์ˆ˜์‹  Window์˜ ํฌ๊ธฐ๋Š” Segment Header์— ๋ช…์‹œ๋˜์–ด ์žˆ์ง€๋งŒ ํ˜ผ์žก ์ œ์–ด์— ์‚ฌ์šฉ๋˜๋Š” Window์˜ ํฌ๊ธฐ๋Š” ์†ก์‹  Host๊ฐ€ ์–ด๋Š ์ •๋„์˜ Segment๋ฅผ ์ „์†กํ•ด์•ผ ํ˜ผ์žก์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์ง์ ‘ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

ํ˜ผ์žก ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ํ˜ผ์žก์„ ์ œ์–ดํ•˜๋Š” ํ˜ผ์žก ์ œ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜(Congestion Control Algorithm)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Congestion Control Algorithm์„ค๋ช…
AIMD(Additive Increase/Multiplicative Decrease)โ€ข RTT๋งˆ๋‹ค 1์”ฉ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ํ˜ผ์žก์ด ๊ฐ์ง€๋˜๋ฉด ํ˜ผํ•ฉ ์œˆ๋„์šฐ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ๋™์ž‘์„ ๋ฐ˜๋ณตํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
โ€ข ํ•ฉ์œผ๋กœ ์ฆ๊ฐ€ ๊ณฑ์œผ๋กœ ๊ฐ์†Œ
Slow Start(๋Š๋ฆฐ ์‹œ์ž‘)โ€ข ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ฌธ์ œ์—†์ด ์ˆ˜์‹ ๋œ ACK Segment ํ•˜๋‚˜๋‹น 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ์‹
โ€ข ํ˜ผ์žก ์œˆ๋„์šฐ๋Š” RTT๋งˆ๋‹ค 2๋ฐฐ์”ฉ ์ง€์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€
Congestion Avoidance(ํ˜ผ์žก ํšŒํ”ผ)RTT๋งˆ๋‹ค ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ $1$ MSS์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
Fast Recovery(๋น ๋ฅธ ํšŒ๋ณต)์„ธ ๋ฒˆ์˜ ์ค‘๋ณต ACK Segment๋ฅผ ์ˆ˜์‹ ํ–ˆ์„ ๋•Œ ๋Š๋ฆฐ ์‹œ์ž‘์€ ๊ฑด๋„ˆ๋›ฐ๊ณ  ํ˜ผ์žก ํšŒํ”ผ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๋น ๋ฅด๊ฒŒ ์ „์†ก๋ฅ ์„ ํšŒ๋ณตํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • RTT(Round Trip Time): ๋ฉ”์„ธ์ง€๋ฅผ ์ „์†กํ•œ ๋’ค ๊ทธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ๋ฐ›๋Š” ๋ฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
  • MSS(Maximum Segment Size): TCP๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ Payload์˜ ํฌ๊ธฐ(TCP Header ์ œ์™ธ)

์œ„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ํ˜ผ์žก ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋‹ค๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์„ ๋งŒ๋‚ฌ์„ ๋•Œ ํ˜ผ์žก ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.

์ƒํ™ฉย 
ย ย 
Timeout ๋ฐœ์ƒโ€ข ํ˜ผ์žก ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”
โ€ข ๋Š๋ฆฐ ์‹œ์ž‘ ์ž„๊ณ„์น˜๋ฅผ ํ˜ผ์žก์ด ๊ฐ์ง€๋˜์—ˆ๋˜ ์‹œ์ ์˜ ํ˜ผ์žก ์œˆ๋„์šฐ ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜์œผ๋กœ ์ดˆ๊ธฐํ™”
โ€ข ์ดˆ๊ธฐํ™” ํ›„ ๋Š๋ฆฐ ์‹œ์ž‘ ์žฌ๊ฐœ
ํ˜ผ์žก ์œˆ๋„์šฐ >= ๋Š๋ฆฐ ์‹œ์ž‘ ์ž„๊ณ„์น˜๋Š๋ฆฐ ์‹œ์ž‘ ์ข…๋ฃŒ ํ›„ ํ˜ผ์žก ํšŒํ”ผ ์ˆ˜ํ–‰
์„ธ ๋ฒˆ์˜ ์ค‘๋ณต ACK Segment ๋ฐœ์ƒ๋น ๋ฅธ ์žฌ์ „์†ก ํ›„ ๋น ๋ฅธ ํšŒ๋ณต ์ˆ˜ํ–‰

๋น ๋ฅธ ์žฌ์ „์†ก: ์žฌ์ „์†ก ํƒ€์ด๋จธ๊ฐ€ ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „์ด๋ผ๋„ ์„ธ ๋ฒˆ์˜ ๋™์ผํ•œ ACK Segment๊ฐ€ ์ˆ˜์‹ ๋˜์—ˆ๋‹ค๋ฉด ํ•ด๋‹น Segment๋ฅผ ๊ณง๋ฐ”๋กœ ์žฌ์ „์†กํ•˜๋Š” ๊ธฐ๋Šฅ

๐ŸŒ ์—ฐ๊ฒฐ ์ข…๋ฃŒ

TCP์˜ ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋Š” Four-Way Handshake๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

๐ŸŒ TCP์˜ ์ƒํƒœ

TCP๋Š” ์—ฐ๊ฒฐํ˜• ํ†ต์‹ ๊ณผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ†ต์‹ ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

TCP๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ํ™œ์šฉํ•œ๋‹ค๋Š” ์ ์—์„œ Stateful Protocol์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

TCP์˜ ์ƒํƒœย 
์—ฐ๊ฒฐ์ด ์ˆ˜๋ฆฝ๋˜์ง€ ์•Š์€ ์ƒํƒœCLOSED, LISTEN
์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๊ณผ์ •์—์„œ ์ฃผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœSYN-SENT, SYN-RECEIVED, ESTABLISHED
์—ฐ๊ฒฐ ์ข…๋ฃŒ ๊ณผ์ •์—์„œ ์ฃผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœFIN-WAIT-1, CLOSE-WAIT, FIN-WAIT-2, LAST-ACK, TIME-WAIT, CLOSED, CLOSING

๐ŸŒ UDP(User Datagram Protocol)

UDP๋Š” TCP์™€ ๋‹ฌ๋ฆฌ ๋น„์—ฐ๊ฒฐํ˜• ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” Protocol์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— TCP ์ฒ˜๋Ÿผ ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ๋ฐ ํ•ด์ œ, ์žฌ์ „์†ก์„ ํ†ตํ•œ ์˜ค๋ฅ˜ ์ œ์–ด, ํ˜ผ์žก ์ œ์–ด, ํ๋ฆ„ ์ œ์–ด, ์ƒํƒœ ์œ ์ง€ ๋ฐ ํ™œ์šฉ์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ UDP๋ฅผ Stateless Protocol์˜ ์ผ์ข…์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.

UDP๋Š” TCP์— ๋น„ํ•ด ์ ์€ Overhead๋กœ Packet์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ฃผ๋กœ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค, ์ธํ„ฐ๋„ท ์ „ํ™”์ฒ˜๋Ÿผ ์‹ค์‹œ๊ฐ„์„ฑ์ด ๊ฐ•์กฐ๋˜๋Š” ์ƒํ™ฉ์—์„œ TCP๋ณด๋‹ค ๋” ๋งŽ์ด ์“ฐ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ TCP์˜ ์ „์†ก ๋ฐฉ์‹์ด ์ˆ˜์‹ ์ง€์— ํ•˜๋‚˜์”ฉ ํ™•์‹คํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค๋ฉด, UDP์˜ ์ „์†ก ๋ฐฉ์‹์€ ์ˆ˜์‹ ์ง€์— Packet๋“ค์„ ๋น ๋ฅด๊ฒŒ ๋งˆ๊ตฌ ๋˜์ง€๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐ŸŒ Datagram

Datagram Header๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

UDP Datagram Header

Datagram Header์„ค๋ช…
์†ก์‹ ์ง€ ํฌํŠธ(Source Port)ย 
์ˆ˜์‹ ์ง€ ํฌํŠธ(Destination Port)ย 
LengthHeader๋ฅผ ํฌํ•จํ•œ UDP Datagram์˜ Byte
Checksumโ€ข Datagram ์ „์†ก ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ํ•„๋“œ
โ€ข ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•œ Datagram์€ ํ๊ธฐ
This post is licensed under CC BY 4.0 by the author.

๐ŸŒ [Network] TCP/IP Model - Network Layer ๐ŸŒ

๐ŸŒ [Network] TCP/IP Model - Appplication Layer ๐ŸŒ