Skip to content

Latest commit

ย 

History

History
66 lines (56 loc) ยท 3.34 KB

File metadata and controls

66 lines (56 loc) ยท 3.34 KB

๐ŸคTCP 3way handsake


TCP 3-way handshake

TCP๋Š” ํ†ต์‹ ํ•˜๊ธฐ์— ์•ž์„œ ๋…ผ๋ฆฌ์ ์ธ ์ ‘์†์„ ์„ฑ๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด 3-way handshake ๊ณผ์ •์„ ์ง„ํ–‰ํ•œ๋‹ค. (์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค)

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

    3way

A ํ”„๋กœ์„ธ์Šค(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ Bํ”„๋กœ์„ธ์Šค(์„œ๋ฒ„)์— ์—ฐ๊ฒฐ์„ ์š”์ฒญ

1. A -> B :SYN
2. B -> A :SYN + ACK
3. A -> B :ACK
  1. A -> B :SYN
    • ์ ‘์† ์š”์ฒญ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ ๋ฉ”์‹œ์ง€ ์ „์†ก(SYN)
    • ์†ก์‹ ์ž๊ฐ€ ์ตœ์ดˆ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ Seq Number๋ฅผ ์ž„์˜์˜ ๋žœ๋ค ์ˆซ์ž๋กœ ์ง€์ •ํ•˜๊ณ , SYN ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๋ฅผ 1๋กœ ์„ค์ •ํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค.
    • A :Closed, B :Listen
  2. B -> A :SYN + ACK
    • ์ ‘์† ์š”์ฒญ์„ ๋ฐ›์€ ํ”„๋กœ์„ธ์Šค B๊ฐ€ ์š”์ฒญ ์ˆ˜๋ฝ, ์ ‘์† ์š”์ฒญ ํ”„๋กœ์„ธ์Šค A์—๊ฒŒ ํฌํŠธ๋ฅผ ์—ด์–ด๋‹ฌ๋ผ๋Š” ๋ฉ”์‹œ์ง€ ์ „์†ก(SYN+ACK)
    • ์ˆ˜์‹ ์ž๋Š” Ack Number ํ•„๋“œ๋ฅผ Seq Number + 1๋กœ ์ง€์ •, SYN๊ณผ ACK ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๋ฅผ 1๋กœ ์„ค์ •ํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†ก
    • A :Closed, B :Syn_Rcv
  3. A -> B :ACK
    • ๋งˆ์ง€๋ง‰์œผ๋กœ ์ ‘์† ์š”์ฒญ ํ”„๋กœ์„ธ์Šค A๊ฐ€ ์ˆ˜๋ฝ ํ™•์ธ์„ ๋ณด๋‚ด ์—ฐ๊ฒฐ์„ ๋งบ์Œ
    • ์ด๋•Œ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์ด ๋‹จ๊ณ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ดˆ๊ธฐ => A :Established, B :Syn_Rcv
    • ํ›„๊ธฐ => A :Established, B :Established



4-way handshake

TCP ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

4way

A ํ”„๋กœ์„ธ์Šค(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ Bํ”„๋กœ์„ธ์Šค(์„œ๋ฒ„)์— ์—ฐ๊ฒฐ ํ•ด์ œ๋ฅผ ์š”์ฒญ

1. A -> B :FIN
2. B -> A :ACK
3. B -> A :FIN
4. A -> B :ACK
  1. A -> B :FIN
    • ํ”„๋กœ์„ธ์Šค A๊ฐ€ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ฒ ๋‹ค๋Š” FIN ํ”Œ๋ž˜๊ทธ ์ „์†ก
    • ํ”„๋กœ์„ธ์Šค B๊ฐ€ Fin ํ”Œ๋ž˜๊ทธ๋กœ ์‘๋‹ตํ•˜๊ธฐ ์ „๊นŒ์ง€ ์—ฐ๊ฒฐ์„ ๊ณ„์† ์œ ์ง€ํ•œ๋‹ค.
    • A :Established, B :Established
    • A :FIN_WAIT, B :Established
  2. B -> A :ACK
    • ์„œ๋ฒ„B๋Š” FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ฐ›๊ณ  ์ผ๋‹จ ํ™•์ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ์ž์‹ ์˜ ํ†ต์‹ ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
    • A๋Š” Ack Number ํ•„๋“œ๋Š” Seq Num + 1๋กœ ์ง€์ •ํ•˜๊ณ , Ack ํ”Œ๋ž˜๊ทธ ๋น„ํŠธ๋ฅผ 1๋กœ ์„ค์ •ํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ „์†กํ•œ๋‹ค.
    • ๊ทธ๋ฆฌ๊ณ  ์ „์†กํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋ฉด ์ด์–ด์„œ ๊ณ„์† ์ „์†กํ•œ๋‹ค.
    • A :FIN_WAIT, B :CLOSE_WAIT
  3. B -> A :FIN
    • B๋Š” ํ†ต์‹ ์ด ๋๋‚ฌ์œผ๋ฉด ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์š”์ฒญ์— ํ•ฉ์˜์— ์‘ํ•˜์—ฌ FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „์†กํ•œ๋‹ค.
    • A: TIME_WAIT, B :CLOSE_WAIT
  4. A -> B :ACK
    • A๋Š” ํ•ด์ง€ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ACK๋ฅผ ํ™•์ธํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€ B์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ๋Š” ์•„์ง ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์ง€ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์„ ๋Œ€๋น„ํ•ด ์ผ์ • ์‹œ๊ฐ„๋™์•ˆ ์„ธ์…˜์„ ๋‚จ๊ฒจ๋†“๊ณ  ์ž‰์—ฌ ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.
    • A :TIME_WAIT, B :CLOSED
    • A :CLOSED, B :CLOSED (์™„์ „ํžˆ ๋ชจ๋“  ํŒจํ‚ท์„ ๋‹ค ๋ฐ›์œผ๋ฉด ACK๋ฅผ ๋ณด๋‚ธ๋’ค ๋ฐ”๋€œ)