TCP

์›๋ž˜๋ฒŒ๋ ˆยท2022๋…„ 9์›” 25์ผ
0

๐ŸŒž TCP ์„ธ๊ทธ๋จผํŠธ ํ˜•์‹

  • Sequence Number์˜ ๊ฒฝ์šฐ IP์˜ id์ฒ˜๋Ÿผ 1์”ฉ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๊ณ , Session ๊ณ„์ธต์—์„œ ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ Segment์˜ Offset์— ๋”ฐ๋ผ ๊ฐ’์ด ๋ฐ”๋€๋‹ค. ๋งŒ์•ฝ์— Offset๊ฐ’์ด 100์ธ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ๋ณด๋‚ด์ง„ ๊ฒฝ์šฐ ๋‹ค์Œ ์„ธ๊ทธ๋จผํŠธ์˜ Sequence Number๋Š” 101์ด ๋œ๋‹ค.

  • URG ํ”Œ๋ž˜๊ทธ : ๊ธด๊ธ‰ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ

  • PSH ํ”Œ๋ž˜๊ทธ : ์ƒํ˜ธ์ž‘์šฉ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ๋น ๋ฅธ ์‘๋‹ต์ด ์ค‘์š”ํ•œ๋ฐ, ์ด ๋•Œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ 7๊ณ„์ธต์œผ๋กœ ์ „์†กํ•˜๋„๋ก ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ

  • RST ํ”Œ๋ž˜๊ทธ : ์žฌ์„ค์ •์„ ํ•˜๋Š” ๊ณผ์ •์ด๋ฉฐ ์–‘๋ฐฉํ–ฅ์—์„œ ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ์ค‘๋‹จ ์ž‘์—…์ด๋‹ค. ๋น„ ์ •์ƒ์ ์ธ ์„ธ์…˜ ์—ฐ๊ฒฐ ๋Š๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค. ์ด ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ๊ณณ์ด ํ˜„์žฌ ์ ‘์†ํ•˜๊ณ  ์žˆ๋Š” ๊ณณ๊ณผ ์ฆ‰์‹œ ์—ฐ๊ฒฐ์„ ๋Š๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์œˆ๋„์šฐํฌ๊ธฐ : ๋ฒ„ํผ์— ๋‚จ์•„์žˆ๋Š” ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • ์ฒดํฌ์„ฌ : ์˜ค๋ฅ˜์ฒดํฌ์šฉ / TCP๋Š” TCP ์„ธ๊ทธ๋จผํŠธ ๋ฐ์ดํ„ฐ๋กœ๋งŒ ์ฒดํฌ์„ฌ์„ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ , ๊ณ„์‚ฐ์ „์— TCP pseudo header๋ฅผ ๋งŒ๋“ค์–ด ์ฒดํฌ์„ฌ ๊ณ„์‚ฐ์— ์‚ฌ์šฉํ•œ๋‹ค.

  • Urgent Point : URG ํ”Œ๋ž˜๊ทธ๊ฐ€ 1์ธ๊ฒฝ์šฐ, TCP data์—์„œ ์–ด๋Š ๋ถ€๋ถ„์ด ๊ธด๊ธ‰ํ•˜๊ฒŒ ๋ณด๋‚ด์•ผํ•˜๋Š” ๋ฐ์ดํ„ฐ์ธ์ง€ ์ง‘์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๐ŸŒž ์œˆ๋„์šฐ์— ์˜ํ•œ ํ๋ฆ„์ œ์–ด

๐ŸŒž TCP ์ฒดํฌ์„ฌ์˜ ๊ณ„์‚ฐ ์˜์—ญ

  • Zero ์˜์—ญ์€ 4๋ฐ”์ดํŠธ ์˜์—ญ์œผ๋กœ Pseudo header๋ฅผ ์งœ๊ธฐ ์œ„ํ•ด์„œ ๋น„์–ด์žˆ๋Š” ๋ถ€๋ถ„์„ 0์œผ๋กœ ์ฑ„์šด ๊ฒƒ์ด๋‹ค.

  • ์ด๋ ‡๊ฒŒ ์œ ์‚ฌ IPํ—ค๋”๋ฅผ ๋”ํ•ด์ฃผ๋Š” ์ด์œ ๋Š” TCP์˜ ๊ฒฝ์šฐ IP๊ฐ€ ์ž˜๋ชป ๋์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— IP๋„ ์ž˜๋ชป๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๐ŸŒž ๊ธด๊ธ‰๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๊ฒฝ์šฐ

  • ์ˆ˜์‹ ์ธก ๋ฒ„ํผ์— ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ๋“ค์ด ๋ฒ„ํผ๋ง๋˜์–ด ์žˆ์–ด๋„ ๊ธด๊ธ‰๋ฐ์ดํ„ฐ ์šฐ์„ ์  ์ฒ˜๋ฆฌ๋˜๋„๋ก ํ•จ

  • Urgent Point๋ฅผ ํ†ตํ•ด์„œ ๋ฒ„ํผ์— ์–ด๋Š ๋ถ€๋ถ„์ด Urgentํ•œ ๋ฐ์ดํ„ฐ์ธ์ง€ ์•Œ๋ ค์คŒ

๐ŸŒž TCP ์˜ต์…˜์˜ ์ข…๋ฅ˜

  • len : ์˜ต์…˜ ํฌ๊ธฐ

  • MSS : TCP ๋ฐ์ดํ„ฐ ์˜์—ญ ์ตœ๋Œ€ ๊ธธ์ด, ์ด๋”๋„ท์ธ ๊ฒฝ์šฐ 1460

  • Window scale factor : TCP์˜ ํ—ค๋”์—์„œ Window Size์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ 16๋น„ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ํ•˜๋“œ์›จ์–ด๋“ค์ด ์ข‹์•„์ง€๋ฉด์„œ ์ด ์ด์ƒ์˜ Window Size๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ Window Size๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ถ€๋ถ„์˜ ๋น„ํŠธ์ˆ˜๋ฅผ ๋Š˜๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
    ex) kind =3 | length = 3 | shift count = 3 | ๐Ÿ‘‰ Window Size๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋น„ํŠธ๋Š” 19๋น„ํŠธ
    (0~14 ์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. max win size = 2^30)

  • Selective Reject : TCP์˜ ์˜ค๋ฅ˜์ œ์–ด๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” Go Back N ๋ฐฉ๋ฒ•๊ณผ SR๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. Go Back N ๋ฐฉ๋ฒ•์€ ACK๋ฅผ ๋ฐ›์€ ์ดํ›„์— ๋ฐ์ดํ„ฐ ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๊ณ , SR๋ฐฉ๋ฒ•์€ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ๋ถ€๋ถ„๋งŒ์„ ๋‹ค์‹œ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ „์ž์— ๋ฐฉ๋ฒ•์— ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š์€ ๋ถ€๋ถ„๋„ ์žฌ์ „์†กํ•˜์—ฌ ์ž์›์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Š” ๋น„ํšจ์œจ์ ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋‚˜์˜จ๊ฒƒ์ด SR๋ฐฉ๋ฒ•์ธ๋ฐ ์ด SR๋ฐฉ๋ฒ•์„ ์ง€์›ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•œ ์˜ต์…˜์ด๋‹ค.

  • SACK (Selective reject ACK) : ์ˆ˜์‹  ์ธก์ด ํŒจํ‚ท 1, ํŒจํ‚ท 2 ๋ฐ ํŒจํ‚ท3์„ ์ˆ˜์‹ ํ•œ ํ›„์— ํŒจํ‚ท 5์™€ ํŒจํ‚ท6์„ ์ˆ˜์‹ ํ•œ ๊ฒฝ์šฐ, ์ˆ˜์‹  ์ธก์€ ๊ฐ ํŒจํ‚ท์˜ ์ˆ˜์‹ ์„ ์•Œ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ „์†ก ์ธก์€ ํŒจํ‚ท4, ํŒจํ‚ท5, ํŒจํ‚ท6์„ ์žฌ์ „์†กํ•˜์ง€ ์•Š๊ณ  ์ƒ์‹ค๋œ ํŒจํ‚ท 4๋งŒ ์žฌ์ „์†กํ•˜๋ฉด ๋จ.

  • TimeStamp : TCP๋Š” ๋„คํŠธ์›Œํฌ ์†๋„์˜ ๋ณ€ํ™”์— ๋Œ€ํ•ด ์„œ ๋†’์€ ํผํฌ๋จผ์Šค์™€ ์•ˆ์ •์„ฑ ๋‘๊ฐœ๋ฅผ ๋งž์ถฐ์•ผ ํ•ฉ๋‹ˆ๋‹ค. TimeStamp ์˜ต์…˜์„ ํ†ตํ•ด์„œ ๋ณด๋‹ค ์ •ํ™•ํ•œ RTT(Round Trip Time)๊ฐ’์„ ์–ป์–ด ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์†ก์‹ ์ž๋Š” ํŒจํ‚ท์„ ๋ณด๋‚ผ ๋•Œ ์ž์‹ ์˜ TimeStamp ๋ฅผ TS value์— ๊ธฐ๋กํ•˜๊ณ  ์ˆ˜์‹ ์‚ฌ๋Š” TS value์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ TS echo reply field์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋ฆฌ์ง€๋‚  ์†ก์‹ ์ž๋Š” ํ˜„์žฌ timestamp์™€ TS echo reply field์˜ TimeStamp์˜ ์ฐจ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ RTT๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.
    TimeStamp Option์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด SYN packet์— ์ด ์˜ต์…˜์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒผ MTU์™€ MSS์™€์˜ ๊ด€๊ณ„

  • ์ด๋ง๋„ท์˜ ์ตœ๋Œ€ MTU๊ฐ’์€ 1500์ด๋‹ค. ๊ทธ๋Ÿฐ ์ด์œ ๋Š” ์ตœ๋Œ€ TCP data ์˜์—ญ ์ฆ‰ MSS ๊ฐ’์ด ์ด๋”๋„ท์€ 1460์ธ๋ฐ ์ด์™€ ๋”๋ถˆ์–ด IPํ—ค๋” 20๋ฐ”์ดํŠธ, TCP ํ—ค๋” 20๋ฐ”์ดํŠธ๋ฅผ ๋”ํ•˜์—ฌ MTU๊ฐ’์ด 1500์ด ๋œ๋‹ค.

๐ŸŒž TIME_WAIT ํƒ€์ด๋จธ์˜ ํ•„์š”์„ฑ

  • TCP๋ฅผ DISCONNECT๋ฅผ ํ•œ ํ›„ ์ฆ‰ 4way ์ ˆ์ฐจ๋ฅผ ๋‹ค ์ง€๋‚œ ์ดํ›„์— close() ๋ฉ”์†Œ๋“œ๋ฅผ ๋ณด๋‚ธ ์ธก์—์„œ TIME_WAIT์„ ํ•˜๊ฒŒ๋œ๋‹ค. ์ด TIME_WAIT์˜ ๊ธธ์ด๋Š” ๊ฝค ๊ธธ๋‹ค. ๋ฆฌ๋ˆ…์Šค์˜ ๊ฒฝ์šฐ 60์ดˆ

  • ์ด TIME_WAIT์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ์œ„์˜ ์‚ฌ์ง„์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

  • ์œ„์˜ ์‚ฌ์ง„์€ TIME_WAIT์ด ์—†๋Š” ๊ฒฝ์šฐ์— DISCONNECT๋ฅผ ํ•œ ์ดํ›„์— ๋‹ค์‹œ ์—ฐ๊ฒฐ์„ ํ•˜๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์ค€๋‹ค.

  • Disconnect๊ฐ€ ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ Port ๋ฒˆํ˜ธ๋Š” Freeํ•œ ์ƒํƒœ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ์ด ๋•Œ ๋•Œ๋งˆ์นจ ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ์„ ํ•˜๋ คํ•˜๋Š”๋ฐ ์ „๊ณผ ๊ฐ™์€ Port๋ฒˆํ˜ธ๋ฅผ ํ• ๋‹น ๋ฐ›์•˜๋‹ค ํ•˜์ž. ๊ทธ๋ ‡๊ฒŒ ์—ฐ๊ฒฐ์„ ์™„๋ฃŒ๋ฅผ ํ–ˆ๋‹ค. ๊ทผ๋ฐ ์ด์ „์— ๋ณด๋ƒˆ๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด์ œ์„œ์•ผ ๋“ค์–ด์˜ค๊ฒŒ ๋œ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ด์ „์— ๋ฐ›์•˜๋˜ ํŒจํ‚ท์„ ์ค‘๋ณตํ•ด์„œ ๋ฐ›๊ฒŒ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด์„œ TIME_WAIT์„ ๋‘”๋‹ค.

  • ๊ทธ๋ž˜์„œ ์ด์ „์— ๋ฐ›์•˜๋˜ ๋ฐ์ดํ„ฐ๋ฅผ DISCONNECTํ•˜๊ธฐ ์ „์— ๋‹ค ๋๋‚ด๊ธฐ ์œ„ํ•˜์—ฌ TIME_WAIT์„ ํ•˜๊ฒŒ๋œ๋‹ค.

๐ŸŒž ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋œ ๋‹ค์Œ ์žฌ๋ถ€ํŒ…๋œ ๊ฒฝ์šฐ

  • Reset : TCP ์—ฐ๊ฒฐ์˜ ๊ฐ•์ œ ์ข…๋ฃŒ
    - ์„œ๋ฒ„์— ์„ค์น˜๋˜์ง€ ์•Š์€ ์„œ๋น„์Šค์— ๋Œ€ํ•œ SYN ์ˆ˜์‹  ์‹œ, RST ์†ก์‹ 
    - ์ ‘์† ์ดํ›„ ์ผ์ •๊ธฐ๊ฐ„์˜ idle ์ƒํƒœ ์œ ์ง€๋˜๋ฉด RST ์†ก์‹ 
    - ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ, ์ด์ „ ์—ฐ๊ฒฐ์— ๋ฐ์ดํ„ฐ ์†ก์‹  ์‹œ RST ์†ก์‹ 

๐ŸŒž TCP์˜ Exponential Backoff ๊ณผ์ •

์—…๋กœ๋“œ์ค‘..

  • ํŒจํ‚ท์˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด์„œ(Time Out) ์žฌ์ „์†ก์„ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์žฌ์ „์†ก์„ ํ•ด๋„ํ•ด๋„ ์•ˆ๋  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ์žฌ์ „์†ก์„ ์งง์€ ์‹œ๊ฐ„์— ๊ณ„์† ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ๋Š๋ ค์งˆ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋–„๋ฌธ์— ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‹œ๊ฐ„์œผ ์ ์ฐจ ๋Š˜๋ฆฌ๋ฉด์„œ ์žฌ์ „์†ก์„ ์‹œ๋„ํ•˜๋‹ค๊ฐ€, ์ •ํ•ด์ง„ ํšŸ์ˆ˜๋ฅผ ํ•˜๊ณ ๋„ ๋˜์ง€ ์•Š์œผ๋ฉด ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.
profile
ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๋‹ด์€ ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€