TCP
์ UDP
๋ TCP/IP 4๊ณ์ธต ์ค Transport ๊ณ์ธต
์์ ๋ฐ์ดํฐ์
์ก์์ ์ ์ ์ดํ๋ ํ๋กํ ์ฝ(๊ท์ฝ)๋ค์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ TCP์
UDP๋ฅผ ๋น๊ตํ๋ฉด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
TCP๋ Transmission Control Protocol
์ ์ฝ์ด๋ก ๋คํธ์ํฌ์์ ๋ฐ์ดํฐ๋ฅผ
์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด IP์ ํจ๊ป ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ ๋ปํฉ๋๋ค.
TCP๋ ์ฐ๊ฒฐ ์งํฅ์ ํ๋กํ ์ฝ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ, ๋๋ ํธ์คํธ์ ํธ์คํธ ์ฌ์ด์์
์๋ก ์ฐ๊ฒฐ๋ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํ๋กํ ์ฝ์
๋๋ค. ์ด ์ฐ๊ฒฐ์ฑ์ ์งํฅํ๊ธฐ ๋๋ฌธ์
TCP๋ ๋์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๋ฐ๋ผ์ TCP๋ ์ด๋ฌํ ์ ๋ขฐ์ฑ ๋ณด์ฅ์ ์ํด Handshaking
์ ํตํด ์ฐ๊ฒฐ์ด ์ฑ๊ณตํด์ผ
๊ทธ๋๋ถํฐ ๋ฐ์ดํฐ ํต์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ํ TCP๋ ๋ฐ์ดํฐ๋ฅผ byte stream
ํํ๋ก ์ ์กํด
๋ฐ์ดํฐ์ ๊ฒฝ๊ณ๋ฅผ ๊ตฌ๋ถํ์ง ์์ผ๋ฉฐ ์ ์ก ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ์ ์ฝ์ด ์์ต๋๋ค
๋ํ ๋ฐ์ดํฐ๋ฅผ Segment
๊ธฐ์ค์ผ๋ก ์ฒ๋ฆฌํ๋ฏ๋ก, ๋ฐ์ดํฐ์ ์ ์ก ์์๋ฅผ ๋ณด์ฅํฉ๋๋ค
ํ์ง๋ง ์ด๋ฐ ํน์ง๋ค์ ๊ฐ์ง๊ณ ์ ๋ขฐ์ฑ ์๋ ํต์ ์ ์งํฅํ๊ธฐ ๋๋ฌธ์ ์๊ธฐ๋ ๋จ์ ๋ ์กด์ฌํ๋๋ฐ
๋จผ์ ๋ฐ์ดํฐ์ ์ ๋ขฐ์ฑ๊ณผ ์ฐ๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ง์์ ์ผ๋ก ์๋ต์ ์ฃผ๊ณ ๋ฐ์์ผ ํ๊ณ
๋ฐ์ดํฐ์ ํ๋ฆ๊ณผ ํผ์ก์ ์ ์ดํด์ผํ๊ธฐ ๋๋ฌธ์ ์ ์ก์๋๊ฐ UDP์ ๋นํด ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์์ผ๋ฉฐ
CPU์ ๊ฐ์ ์์์ ๋ง์ด ์๋ชจํฉ๋๋ค.
๋จผ์ 3 way handshake๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํด ํธ์คํธ(์ฃผ๋ก ํด๋ผ์ด์ธํธ-์๋ฒ)๊ฐ ์ฐ๊ฒฐ๋๋ ๊ณผ์ ์ ๋ปํฉ๋๋ค.
SYN
ํจํท์ ์ ์กํฉ๋๋ค.(Client : SYN_SENT ์ํ)SYN
ํจํท์ ์์ ํ๊ณ , ํด๋น ํฌํธ๋ฅผ ์ด์ด๋ก๋๋ค (Server : SYN_RCVD ์ํ)ACK
์ ํด๋ผ์ด์ธํธ ํฌํธ๋ฅผ ์ด์ด๋ฌ๋ผ๋ SYN
์ ๋ณด๋
๋๋ค.ACK
๋ฅผ ๋ณด๋ด๊ณ ์๋ฒ๊ฐ ์ด๋ฅผ ์์ ํ๋ฉด ์ฐ๊ฒฐ์ด ์๋ฃ๋ฉ๋๋ค (Server : ESTABLISHED ์ํ)์ด 3 way handshake
๋ฅผ ๊ฑฐ์ณ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ฐ๊ฒฐ์ด ์ฑ๋ฆฝ๋๊ณ ์๋ก ํจํท๊ณผ ์์ ์ ํ๋ค๋
ACK๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ํต์ ํ๊ฒ ๋ฉ๋๋ค.
๋ค์์ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ๊ณผ์ ์ธ 4 Way Handshake์ ๋๋ค.
FIN
ํจํท์ ๋ณด๋
๋๋ค (Client : FIN-WAIT-1)ACK
๋ฅผ ๋ณด๋ด๊ณ ์์ ์ ํฌํธ๋ฅผ ๋ซ์ต๋๋ค (Server : CLOSE-WAIT)ACK
๋ฅผ ๋ฐ์ผ๋ฉด Server์ FIN
์ ๊ธฐ๋ค๋ฆฝ๋๋ค (Client : FIN-WAIT-2)FIN
์ ๋ณด๋
๋๋ค (Server : LAST-ACK)FIN
์ ๋ํ ACK
์๋ต์ ๋ณด๋ด๊ณ ์ถ๊ฐ ํจํท์ ๊ธฐ๋ค๋ฆฌ๋ค ์ข
๋ฃํฉ๋๋ค (Client : TIME-WAIT -> CLOSED)ACK
๋ฅผ ๋ฐ์ผ๋ฉด ์ข
๋ฃํฉ๋๋ค (Server : CLOSED)์์ 3-Way, 4-Way Handshake์ ์ํ ๋ณํ๋ฅผ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค
TCP๋ ์ด๋ฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ์ ์ ๋ขฐ์ฑ์ ํ๋ณดํ๊ณ ACK
๋ฅผ ํตํ ํจํท ์ปจํธ๋กค์ ์ฌ์ฉํฉ๋๋ค.
UDP
๋ User Datagram Protocol
์ ์ฝ์ด๋ก TCP์๋ ๋ฌ๋ฆฌ
๋น์ฐ๊ฒฐ์ ์งํฅํ๋ ํ๋กํ ์ฝ์
๋๋ค. ์ฆ ์ฐ๊ฒฐ์ ๊ฑฐ์น์ง ์๊ณ Sender๊ฐ ์ผ๋ฐฉ์ ์ผ๋ก
๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํ๋กํ ์ฝ์
๋๋ค.
ํฐ ํน์ง์ผ๋ก๋ UDP๋ Datagram
๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ์ด ๋ฐฉ์์
TCP์ Segment ๋ฐฉ์๊ณผ๋ ๋ฌ๋ผ์ ๋ฐ์ดํฐ์ ๊ฒฝ๊ณ๋ฅผ ๊ตฌ๋ถํ๊ณ ํฌ๊ธฐ์ ์ ์ฝ์ด ์์ต๋๋ค (65535 Byte)
UDP๋ ๋น์ฐ๊ฒฐ์ ์งํฅํ๊ธฐ ๋๋ฌธ์ TCP์ ๋ฌ๋ฆฌ IP๋ง์ ๊ฐ์ง๊ณ
๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค. ๋ฐ๋ผ์ 1:1 ์ฐ๊ฒฐ์ธ TCP์ ๋ฌ๋ฆฌ 1:1, 1:n, n:n ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
TCP์ ๋ฌ๋ฆฌ ๋ฐ์ดํฐ์ ํ๋ฆ ํต์ (ACK)๋ฅผ ํ์ง ์์ผ๋ฏ๋ก ์ ๋ขฐ์ฑ์ด ๋จ์ด์ง๊ณ ์ค๋ฅ๋ฅผ ๊ฒ์ถํ ์ ์์ผ๋ฉฐ
๋ฐ์ดํฐ์ ์์๋ฅผ ๋ง์ถ๊ธฐ ์ํ ์์
์ ํ์ง ์์ต๋๋ค ๋ฐ๋ผ์ ํจํท์ด ์์ค๋๊ฑฐ๋ ๋ณ์กฐ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์๊ณ
๋ฐ์ดํฐ ์ค๋ฅ ๊ฒ์ฌ๋ ๊ฐ๋ฅํ์ง๋ง ์๋ต ๊ณผ์ ์ด ์์ผ๋ฏ๋ก ์ฌ์ ์ก์ ํ์ง ์์ต๋๋ค
๋จผ์ ๋ณด๋ธ ํจํท์ด ๋์ค์ ๋์ฐฉํ ์ ์์ต๋๋ค.
ํ์ง๋ง TCP์ ๊ณผ์ ๋ค์ด ์๋ต๋๊ธฐ ๋๋ฌธ์ ์ ์ก์๋๊ฐ ๋น ๋ฅด๋ค๋ ํฐ ์ฅ์ ์ด ์์ผ๋ฉฐ
ํจํท์ ์ค๋ฒํค๋๊ฐ ์ ์ด ๋คํธ์ํฌ ๋ง์ ๋ถํ๊ฐ ๊ฐ์๋๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ํ ์์ ์๋ชจ๊ฐ
TCP๋ณด๋ค ์ ์ต๋๋ค.
๋ฐ๋ผ์ UDP๋ ์ ๋ขฐ์ฑ๋ณด๋ค ์ฑ๋ฅ(์๋)์ด ์ฐ์ ์๋๋ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ๊ณผ ๊ฐ์ ์๋น์ค์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.