Skip to content

Latest commit

ย 

History

History
175 lines (119 loc) ยท 7.45 KB

TCPandUDP.md

File metadata and controls

175 lines (119 loc) ยท 7.45 KB

TCP์™€ UDP

TCP์™€ UDP ์ฐจ์ด์  ํ•œ ๋ˆˆ์— ๋ณด๊ธฐ



UDP

  • ๋น„์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ
    • ๋น„์—ฐ๊ฒฐํ˜• ํ”„๋กœํ† ์ฝœ์ด ๋ฌด์—‡์ด๋ƒ?? -> ์ฆ‰, ์ผ๋ฐฉ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ•จ
    • ๊ทธ๋ž˜์„œ TCP๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฆ„.
  • UDP๋Š” ํ๋ฆ„์ œ์–ด, ์˜ค๋ฅ˜์ œ์–ด ๋˜๋Š” ์†์ƒ๋œ ์„ธ๊ทธ๋จผํŠธ์˜ ์ˆ˜์‹ ์— ๋Œ€ํ•ด ์žฌ์ „์†ก์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ์ด ๋ชจ๋‘๊ฐ€ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค์˜ ๋ชซ์ด๋‹ค.
    • ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ????
      • ์ฆ‰, ํŒŒ์ผ์ด ์ „๋‹ฌ๋˜๋Š” ๊ณผ์ •์—์„œ ์†์ƒ์ด ๋˜๊ฑฐ๋‚˜ ์ „๋‹ฌ์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•„๋„ UDP๋Š” ์ฑ…์ž„์ง€์ง€ ์•Š์•„์š”.
      • ๋งŒ์•ฝ ์š”์ฒญ/์‘๋‹ต์ด ์†์‹ค๋œ๋‹ค๋ฉด, Client๋Š” ํƒ€์ž„ ์•„์›ƒโฑ ๋˜๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ๊ฐ€ ๊ฐ„๋‹จํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ TCP์ฒ˜๋Ÿผ ์ดˆ๊ธฐ์„ค์ •์—์„œ ์š”๊ตฌ๋˜๋Š” ํ”„๋กœํ† ์ฝœ๋ณด๋‹ค ์ ์€ ๋ฉ”์‹œ์ง€๐Ÿ“ฉ ๊ฐ€ ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค.
  • UDP๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ๋ฅผ ํ•˜๋‚˜ ๋“ค์ž๋ฉด, DNS๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    • DNS๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ UDP์™€ TCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ฐ„๋‹จํ•œ ์งˆ์˜ ๋ฐ ์‘๋‹ต์—๋Š” UDP๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์–ด๋–ค ํ˜ธ์ŠคํŠธ ๋„ค์ž„์˜ IP์ฃผ์†Œ๋ฅผ ์ฐพ์•„์•ผํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ DNS ์„œ๋ฒ„๋กœ ํ˜ธ์ŠคํŠธ ๋„ค์ž„์„ ํฌํ•จํ•œ UDP ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด, ์ด ์„œ๋ฒ„๋Š” ํ˜ธ์ŠคํŠธ์˜ IP์ฃผ์†Œ๋ฅผ ํฌํ•จํ•œ UDP ํŒจํ‚ท์œผ๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์ „์— ์„ค์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ทธ ํ›„์— ํ•ด์ œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
      • ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ผ๊นŒ??? DNS ์„œ๋ฒ„๋Š” ๋ญ์ง€??
        • DNS : Domain Name Service
        • ๋„๋ฉ”์ธ์— ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„ IP๋ฅผ ์ฐพ์•„์ฃผ๋Š” ์—ญํ• 


TCP

  • Transmission Control Protocol
  • ๋Œ€๋ถ€๋ถ„ ์ธํ„ฐ๋„ท ์‘์šฉ ๋ถ„์•ผ๋“ค์€ ์‹ ๋ขฐ์„ฑ๊ณผ ์ˆœ์ฐจ์ ์ธ ์ „๋‹ฌ์„ ํ•„์š”๋กœ ํ•˜์ง€๋งŒ, UDP๋กœ๋Š” ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์—†์–ด ํƒ„์ƒํ•œ ํ”„๋กœํ† ์ฝœ์ด TCP์ž…๋‹ˆ๋‹ค.
    • ์‹ ๋ขฐ์„ฑ์ด ์—†๋Š” ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ข…๋‹จ ๊ฐ„์— ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ์ „์†กํ•˜๋„๋ก ํŠน๋ณ„ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • TCP ์„œ๋น„์Šค๋Š” ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๋ณด๋‘๊ฐ€ ์†Œ์ผ“์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ข…๋‹จ์ ์„ ์ƒ์„ฑํ•จ์œผ๋กœ์จ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  • ๋ชจ๋“  TCP ์—ฐ๊ฒฐ์€ ์ „์ด์ค‘(full-duplex), ์ ๋Œ€์ (point to point) ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ์ „์ด์ค‘ : ์ „์†ก์ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋™์‹œ์— ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธ
    • ์ ๋Œ€์  : ๊ฐ ์—ฐ๊ฒฐ์ด ์ •ํ™•ํžˆ 2 ๊ฐœ์˜ ์ข…๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ์˜๋ฏธ
  • TCP๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŒ…์ด๋‚˜ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ํŠน์ง•
    1. Connection oriented
      • ์—ฐ๊ฒฐ์ง€ํ–ฅํ˜•
      • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์ „์— ๋จผ์ € ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ์—ฐ๊ฒฐ์„ ์„ฑ๋ฆฝํ•œ ํ›„ ์ „์†ก์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    2. Bidirectional byte stream
      • ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ†ต์‹ 
      • ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ ์‚ฌ์šฉ
    3. In-order delivery
      • ์†ก์‹ ์ž๊ฐ€ ๋ณด๋‚ธ ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜์‹ ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
      • ์ˆœ์„œ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด 32-bit ์ •์ˆ˜ ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    4. Reliability through ACK
      • ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•˜๊ณ  ์ˆ˜์‹ ์ž๋กœ๋ถ€ํ„ฐ ACK๋ฅผ ๋ฐ›์ง€ ์•Š์œผ๋ฉด, ์†ก์‹ ์ž TCP๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
      • ๋”ฐ๋ผ์„œ ์†ก์‹ ์ž TCP๋Š” ์ˆ˜์‹ ์ž๋กœ๋ถ€ํ„ฐ ACK๋ฅผ ๋ฐ›์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. (buffer unacknowledged data)
    5. Flow control
      • ์†ก์‹ ์ž(TCP)๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    6. Congestion control
      • ๋„คํŠธ์›Œํฌ ์ •์ฒด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด receive window์™€ ๋ณ„๋„๋กœ congestion window๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      • Flow control๊ณผ ๋‹ฌ๋ฆฌ ์†ก์‹ ์ž๊ฐ€ ๋‹จ๋…์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  • TCP์—์„œ ์—ฐ๊ฒฐ ์„ค์ •(connection establishment)์€ 3-way handshake๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
    • ๊ทธ๋ ‡๋‹ค๋ฉด 3-way handshake๋Š” ๋ญ๊ณ  4-way handshake๋Š” ๋ญ์ง€???? ์•„๋ž˜๋ฅผ ๋ณผ๊นŒ์š”??


3-way handshake

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


  • Client -> Server : TCP SYN
  • Server -> Client : TCP SYN ACK
  • Client -> Server : TCP ACK

SYN : synchronize sequence numbers ACK : acknowledgment


  • ์—ญํ• 
    • ์–‘์ชฝ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๊ณ , ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ์‹œ์ž‘ํ•˜๊ธฐ์ „์— ํ•œ ์ชฝ์—์„œ ๋‹ค๋ฅธ ์ชฝ์ด ์ค€๋น„๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    • ์–‘์ชฝ ๋ชจ๋‘ ์ƒ๋Œ€ํŽธ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ˆœ์ฐจ์ผ๋ จ๋ณ€ํ˜ธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณผ์ •


[STEP 1]

A(ํด๋ผ์ด์–ธํŠธ)๋Š” B(์„œ๋ฒ„)์— ์ ‘์†์„ ์š”์ฒญํ•˜๋Š” SYN ํŒจํ‚ท์„ ๋ณด๋‚ธ๋‹ค. ์ด๋•Œ A(ํด๋ผ์ด์–ธํŠธ)๋Š” SYN ์„ ๋ณด๋‚ด๊ณ  SYN/ACK ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” SYN_SENT ์ƒํƒœ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.


[STEP 2]

B(์„œ๋ฒ„)๋Š” SYN ์š”์ฒญ์„ ๋ฐ›๊ณ  A(ํด๋ผ์ด์–ธํŠธ)์—๊ฒŒ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•œ๋‹ค๋Š” ACK ์™€ SYN flag ๊ฐ€ ์„ค์ •๋œ ํŒจํ‚ท์„ ๋ฐœ์†กํ•˜๊ณ , A๊ฐ€ ๋‹ค์‹œ ACK์œผ๋กœ ์‘๋‹ตํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์ด๋•Œ, B(์„œ๋ฒ„)๋Š” SYN_RECEIVED ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.


[STEP 3]

A(ํด๋ผ์ด์–ธํŠธ)๋Š” B(์„œ๋ฒ„)์—๊ฒŒ ACK์„ ๋ณด๋‚ด๊ณ  ์ดํ›„๋กœ๋ถ€ํ„ฐ๋Š” ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๊ฐ€๊ฒŒ ๋˜๋Š”๊ฒƒ์ด๋‹ค. ์ด๋•Œ์˜ B(์„œ๋ฒ„) ์ƒํƒœ๊ฐ€ ESTABLISHED ์ด๋‹ค.


  • ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์ด ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์—ฐ๊ฒฐ์„ ๋งบ์–ด ์ค€๋‹ค๋Š” TCP์˜ 3 Way handshake ๋ฐฉ์‹์ด๋‹ค.


4-way handshake

3-Way handshake๋Š” TCP์˜ ์—ฐ๊ฒฐ์„ ์ดˆ๊ธฐํ™” ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, 4-Way handshake๋Š” ์„ธ์…˜์„ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค.


  • ๊ณผ์ •


[STEP 1]

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๊ฒ ๋‹ค๋Š” FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „์†กํ•œ๋‹ค.


**[STEP 2] **

์„œ๋ฒ„๋Š” ์ผ๋‹จ ํ™•์ธ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ์ž์‹ ์˜ ํ†ต์‹ ์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š”๋ฐ ์ด ์ƒํƒœ๊ฐ€ TIME_WAIT ์ƒํƒœ๋‹ค.


[STEP 3]

์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ์ด ๋๋‚ฌ์œผ๋ฉด ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ FIN ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „์†กํ•œ๋‹ค.


[STEP 4]

ํด๋ผ์ด์–ธํŠธ๋Š” ํ™•์ธํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.


  • ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ Server์—์„œ FIN์„ ์ „์†กํ•˜๊ธฐ ์ „์— ์ „์†กํ•œ ํŒจํ‚ท์ด Routing ์ง€์—ฐ์ด๋‚˜ ํŒจํ‚ท ์œ ์‹ค๋กœ ์ธํ•œ ์žฌ์ „์†ก ๋“ฑ์œผ๋กœ ์ธํ•ด FIN ํŒจํ‚ท๋ณด๋‹ค ๋Šฆ๊ฒŒ ๋„์ฐฉํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?
    • Client์—์„œ ์„ธ์…˜์„ ์ข…๋ฃŒ์‹œํ‚จ ํ›„ ๋’ค๋Šฆ๊ฒŒ ๋„์ฐฉํ•˜๋Š” ํŒจํ‚ท์ด ์žˆ๋‹ค๋ฉด ์ด ํŒจํ‚ท์€ Drop๋˜๊ณ  ๋ฐ์ดํ„ฐ๋Š” ์œ ์‹ค๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ํ˜„์ƒ์— ๋Œ€๋น„ํ•˜์—ฌ Client๋Š” Server๋กœ๋ถ€ํ„ฐ FIN์„ ์ˆ˜์‹ ํ•˜๋”๋ผ๋„ ์ผ์ •์‹œ๊ฐ„(๋””ํดํŠธ 240์ดˆ) ๋™์•ˆ ์„ธ์…˜์„ ๋‚จ๊ฒจ๋†“๊ณ  ์ž‰์—ฌ ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ๊ณผ์ •์„ TIME_WAIT ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.




Reference