๐TCP์ UDP์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ์ค๋ช ํด๋ณด๋ผ๋ CS๋ฉด์ ์ง๋ฌธ์ ๋ณด๊ณ ๋ด๊ฒ ์ทจ์ฝํ ๋คํธ์ํฌCS์ง์์ ๋ณด์ถฉํ ์ ์๋ ์ข์ ์ง๋ฌธ์ด ๋ ๊ฒ์ด๋ผ ํ๋จํ์ฌ ์ด ํฌ์คํ ์ ์ ๋ฆฌํ๊ฒ ๋์๋ค. TCP์ UDP๋ฅผ ๋น๊ต ๋ถ์ํด๋ด๋ผ๋ ์ง๋ฌธ์ด๊ธฐ์ TCP์ UDP๋ฅผ ํ๋์ฉ ์ฒ์ฒํ ์์๋ณด๊ณ ๋น๊ตํด๋ณด์
๐TCP์ UDP๋ ๋ชจ๋ TCP/IP์ ์ ์ก๊ณ์ธต์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ด๋ค. ๋๋ฌธ์ ์ ์ก๊ณ์ธต์ด ๋ฌด์์ธ์ง, ํ๋ ์ญํ ์ด ๋ฌด์์ธ์ง ์์์ผ ํ ํ์์ฑ์ด ์๋ค.
TCP/IP ๋ชจ๋ธ์ ์ ์ก ๊ณ์ธต(Transport Layer)์ ์ก์ ์์ ์์ ์ ๊ฐ์ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ๋ด๋นํ๋ ๊ณ์ธต์ด๋ค.
ํจํท์ด ์ ์ก ๊ณผ์ ์์ ์๋ฌด ๋ฌธ์ ์์ด ์ ๋๋ก ์์ ์ง ์ปดํจํฐ์ ๋์ฐฉํ ์ ์๋๋ก ํจํท ์ ์ก์ ์ ์ดํ๋ ์ญํ ์ ํ๋ค.
์ด ๊ณ์ธต์์๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๊ทธ๋จผํธ(Segment) ๋๋ ๋ฐ์ดํฐ๊ทธ๋จ(Datagram) ๋จ์๋ก ๋ถํ ํ๊ณ , ์ ์ก์ ๋ณด์ฅํ๊ณ ์ค๋ฅ๋ฅผ ๊ฒ์ถํ๋ฉฐ, ํ๋ฆ ์ ์ด์ ํผ์ก ์ ์ด๋ฅผ ์ํํ๋ค.
์ธํฐ๋ท ๊ณ์ธต์ด ํจํท ์ ์ก์ด๋ผ๋ ์ค์ํ ์ญํ ์ ๋ด๋นํ์ง๋ง ์์ ์ง๊น์ง ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ํจํท์ ์ ์กํ ๋ฟ ์์ ์ง ์ปดํจํฐ๊ฐ ์ธํฐ๋ท์ ์กด์ฌํ๋์ง, ์์ ์ง ์ปดํจํฐ๊ฐ ์กด์ฌํ๋๋ผ๋ ํจํท์ ์์ ํ ์ค๋น๊ฐ ๋์ด ์๋์ง, ํจํท์ ์์ ํ ์ค๋น๊ฐ ๋์ด ์๋๋ผ๋ ์ ์ก ๊ณผ์ ์์ ํจํท์ด ์์๋๊ฑฐ๋ ์ ์ค๋์ง๋ ์์๋์ง ๋ฑ์ ๋ฌธ์ ๋ค์ ์ ๊ฒฝ ์ฐ์ง ์๋๋ค.
ํจํท์ด ์ ์ก ๊ณผ์ ์์ ์๋ฌด ๋ฌธ์ ์์ด ์ ๋๋ก ์์ ์ง ์ปดํจํฐ์ ๋์ฐฉํ ์ ์๋๋ก ํจํท ์ ์ก์ ์ ์ดํ ํ์์ฑ์ด ์๋ค.
๐๋ง์ฝ ์ ์ก๊ณ์ธต ์์ด ์ ์ก์ ์ ์ด๋ฅผ ๋ฐ๋กํ์ง ์๊ณ ์ด๋ค ์ฌํ๊ฐ ๋ฐ์ํ ๊น?
์ก์ ์ ์ธก์์ "Hello, Nice to meet you" ๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋์ง๋ง, ์ด๋ฏธ ์์ ์ธก์ ์ฉ๋์ ํ๋์์ ์ฒ๋ฆฌ์ค์ด๋ผ ์ผ๋ถ๋ฐ์ดํฐ๋ฅผ ์๊ฒ ๋๋ค๋ฉด,
์์ ์ ์ธก์์ ๋ฐ์ ๋ฉ์์ง๋ "Hellใ,ใใใใtoใใใyou"๋ผ๋ ๋ฉ์ง์๊ฐ ๋๋ฌํ ์๋ ์๋ค.
TCP(Transmission Control Protocol)๋ ์ธํฐ๋ท ํ๋กํ ์ฝ(IP)์ ์ ์ก ๊ณ์ธต์์ ์ฌ์ฉ๋๋ ์ฐ๊ฒฐ ์งํฅ์ ์ธ ํ๋กํ ์ฝ์ด๋ค.
์ฅ์น๋ค ์ฌ์ด์ ๋ ผ๋ฆฌ์ ์ธ ์ ์์ ์ฑ๋ฆฝ(establish)ํ๊ธฐ ์ํ์ฌ ์ฐ๊ฒฐ์ ์ค์ ํ์ฌ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ ์ฐ๊ฒฐ ์งํฅ์ ์ธ ํ๋กํ ์ฝ
TCP๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ๋ฐ์ดํฐ๋ ๋ฉ์์ง ๋ฑ์ ์์ ์ ์ผ๋ก, ์์๋๋ก, ์๋ฌ์์ด ๊ตํํ ์ ์๋๋ก ํ๋ค.
์์ผ ์์ฑ ๐ 3Way Handshake ๐ ๋ฐ์ดํฐ ์ก์ , ์์ ๐ 4Way Handshake ๐ ์์ผ ์ฐ๊ฒฐ์ข ๋ฃ
TCP๋ ํฌ๊ฒ ์ ๊ณผ์ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๋ค.
3Way Handshake๋ ์ก์ ์์ ์์ ์๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ ๋์์ ๊ณผ์ ์ด๊ณ ,
4Way Handshake๋ ์ก์ ์์ ์์ ์์ ์ฐ๊ฒฐ์ ํด์งํ๊ธฐ ์ํ ๋์์ ๊ณผ์ ์ด๋ค.
๐์์ ์ผ๋ จ์ ๊ณผ์ ์ ์ธ์ธํ๊ฒ ์ดํดํ๊ธฐ ์ํด์๋ TCP Header์ ๋ด๊ธด ์ ๋ณด๋ฅผ ์ ํ์๊ฐ ์๋ค.
์์ฉ ๊ณ์ธต์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ TCP๋ ํค๋๋ฅผ ์ถ๊ฐํ ํ์ ์ด๋ฅผ IP๋ก ๋ณด๋ธ๋ค. ํค๋์๋ ์๋ ํ์ ๊ฐ์ ์ ๋ณด๊ฐ ํฌํจ๋๋ค.
ํ ๋ | ๋ด ์ฉ | ํฌ ๊ธฐ |
---|---|---|
์ก์์ ์์ ํฌํธ ๋ฒํธ | TCP๋ก ์ฐ๊ฒฐ๋๋ ๊ฐ์ ํ์ ์๋จ์ ์ก์์ ํ๋ก์ธ์ค์ ํ ๋น๋๋ ํฌํธ ์ฃผ์ | 16 |
์ํ์ค ๋ฒํธ(Sequence Number) | ์ก์ ์๊ฐ ์ง์ ํ๋ ์์ ๋ฒํธ, ์ ์ก๋๋ ๋ฐ์ดํธ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฆ๊ฐ. SYN = 1 : ์ด๊ธฐ ์ํ์ค ๋ฒํธ๊ฐ ๋๋ค. ACK ๋ฒํธ๋ ์ด ๊ฐ์ 1์ ๋ํ ๊ฐ. SYN = 0 : ํ์ฌ ์ธ์ ์ ์ด ์ธ๊ทธ๋จผํธ ๋ฐ์ดํฐ์ ์ต์ด ๋ฐ์ดํธ ๊ฐ์ ๋์ ์ํ์ค ๋ฒํธ | 32 |
์๋ต ๋ฒํธ(ACK Number) | ์์ ํ๋ก์ธ์ค๊ฐ ์ ๋๋ก ์์ ํ ๋ฐ์ดํธ์ ์๋ฅผ ์๋ตํ๊ธฐ ์ํด ์ฌ์ฉ. | 32 |
๋ฐ์ดํฐ ์คํ์ (Data Offset) | TCP ์ธ๊ทธ๋จผํธ์ ์์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ์ ์์ ์์น๋ฅผ ํํ(TCP ํค๋์ ํฌ๊ธฐ) | 4 |
์์ฝ ํ๋(Reserved) | ์ฌ์ฉ์ ํ์ง ์์ง๋ง ๋์ค์ ์ํ ์์ฝ ํ๋์ด๋ฉฐ 0์ผ๋ก ์ฑ์์ ธ์ผํ๋ค. | 6 |
์ ์ด ๋นํธ(Flag Bit) | SYN, ACK, FIN ๋ฑ์ ์ ์ด ๋ฒํธ -> ์๋ ์ถ๊ฐ ์ค๋ช ์ฐธ์กฐ | 6 |
์๋์ฐ ํฌ๊ธฐ(Window) | ์์ ์๋์ฐ์ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ๋ ์ฌ์ฉ. 0์ด๋ฉด ์ก์ ํ๋ก์ธ์ค์ ์ ์ก ์ค์ง | 16 |
์ฒดํฌ์ฌ(Checksum) | TCP ์ธ๊ทธ๋จผํธ์ ํฌํจ๋๋ ํ๋กํ ์ฝ ํค๋์ ๋ฐ์ดํฐ์ ๋ํ ์ค๋ฅ ๊ฒ์ถ ์ฉ๋ | 16 |
๊ธด๊ธ ์์น(Urgent Pointer) | ๊ธด๊ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํจ, URG ํ๋๊ทธ ๋นํธ๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ์๋ง ์ ํจ | 16 |
์ข ๋ฅ | ๋ด ์ฉ |
---|---|
ใใใใURGใใใใ | ๊ธด๊ธ ์์น๋ฅผ ํ๋๊ฐ ์ ํจํ์ง ์ค์ |
ใใใใACKใใใใ | ์๋ต ๋ฒํธ ํ๋๊ฐ ์ ํจํ์ง ์ค์ . ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์ต์ด์ SYN ํจํท ์ดํ์ ์ ์ก๋๋ ๋ชจ๋ ํจํท์ ์ด ํ๋๊ทธ๊ฐ ์ค์ ๋์ด์ผ ํ๋ค. |
ใใใใPSHใใใใ | ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒํผ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์์ ๊ณ์ธต์ ์ฆ์ ์ ๋ฌํ ๋ |
ใใใใRSTใใใใ | ์ฐ๊ฒฐ์ ๋ฆฌ์ ์ด๋ ์ ํจํ์ง ์์ ์ธ๊ทธ๋จผํธ์ ๋ํ ์๋ต์ฉ |
ใใใใSYNใใใใ | ์ฐ๊ฒฐ ์ค์ ์๊ตฌ. ๋๊ธฐํ ์ํ์ค ๋ฒํธ. ์์ชฝ์ด ๋ณด๋ธ ์ต์ด์ ํจํท์๋ง ์ด ํ๋๊ทธ๊ฐ ์ค์ ๋์ด ์์ด์ผ ํ๋ค. |
ใใใใFINใใใใ | ๋ ์ด์ ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ์ฐ๊ฒฐ ์ข ๋ฃ ์์ฌ ํ์ |
์ก์์ ํฌํธ๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ 3Way Handshake๋ ๋ค์๊ณผ ๊ฐ์ ์ธ๋ถ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
ํด๋ผ์ด์ธํธ์์ ์ํ์ค ๋ฒํธ๋ฅผ ์ด๊ธฐํํ๋ค.
์ด๊ธฐํํ ๋ฒํธ๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด์ Flag Bit์ค SYN(Synchronize) ํจํท์ ๋ณด๋ธ๋ค.
์๋ฒ๋ SYN์ ๋ฐ๊ณ ACK์ SYN์ ์๋ตํ๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ SYN์ด ์ ๋์ฐฉํ๋ค๋ ๊ฒ์ ์๋ฆฌ๊ธฐ ์ํด ACK๋ฅผ ์ค์ ํด์ SYN๊ณผ ๊ฐ์ด ๋ณด๋ด์ค๋ค.
ํด๋ผ์ด์ธํธ๋ ACK๋ฅผ ๋ฐ๊ณ , ์๋ฒ์๊ฒ ACK๋ฅผ ์๋ตํ๋ค.
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ๋ค์ ACK๊ฐ ์ ๋์ฐฉํ๋ค๋ ๊ฒ์ ์๋ฆฌ๊ธฐ ์ํด ํ๋ฒ๋ ACK๋ฅผ ์ค์ ํด์ ๋ณด๋ด์ค๋ค.
ํด๋ผ์ด์ธํธ์์ ๋์์ ํธ์ถํ๋ฉด ํจํท์ ๋ง๋ค์ด ์๋ฒ์ ์ ๋ฌํ๋ค.
ํด๋ผ์ด์ธํธ์์ write()ํธ์ถํ๊ฒ ๋๋ฉด HTTP request๋ฉ์์ง๋ฅผ ๋ฐ์ ํจํท์ ๋ง๋ค์ด ์๋ฒ์ ์ ๋ฌํ๋ค.
์๋ฒ๋ ๋์์ ์งํํ๊ณ , ํจํท์ ๋ง๋ค์ด ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ค.
ํด๋ผ์ด์ธํธ์์ ํจํท์ ๋ฐ์ ์๋ฒ๋ write()์์ฒญ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ ํจํท์ ๋ง๋ค์ด์ ๋ค์ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ค.
์ด๋ Flag bit์ ACK๋ฒํธ๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ 1์ ๋ํ ๊ฐ์ ๋ง๋ค์ด์ ๋ณด๋ธ๋ค.
(ACK๋ฒํธ 11 = ๋ฐ์ดํฐํฌ๊ธฐ10 + 1 )
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์์ ๋ณด๋ธ ํจํท์ ํ์ธํ๊ณ ์ฐ๊ฒฐ์ ์ข
๋ฃํ๊ฑฐ๋, ๋ค์ ๋์์ ์ํํ๋ค.
์๋ฒ์์ ๋ณด๋ธ ํจํท์ ํ์ธํ๊ณ ๋ค์๋์์ผ๋ก read()๋ฅผ ํธ์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค.
2๋ฒ ๊ณผ์ ์ด ์ด๋ฃจ์ด์ง์ง ์๊ณ 1๋ฒ๊ณผ์ ์์ ํจํท์ ์์ค๋ก ์๋ฒ์ธก์์ ์๋ต์ด ์์๋๋ ์ด์ ํจํท์ ์ฌ์ ์กํ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ํจํท์ ์ ๋ฌํ๋ ๋์ ํจํท์ ์์ค๋ก ์ธํด ์๋ต์ด ์์ผ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ผ์ ์๊ฐ ์ดํ ๋ค์ ์ด์ ํจํท์ ์ฌ์ ์ก์ ์ค์ํ๊ณ , ์ด๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์๋ต์ด ์๋ค๋ฉด ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ ์ก์ ์์
์ ๊ฐ์ ๋ก ์ข
๋ฃํ๊ณ ์๋ฌ๋ฅผ ๋ฐํํ๋ค.
์ก์์ ํฌํธ ์ฐ๊ฒฐํด์ ๋ฅผ ์ํ 4Way Handshake๋ ๋ค์๊ณผ ๊ฐ์ ์ธ๋ถ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์๊ฒ FIN(Finish) ํจํท์ ๋ณด๋ธ๋ค.
ํด๋ผ์ด์ธํธ์์ close()๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด, TCP Header์ ์ ์ด๋นํธ ์ค ์ฐ๊ฒฐ๋๊ธฐ๋ฅผ ๋ํ๋ด๋ FIN๋ด์ ํจํท์ ์๋ฒ๋ก ์ ์กํ๊ณ , ํด๋ผ์ด์ธํธ๋ FIN_WAIT1
์ํ๋ก ๋๊ธฐํ๋ค.
์๋ฒ๋ FIN์ด ๋ด๊ธด ํจํท์ ๋ฐ๊ณ , ํด๋ผ์ด์ธํธ์๊ฒ ACK๋ฅผ ๋ณด๋ธ๋ค.
์๋ฒ๋ FIN์ ํ์ธํ๊ณ ์ํ๋ฅผ CLOSE_WAIT
์ผ๋ก ๋ฐ๊พผ๋ค ์ฐ๊ฒฐ์ข
๋ฃ๋ฅผ ํ์ธํ๋ค๋ ์๋ต์ ํ๊ธฐ์ํด ACK๊ฐ ๋ด๊ธด ํจํท์ ๋ณด๋ธ๋ค. ๋์์ ํด๋น ํฌํธ์ ์ฐ๊ฒฐ๋์ด ์๋ ์ดํ๋ฆฌ์ผ์ด์
์๊ฒ close()๋ฅผ ์์ฒญํ๋ค. ACK๋ฅผ ๋ฐ์ ํด๋ผ์ด์ธํธ๋ ์ํ๋ฅผ FIN_WAIT2
๋ก ๋ณ๊ฒฝํ๋ค.
์๋ฒ๋ ์์ ์ ๋ฐ์ดํฐ ์ ์ก์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. ์๋ฒ์ ๋ฐ์ดํฐ ์ ์ก์ด ๋๋๋ฉด, ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ FIN ํจํท์ ๋ณด๋ธ๊ณ LAST_WAIT
์ํ์ ์ง์
ํ๋ค.
ํด๋ผ์ด์ธํธ๋ FIN ํจํท์ ๋ฐ๊ณ , ์๋ฒ์๊ฒ ACK๋ฅผ ๋ณด๋ด๊ณ TIME_WAIT
์ํ์ ์ง์
ํ๋ค. ACK๋ฅผ ๋ฐ์ ์๋ฒ๋ ์ฐ๊ฒฐ์ ๋๋๋คCLOSED
. ํด๋ผ์ด์ธํธ๋ ์ผ์ ์๊ฐ์ด ์ง๋ ํ, ์์ ์ ์์ผ์ ๋ซ๋๋ค CLOSED
.
์๋์ ๊ทธ๋ฆผ์ ์์ TCP์ ๋์๊ณผ์ ์ค ์ํ์ค๋ฒํธ์ ACK๋ฒํธ์ ๋ณํ๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค.
โํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ํ์ค ๋ฒํธ๋ x, y๋ก ์๋ก ๋ ๋ฆฝ์ ์ธ ๋ฒํธ์ด๋ค. ์์์์ ์ฐธ๊ณ ๋๋ ์ซ์๋ 0,1,11,12๋ฐ์ ์๋ค๊ณ ํจ๋ถ๋ก x = y๋ผ๊ณ ํ๋จํด์๋ ์ ๋๋ก ์๋๋ค. ์์์๋ 0์ ์ํ์ค ๋ฒํธ๋ก ์์๋๋ ์์์ด์ง๋ง, ์ค์ ๋ก๋ ๋๋คํ ๊ฐ์ด ๋์๋ก ๋ ์ํ์ค๋ฒํธ๋ก ์์๋๋ค.
์ฐ๊ฒฐํ ์๋น์ค
์ฐ๊ฒฐํ ์๋น์ค๋ก ๊ฐ์ ํ์ ๋ฐฉ์์ ์ ๊ณตํ๋ค.
3-way handshaking ๊ณผ์ ์ ํตํด ์ฐ๊ฒฐ์ ์ค์
4-way handshaking ์ ํตํด ์ฐ๊ฒฐ์ ํด์ .
ํ๋ฆ์ ์ด(Flow control)
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ์กฐ์ ํ์ฌ ์์ ์์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์ง
์ก์ ํ๋ ๊ณณ์์ ๊ฐ๋น์ด ์๋๊ฒ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ณด๋ด ์์ ํ๋ ๊ณณ์์ ๋ฌธ์ ๊ฐ ์ผ์ด๋๋ ๊ฒ์ ๋ง๋๋ค.
์์ ์๊ฐ ์๋์ฐํฌ๊ธฐ(Window Size) ๊ฐ์ ํตํด ์์ ๋์ ์ ํ ์ ์๋ค.
ํผ์ก์ ์ด(Congestion control)
๋คํธ์ํฌ ๋ด์ ํจํท ์๊ฐ ๋์น๊ฒ ์ฆ๊ฐํ์ง ์๋๋ก ๋ฐฉ์ง
์ ๋ณด์ ์ํต๋์ด ๊ณผ๋คํ๋ฉด ํจํท์ ์กฐ๊ธ๋ง ์ ์กํ์ฌ ํผ์ก ๋ถ๊ดด ํ์์ด ์ผ์ด๋๋ ๊ฒ์ ๋ง๋๋ค.
์ ๋ขฐ์ฑ์ด ๋์ ์ ์ก(Reliable transmission)
์ ์ด์ค, ์ ๋์ ๋ฐฉ์
๋ฉํฐ์บ์คํ
์ด๋ ๋ธ๋ก๋์บ์คํ
์ ์ง์ํ์ง ์๋๋ค.
์ธํฐ๋ท ํ๋กํ ์ฝ(IP)์ ์ ์ก ๊ณ์ธต์์ ์ฌ์ฉ๋๋ ๋น ์ฐ๊ฒฐ์งํฅํ ํ๋กํ ์ฝ์ด๋ค.
UDP๋ ๋น ์ฐ๊ฒฐ์งํฅํ ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฒ๋ ์์ ์(์๋ฒ)๊ฐ ๋ฐ์ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํ๋ ๊ณผ์ ์ ๊ฑฐ์น์ง ์๋๋ค.
UDP์ ์ ์ก ๋ฐฉ์์ ๋๋ฌด ๋จ์ํด์ ์๋น์ค์ ์ ๋ขฐ์ฑ์ด ๋ฎ๊ณ , ๋ฐ์ดํฐ๊ทธ๋จ ๋์ฐฉ ์์๊ฐ ๋ฐ๋๊ฑฐ๋, ์ค๋ณต๋๊ฑฐ๋, ์ฌ์ง์ด๋ ํต๋ณด ์์ด ๋๋ฝ์ํค๊ธฐ๋ ํ๋ค. UDP๋ ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฅ์ ๊ฒ์ฌ์ ์์ ์ด ํ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ค.
ํ๋ | ๋ด์ฉ | ํฌ๊ธฐ |
---|---|---|
ใ์ก์์ ์์ ํฌํธ ๋ฒํธใใ | UDP๋ก ์ฐ๊ฒฐ๋๋ ๊ฐ์ ํ์ ์๋จ์ ์ก์์ ํ๋ก์ธ์ค์ ํ ๋น๋๋ ํฌํธ ์ฃผ์ | ใใ๊ฐ๊ฐ 2ใใใ ใใ์ดํฉ 4 |
ใใUDP ๊ธธ์ดใใ | ใใํค๋์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ UDP ๋ฐ์ดํฐ๊ทธ๋จ์ ์ ์ฒด ๊ธธ์ด | ใใใ2ใใใ |
ใใUDP ์ฒดํฌ์ฌใใ | ํค๋์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ฌ์ฉ์์ ๋ฐ์ดํฐ ๊ทธ๋จ์ ๋ํ ์ค๋ฅ ๊ฒ์ฌ๋ฅผ ํ๊ธฐ ์ํ ํ๋ใ | ใใใ2ใใใ |
UDP๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ ์ ์ฐ๊ฒฐ์ ์ค์ ํ์ง ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ ํ์๋ ์ฐ๊ฒฐ์ ๋์ง ์๋๋ค.
์ ์ก ์๋๊ฐ ๋น ๋ฅด๊ณ , ์ค๋ฒํค๋๊ฐ ์ ๋ค.
๋ฐ์ดํฐ ์ ์ก ์ค ์์ค์ด๋ ์ค๋ณต ์ ์ก ๋ฑ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ์ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋๋ค.
์ฃผ๋ก ์ ๋ขฐ์ฑ์ด ๋ฎ์ ๋ฐ์ดํฐ ์ ์กํ๋ค.
TCP | UDP |
---|---|
ใใใใConnection-oriented protocol ใใใใใ(์ฐ๊ฒฐ์งํฅํ ํ๋กํ ์ฝ) | ใใใใใใใใConnection-less protocol ใใใใใใใใ(๋น ์ฐ๊ฒฐ์งํฅํ ํ๋กํ ์ฝ) |
ใใใใConnection by byte stream ใใใใ(๋ฐ์ดํธ ์คํธ๋ฆผ์ ํตํ ์ฐ๊ฒฐ) | ใใใใใใใใConnection by message stream ใใใใใใใใ(๋ฉ์ธ์ง ์คํธ๋ฆผ์ ํตํ ์ฐ๊ฒฐ) |
ใใใใCongestion / Flow control ใใใใใใ(ํผ์ก์ ์ด, ํ๋ฆ์ ์ด) | ใใใใใใใใNO Congestion / Flow control ใใใใใใใใ(ํผ์ก์ ์ด์ ํ๋ฆ์ ์ด ์ง์ X) |
ใใใใใOrdered, Lower speed ใใใใ(์์ ๋ณด์ฅ, ์๋์ ์ผ๋ก ๋๋ฆผ) | ใใใใใใใใNot ordered, Higer speed ใใใใใใ(์์ ๋ณด์ฅ๋์ง ์์, ์๋์ ์ผ๋ก ๋น ๋ฆ) |
ใใใใReliable data transmission ใใใ(์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก - ์์ ์ ) | ใใใใใใใใUnreliable data transmission ใใใใใใใใใ(๋ฐ์ดํฐ ์ ์ก ๋ณด์ฅ X) |
ใใใใใใTCP packet : Segment ใใใใใใ(์ธ๊ทธ๋จผํธ TCP ํจํท) | ใใใใใใใใใUDP packet : Datagram ใใใใใใใใใ(๋ฐ์ดํฐ๊ทธ๋จ UDP ํจํท) |
ใใใHTTP, Email, File transfer์์ ์ฌ์ฉใใใใใ | ใใDNS, Broadcasting(๋๋ฉ์ธ, ์ค์๊ฐ ๋์์ ์๋น์ค์์ ์ฌ์ฉ)ใใใ |
์ฐธ๊ณ ์๋ฃ(์ถ์ฒ)
ํฐ์คํ ๋ฆฌ Sam 3 ํฌ์คํ
์ฝ๊ฒ ์ดํดํ๋ ๋คํธ์ํฌ 16. TCP/IP ์ ์ก ๊ณ์ธต(ํธ๋์คํฌํธ ๊ณ์ธต)๊ณผ ํฌํธ(Port) ๋ฒํธ
์ฐ์ํํ
ํฌ ์ ํ๋ธ๋์์ [10๋ถ ํ
์ฝํก] ์น์ด์ TCP/UDP
์ฐ์ํํ
ํฌ ์ ํ๋ธ๋์์ [10๋ถ ํ
์ฝํก] ๐จโ๐ซ๋ฅด์์ TCP UDP
์ธ๋ค์ผ ์ด๋ฏธ์ง ์ถ์ฒ ๊ธฐ๊ธํ๋์จ์ด ์ปค๋ฎค๋ํฐ ํฌ์คํ
์ํค๋ฐฑ๊ณผ ๊ฒ์๊ฒฐ๊ณผ [์ฌ์ฉ์ ๋ฐ์ดํฐ๊ทธ๋จ ํ๋กํ ์ฝ], [์ ์ก ์ ์ด ํ๋กํ ์ฝ]
gitlab io ๊น๋ก๋ก ํฌ์คํ
์ ์ก์ธต ์ธํฐ๋ท ํ๋กํ ์ฝ, UDP, TCP
Velog hi daehyunlee ํฌ์คํ
TCP ์ UDP ์ฐจ์ด๋ฅผ ์์ธํ ์์๋ณด์