CS

[NETWORK] TCP์™€ UDP

D0HAN. 2021. 7. 2. 03:53

๐Ÿ’ก TCP, UDP๊ฐ€ ๋ญ˜๊นŒ?

๋„คํŠธ์›Œํฌ ๊ณ„์ธต๋“ค ์ค‘ ์ „์†ก๊ณ„์ธต(Transprot Layer)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ

 

๐Ÿ”ธTCP(Transmission Control Protocol)

  • ์ผ๋ฐ˜์ ์œผ๋กœ TCP์™€ IP๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉ
  • ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ํ”„๋กœํ† ์ฝœ
    3-way Handshaking ๊ณผ์ •์„ ํ†ตํ•ด ์—ฐ๊ฒฐ ์„ค์ •
    4-way handshaking ์„ ํ†ตํ•ด ์—ฐ๊ฒฐ ํ•ด์ œ
  • ๊ฐ€์ƒํšŒ์„  ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹

    ํŒจํ‚ท์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๋…ผ๋ฆฌ์  ๊ฒฝ๋กœ๋ฅผ ๋ฐฐ์ •

  • ํ๋ฆ„ ์ œ์–ด
    ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„ ์กฐ์ ˆํ•˜์—ฌ ์ˆ˜์‹ ์ž์˜ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐฉ์ง€
    ์†ก์‹ ์ž๊ฐ€ ๊ฐ๋‹น ์•ˆ๋˜๊ฒŒ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ณด๋‚ด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ ๋ฐฉ์ง€
    ์ˆ˜์‹ ์ž๊ฐ€ ์œˆ๋„์šฐ ํฌ๊ธฐ(Window Size)ํ†ตํ•ด ์ˆ˜์‹ ๋Ÿ‰ ์„ค์ •

  • ํ˜ผ์žก ์ œ์–ด
    ๋„คํŠธ์›Œํฌ ๋‚ด ํŒจํ‚ท ์ˆ˜ ๋„˜์น˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€

  • ์ „์ด์ค‘(Full-Duplex) & ์ ๋Œ€์ (Point to Point) ๋ฐฉ์‹
    ์ „์†ก์ด ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋™์‹œ์— & ๊ฐ ์—ฐ๊ฒฐ์ด ์ •ํ™•ํžˆ ๋‘๊ฐœ์˜ ์ข…๋‹จ์  ๊ฐ€์ง(1:1)

  • ํ—ค๋”
    ํ•„๋“œ ๋‚ด์šฉ ํฌ๊ธฐ
    Source Port ์ถœ๋ฐœ์ง€ ํฌํŠธ๋ฒˆํ˜ธ ํ‘œ์‹œ. ๋Œ€๋ถ€๋ถ„ ์ฒ˜์Œ ์„ธ๊ทธ๋จผํŠธ ์ „์†ก ์ธก์—์„œ ์ž„์˜์˜ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 16bit
    Dstination Port ๋ชฉ์ ์ง€ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ์‘์šฉ์„œ๋น„์Šค์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํฌํŠธ๋ฒˆํ˜ธ๊ฐ€ ์ •ํ•ด์ ธ์žˆ์Œ.(ex.์›น-80) 16bit
    Sequence Number ์†ก์‹ ์ž๊ฐ€ ์ง€์ •ํ•˜๋Š” ์ˆœ์„œ ๋ฒˆํ˜ธ, ์ „์†ก๋˜๋Š” ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฒˆํ˜ธ ํ• ๋‹น. ๋ฐ์ดํ„ฐ ์ˆœ์„œ๋ฅผ ์˜๋ฏธ. ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋กœ ์ชผ๊ฐœ์ง„ ์„ธ๊ทธ๋จผํŠธ์˜ ์ˆœ์„œ๋ฅผ ํŒŒ์•…ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์žฌ์กฐ๋ฆฝ ๊ฐ€๋Šฅ. 32bit
    Acknowledgment Number ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์€ ์ˆ˜์‹ ์ž๊ฐ€ ์˜ˆ์ƒํ•˜๋Š” ๋‹ค์Œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ(๋งˆ์ง€๋ง‰ ์ˆ˜์‹  ์„ฑ๊ณต ์‹œํ€€์Šค๋ฒˆํ˜ธ+1) 32bit
    Header Length TCP ํ—ค๋” ๊ธธ์ด๋ฅผ 4๋ฐ”์ดํŠธ(32๋น„ํŠธ)๋‹จ์œ„๋กœ ํ‘œ์‹œ. ์˜ต์…˜ ํ•„๋“œ ๊ธธ์ด๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š” 4bit
    Reserved ๋ชจ๋‘ 0์œผ๋กœ ์ฑ„์›Œ์ ธ์•ผํ•จ. ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•œ ํ•„๋“œ 3bit
    Flags ์„ธ๊ทธ๋จผํŠธ์˜ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋ž˜๊ทธ๋“ค. ACK,SYN,FIN,URG... (๋”ฐ๋กœ ์ •๋ฆฌ) 6bit
    Window Size ์ˆ˜์‹  ์œˆ๋„์šฐ ๋ฒ„ํผ ํฌ๊ธฐ ์ง€์ •. 0์ด๋ฉด ์†ก์‹  ํ”„๋กœ์„ธ์Šค ์ „์†ก ์ค‘์ง€. ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” 64kb 16bit
    Checksum ๋ฐ์ดํ„ฐ ์†ก์‹  ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜ ๊ฒ€์ถœ ์œ„ํ•œ ๊ฐ’ [๊ณ„์‚ฐ ๋ฐฉ๋ฒ•] 16bit
    Urgent Pointer ๊ธด๊ธ‰ ํฌ์ธํ„ฐ. URGํ”Œ๋ž˜๊ทธ๊ฐ€ 1์ด๋ผ๋ฉด ์ˆ˜์‹ ์ž๋Š” ์ด ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฅดํ‚ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์šฐ์„  ์ฒ˜๋ฆฌ 16bit


       
  • FLAG ์ข…๋ฅ˜
    1. URG
      Urgent Pointer ํ•„๋“œ์— ๊ฐ’์ด ์ฑ„์›Œ์ ธ ์žˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ํ”Œ๋ž˜๊ทธ. ์ด ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ธด๊ธ‰ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ€์žฅ ๋จผ์ € ์ฒ˜๋ฆฌ๋จ.(์š”์ฆ˜์—๋Š” ๋งŽ์ด ์‚ฌ์šฉx)
    2. ACK
      Acknowledgment ํ•„๋“œ์— ๊ฐ’์ด ์ฑ„์›Œ์ ธ ์žˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ํ”„๋ž˜๊ทธ. ์ด ํ”Œ๋ž˜๊ทธ๊ฐ€ 0์ด๋ฉด Acknowledgment ํ•„๋“œ๊ฐ€ ๋ฌด์‹œ๋จ.
    3. PSH
      Push ํ”Œ๋ž˜๊ทธ. ์ˆ˜์‹ ์ž์—๊ฒŒ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌํ•ด ๋‹ฌ๋ผ๋Š” ํ”Œ๋ž˜๊ทธ.
      ์ด ํ”Œ๋ž˜๊ทธ๊ฐ€ 0์ด๋ผ๋ฉด ์ˆ˜์‹ ์ž๋Š” ๋ฒ„ํผ๊ฐ€ ๋‹ค ์ฑ„์›Œ์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ. 1์ด๋ผ๋ฉด ์ด ์„ธ๊ทธ๋จผํŠธ ์ดํ›„ ์—ฐ๊ฒฐ๋˜ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์—†์Œ์„ ๋œปํ•จ.
    4. RST
      Reset ํ”Œ๋ž˜๊ทธ. ์ด๋ฏธ ์—ฐ๊ฒฐ์ด ํ™•๋ฆฝ๋œ ์ƒํƒœ์ธ ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ์—ฐ๊ฒฐ์„ ๊ฐ•์ œ๋กœ ๋ฆฌ์…‹ํ•ด๋‹ฌ๋ผ๋Š” ์˜๋ฏธ
    5. SYN
      Synchronize ํ”Œ๋ž˜๊ทธ. ์—ฐ๊ฒฐ ์ƒ์„ฑํ• ๋•Œ, ์‹œํ€€์Šค ๋ฒˆํ˜ธ ๋™๊ธฐํ™” ๋งž์ถ”๊ธฐ ์œ„ํ•œ ์„ธ๊ทธ๋จผํŠธ
    6. FIN
      Finish ํ”Œ๋ž˜๊ทธ. ์—ฐ๊ฒฐ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ์š”์ฒญ์ธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์˜๋ฏธ.
    7. NS,ECE,CRW
      ๊ธฐ์กด์˜ Reserved ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ํ”Œ๋ž˜๊ทธ. ๋„คํฌ์›Œํฌ ํ˜ผ์žก ์ƒํ™ฉ์„ ์•Œ๋ ค์ฃผ๋Š” ECN์— ํ•„์š”ํ•œ ํ”Œ๋ž˜๊ทธ.

 

๐Ÿ”นUDP(User Datagram Protocol)

  • ๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ์  ํ”„๋กœํ† ์ฝœ
    ์—ฐ๊ฒฐ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐœ์‹ ์ž๊ฐ€ ์ผ๋ฐฉ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐœ์‹ ํ•˜๋Š” ๋ฐฉ์‹. -> TCP๋ณด๋‹ค ๋น ๋ฅธ ์ „์†ก, but ์‹ ๋ขฐ์„ฑ ๋–จ์–ด์ง
    ๋ฐœ์‹ ์ž๊ฐ€ ํŒจํ‚ท์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณด๋‚ด๋”๋ผ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ํ†ต์‹  ์„ ๋กœ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋‹ค. (์ˆœ์„œ ๋ฐ”๋€” ์ˆ˜ O)
    ์ž˜๋ชป๋˜ ์„ ๋กœ๋กœ ์ „์†ก๋˜๋ฉด ์œ ์‹ค๋  ์ˆ˜๋„ ์žˆ์Œ. TCP์™€ ๋‹ค๋ฅด๊ฒŒ ํŒจํ‚ท์ด ์œ ์‹ค, ๋ณ€์กฐ ๋˜์–ด๋„ ์žฌ์ „์†ก X
  • ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํŒจํ‚ท ๊ตํ™˜ ๋ฐฉ์‹

    ๊ฐ๊ฐ์˜ ํŒจํ‚ท์€ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ์ „์†ก๋˜๊ณ , ๋…๋ฆฝ์ ์ธ ๊ด€๊ณ„๋ฅผ ์ง€๋‹˜

  • ํ๋ฆ„์ œ์–ด, ํ˜ผ์žก์ œ์–ด ์—†์Œ
    ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„๋•Œ ์ •๋ณด๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›๋Š” ์‹ ํ˜ธ์ ˆ์ฐจ x
    UDPํ—ค๋”์˜ Checksumํ•„๋“œ๋ฅผ ํ†ตํ•ด ์ตœ์†Œํ•œ์˜ ์˜ค๋ฅ˜๋งŒ ๊ฒ€์ถœ
    ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์ ธ ์ผ์ผ์ด ํŒจํ‚ท์„ ๊ด€๋ฆฌํ•ด์•ผ ํ•จ

  • ํ—ค๋”
    ํ•„๋“œ ๋‚ด์šฉ ํฌ๊ธฐ
    Source Port ์ถœ๋ฐœ์ง€ ํฌํŠธ๋ฒˆํ˜ธ ํ‘œ์‹œ. ๋Œ€๋ถ€๋ถ„ ์ฒ˜์Œ ์„ธ๊ทธ๋จผํŠธ ์ „์†ก ์ธก์—์„œ ์ž„์˜์˜ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 16bit
    Dstination Port ๋ชฉ์ ์ง€ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ์‘์šฉ์„œ๋น„์Šค์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํฌํŠธ๋ฒˆํ˜ธ๊ฐ€ ์ •ํ•ด์ ธ์žˆ์Œ.(ex.์›น-80) 16bit
    Total Length ํ—ค๋”์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ์ „์ฒด ๊ธธ์ด๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ํ‘œ์‹œ 16bit
    Checksum ์ˆ˜์‹ ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋ณ€ํ˜• ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ• ์ˆ˜์žˆ๋„๋ก ํ•ด์คŒ.(ํ—ค๋”+๋ฐ์ดํ„ฐ ํฌํ•จ) 16bit

 

๐ŸŸข TCP & UDP ์ฐจ์ด ๋น„๊ต 

 

 

 

 

์ฐธ๊ณ 

https://mangkyu.tistory.com/15
https://coding-factory.tistory.com/614
https://idchowto.com/?p=18352
https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4
TCP ํ—ค๋” ์ž์„ธํ•œ ์„ค๋ช…
http://www.ktword.co.kr/abbr_view.php?nav=&m_temp1=1889&id=1103