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 ์ข
๋ฅ
URG
Urgent Pointer ํ๋์ ๊ฐ์ด ์ฑ์์ ธ ์์์ ์๋ฆฌ๋ ํ๋๊ทธ. ์ด ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ธด๊ธ ๋ฐ์ดํฐ๋ ๊ฐ์ฅ ๋จผ์ ์ฒ๋ฆฌ๋จ.(์์ฆ์๋ ๋ง์ด ์ฌ์ฉx)ACK
Acknowledgment ํ๋์ ๊ฐ์ด ์ฑ์์ ธ ์์์ ์๋ฆฌ๋ ํ๋๊ทธ. ์ด ํ๋๊ทธ๊ฐ 0์ด๋ฉด Acknowledgment ํ๋๊ฐ ๋ฌด์๋จ.PSH
Push ํ๋๊ทธ. ์์ ์์๊ฒ ์ด ๋ฐ์ดํฐ๋ฅผ ์ต๋ํ ๋น ๋ฅด๊ฒ ์์ฉํ๋ก๊ทธ๋จ์ ์ ๋ฌํด ๋ฌ๋ผ๋ ํ๋๊ทธ.
์ด ํ๋๊ทธ๊ฐ 0์ด๋ผ๋ฉด ์์ ์๋ ๋ฒํผ๊ฐ ๋ค ์ฑ์์ง ๋๊น์ง ๊ธฐ๋ค๋ฆผ. 1์ด๋ผ๋ฉด ์ด ์ธ๊ทธ๋จผํธ ์ดํ ์ฐ๊ฒฐ๋ ์ธ๊ทธ๋จผํธ๊ฐ ์์์ ๋ปํจ.RST
Reset ํ๋๊ทธ. ์ด๋ฏธ ์ฐ๊ฒฐ์ด ํ๋ฆฝ๋ ์ํ์ธ ์๋๋ฐฉ์๊ฒ ์ฐ๊ฒฐ์ ๊ฐ์ ๋ก ๋ฆฌ์ ํด๋ฌ๋ผ๋ ์๋ฏธSYN
Synchronize ํ๋๊ทธ. ์ฐ๊ฒฐ ์์ฑํ ๋, ์ํ์ค ๋ฒํธ ๋๊ธฐํ ๋ง์ถ๊ธฐ ์ํ ์ธ๊ทธ๋จผํธFIN
Finish ํ๋๊ทธ. ์ฐ๊ฒฐ ์ข ๋ฃํ๊ณ ์ถ๋ค๋ ์์ฒญ์ธ ์ธ๊ทธ๋จผํธ๋ฅผ ์๋ฏธ.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