๋คํธ์ํฌ Network
ํน์ ์๋น์ค๋ฅผ ์ ๊ณตํด์ฃผ๋ ๋ค์ํ ๋๋ฐ์ด์ค๋ค์ด ๋คํธ์ํฌ๋ก ์ฐ๊ฒฐ๋๊ณ ์๊ณ , ์๋น์ค ์ด์ฉ์๊ฐ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋น์ค๋ฅผ ๊ฒ์ํ๊ณ ์ด์ฉํ ์ ์๋ค.
๋คํธ์ํฌ Network ์ ๋คํธ์ํน Networking
- ๋คํธ์ํฌ Network: ํต์ ๊ฒฝ๋ก๋ค์ ์ํด ์ํธ ์ฐ๊ฒฐ๋ ์ผ๋ จ์ ์ง์ (Point)์ด๋ ๋
ธ๋(Node)๋ค์ ์๋ฏธ
- ๋คํธ์ํน Networking: ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ๋๋ฐ์ด์ค๋ค ๊ฐ์ ๋ฐ์ดํฐ ๊ตํ์ ์๋ฏธ
ํ๋กํ ์ฝ Protocol
- ์ผ์ข
์ ํต์ ๊ท์ฝ์ผ๋ก, ์ปดํจํฐ ๊ฐ์ ํต์ ์ ํ๊ธฐ ์ํ ์ฝ์ & ์ ์ฐจ
- ๋ฐ์ดํฐ ํต์ ์์๋ ํต์ ์ฅ์น ๊ฐ์ ๋ฐ์ดํฐ ๊ตํ์ ํ์ํ ๋ชจ๋ ๊ท์ฝ์ ์งํฉ์ฒด
๋ฌผ๋ฆฌ์ ์ธก๋ฉด |
๋
ผ๋ฆฌ์ ์ธก๋ฉด |
๋ฐ์ดํฐ ์ ์ก์ ์ฌ์ฉ๋๋ ์ ์ก ๋งค์ฒด, ์ ์์ฉ ์ปค๋ฅํฐ ๋ฐ ์ ์ก ์ ํธ |
๋ฐ์ดํฐ์ ํํ, ์๋ฏธ์ ๊ธฐ๋ฅ, ๋ฐ์ดํฐ ์ ์ก ์ ์ฐจ |
- ์๋ก ๋ค๋ฅธ ๋ถํธ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ๋ ์ฅ์น ๊ฐ์ ์ํํ ํต์ ์ ์ํด์ ๋ถํธ์ ์ผ์น๋ ํ์์
- ์ ์กํ๋ ๋ฐ์ดํฐ ํ์, ์ ํธ์ ์ฝ๋ฉ ๋ฐฉ์, ์ ํธ์ ์ ๊ธฐ์ ํน์ฑ, ๋ฐ์ดํฐ ํ๋ฆ ์ ์ด ๋ฑ์ ์ฝ์์ ์ฒ ์ ํ๊ฒ ์ค์ํ์ง ์์ผ๋ฉด ๊ทผ๋ณธ์ ์ผ๋ก ํต์ ๋ถ๊ฐ
ํจํท Packet
OSI 7๊ณ์ธต
์ค๋๋ ๋คํธ์ํฌ ๊ตฌ์กฐ๋ 1970๋
๋ ๋ง IOS(International Organization for Standardization)์ ์ํด ๋ง๋ค์ด์ง OSI 7๊ณ์ธต(Open Systems Interconnection 7 Layer)์ ๊ธฐ์ด๋ก ํ๋ค.
๋คํธ์ํฌ ์ฅ๋น๋ผ๋ฆฌ ์๋ก ํ์ค์ ์ธ ์ฐ๊ฒฐ์ ํ ์ ์๋๋ก ํ์ ์ ๊ณตํ๊ธฐ ์ํด ๊ท์ ๋์๋ค.
๊ฐ๋ฐฉํ ์์คํ
ํ๊ฒฝ์์๋ ์ด๋ค ์ฅ๋น๋ผ๋ ์ํธ ์ ๋ณด ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋์๊ณ ๋คํธ์ํฌ์ ํ๋กํ ์ฝ์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ํ๋กํ ์ฝ์ด ๋จ์ํด์ก๋ค.
๐ ๊ด๋ฆฌ๊ฐ ์ฌ์์ง๊ณ ์ข ๋ ์ ์ฐํ ๊ตฌ์กฐ๊ฐ ๋์๋ค.
-
๋ฌผ๋ฆฌ ๊ณ์ธต
- ๋
ธ๋ ๊ฐ ๋คํธ์ํฌ ํต์ ์ ํ๊ธฐ ์ํ ๊ฐ์ฅ ์ ์์ค์ ๊ณ์ธต
- ์์ ๊ณ์ธต์ธ ๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต์์ ํ์ฑ๋ ๋ฐ์ดํฐ ํจํท์ ์ ๊ธฐ ์ ํธ๋ ๊ด์ ํธ๋ก ๋ฐ๊ฟ ์ก์์ ํ๋ ์ญํ ์ ๋ด๋น
- ํ๋์จ์ด๋ ๋๋ผ์ด๋ฒ ๊ฐ๋ฐ์๋ค์ด C์ธ์ด ๋ฑ์ผ๋ก ๋ค๋ฃฌ๋ค.
-
๋ฐ์ดํฐ ๋งํฌ ๊ณ์ธต
- ๋คํธ์ํฌ ๊ณ์ธต์ผ๋ก๋ถํฐ์ ๋ฉ์ธ์ง๋ฅผ ๋นํธ๋ก ๋ณํํ์ฌ ๋ฌผ๋ฆฌ ๊ณ์ธต์ด ์ ์กํ ์ ์๊ฒ ํ๋ค.
- ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ดํฐ ํ๋ ์์ ํฌ๋งท์ผ๋ก ๋ง๋ค๊ณ ์์ ์ง์ ๋ฐ์ ์ง ํ๋์จ์ด ์ฃผ์๋ฅผ ํฌํจํ๋ ํค๋๋ฅผ ์ถ๊ฐ
-
๋คํธ์ํฌ ๊ณ์ธต
- ๋ค๋ฅธ ์ฅ์์ ์์นํ ๋ ์์คํ
๊ฐ์ ์ฐ๊ฒฐ์ฑ๊ณผ ๊ฒฝ๋ก ์ ํ์ ์ ๊ณต
- ๋ผ์ฐํ
ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์๋ก ์ฐ๊ฒฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํ ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์ ํํ๋ฉฐ, ์ ํ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ์ ๋ณด๋ฅผ ๋ณด๋ธ๋ค.
- ๋ค๋ฅธ ์ฅ์์ ์์นํ ๋ ์์คํ
๊ฐ์ ์ฐ๊ฒฐ์ฑ๊ณผ ๊ฒฝ๋ก ์ ํ์ ์ ๊ณต
-
ํธ๋์คํฌํธ ๊ณ์ธต
- ๋ฐ์ดํฐ ์ ์ก ์๋น์ค ์ ๊ณต
- ๋คํธ์ํฌ ๋ด์์ ์ ๋ขฐ์ฑ ์๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๊ฐ์ ํ๋ก ๊ตฌ์ถ, ์ ์ง์ ์ข
๋ฃ, ์ ์ก ์ค๋ฅ ๊ฒ์ถ๊ณผ ๋ณต๊ตฌ ๊ทธ๋ฆฌ๊ณ ์ ๋ณด ํ๋ฆ ์ ์ด์ ์ ์ฐจ๋ฅผ ์ ๊ณต
-
์ธ์
๊ณ์ธต
- ์ ํ๋ฆฌ์ผ์ด์
๊ฐ ์ธ์
์ ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌํ๋ฉฐ ์ข
๋ฃ์ํค๋ ์ญํ ์ ํ๋ค.
- ํ๋ ์ ํ
์ด์
๊ณ์ธต ์ฌ์ด์ ํต์ ์ ๋๊ธฐํ์ํค๋ฉฐ ๋ฐ์ดํฐ ๊ตํ์ ๊ด๋ฆฌ
-
ํ๋ ์ ํ
์ด์
๊ณ์ธต
- ํ ์์คํ
์ ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ณด๋ธ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ์์คํ
์ ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต์์ ์ฝ์ ์ ์๊ฒ ํ๋ ๊ณณ
-
์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต
- ์ฌ์ฉ์์ ์ปดํจํฐ๊ฐ ํต์ ํ๋ ๊ณณ
- ํต์ ํ๊ณ ์ ํ๋ ์๋๋ฅผ ์๋ณํ๊ณ ๊ทธ ์๋์์ ํต์ ์ ํ๋ณดํ๋ ์ญํ ์ ํ๋ค.
- ํต์ ์ ์ํ ์ถฉ๋ถํ ์์์ ๋ณด์ ํ๊ณ ์๋์ง์ ์ฌ๋ถ๋ฅผ ํ๋จ
ํ๋ก๊ทธ๋จ ๊ด๊ณ ๋ชจ๋ธ
ํด๋ผ์ด์ธํธ / ์๋ฒ ๋ชจ๋ธ
Peer-to-peer ๋ชจ๋ธ
ํด๋ผ์ด์ธํธ/์๋ฒ ๋ชจ๋ธ๊ณผ ๋๋น๋๋ ๋ชจ๋ธ์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก P2P๋ผ๊ณ ๋ถ๋ฆ
ํด๋ผ์ด์ธํธ/์๋ฒ ํ๊ฒฝ |
P2P ํ๊ฒฝ |
- ์๋น์ค ์ ๊ณต์์ ์๋น์ค ์์์๊ฐ ๋ช
ํํ๊ฒ ๊ตฌ๋ถ๋๋ค. - ์๋น์ค ์ ๊ณต์์ธ ์๋ฒ๊ฐ ์๋น์ค ์์์์ธ ํด๋ผ์ด์ธํธ์๊ฒ ์ผ๋ฐฉ์ ์ผ๋ก ์๋น์ค๋ฅผ ์ ๊ณต - ์๋ฒ๋ ํ ๋์ธ๋ฐ, ์๋ง์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ํ์ฌ ์๋น์ค๋ฅผ ์์ฒญํ๋ค๋ฉด ๋ถํ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋น์ฐ |
- ํ๋์ ์ฌ์ฉ์๊ฐ ์๋ฒ์ด์ ํด๋ผ์ด์ธํธ ์ญํ ์ ์ํ - ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ชจ๋ ์ปดํจํฐ๋ค์ด ์๋ก ๋๋ฑํ ๋๋ฃ์ ์
์ฅ์์ ๋ฐ์ดํฐ๋ ์ฃผ๋ณ ์ฅ์น ๋ฑ์ ๊ณต์ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธ - ํ๋์ ์๋ฒ๋ก ์ง์ค๋๋ ์์ฒญ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ถํ๋ฅผ ์ค์ผ ์ ์๋ค. |
์ธํฐ๋ท
- TCP/IP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ์๋ง์ ์ปดํจํฐ๋ค์ด ์๋ก ์ฐ๊ฒฐ๋ ์ ์ธ๊ณ์์ ๊ฐ์ฅ ํฐ ํต์ ๋ง
- OSI 7๊ณ์ธต ์ค 3๊ณ์ธต์ธ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ ๋ ํ๋ ์ด์์ ๋คํธ์ํฌ ๋ชจ์
- ๊ฐ๊ฐ์ ๋คํธ์ํฌ๋ ์ธํฐ๋ท ๋ด์ ๋ค๋ฅธ ์ด๋ค ๋คํธ์ํฌ์๋ ํต์ ํ ์ ์๋ค.
- ์ ์ธ๊ณ์ ์ธ TCP/IP ๋คํธ์ํฌ๋ฉฐ, IP์ฃผ์์ฒด๊ณ์ IPํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค.
์ค์ ํ๋กํ ์ฝ
IP(Internet Protocol)
IP ์ฃผ์
TCP(Transmission Control Protocol)
UDP(User Datagram Protocol)
- ์ ๋ขฐ์ฑ ์๋ ํ๋กํ ์ฝ
- ์ ์กํ ๋ฐ์ดํฐ๊ฐ ์ ์ ๋ฌ๋์๋์ง ํ์ธํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฒ๋ง์ผ๋ก ์์ ์ ์๋ฌด๋ฅผ ๋คํ ๊ฒ์ผ๋ก ์ฌ๊ธด๋ค.
- ํํ UDP๋ฅผ ์ฐํธ๋ฐฐ๋ฌ์ ๋น์
- ๋น์ฐ๊ฒฐ์งํฅ ํ๋กํ ์ฝ๋ก์, ์๋๋ฐฉ์๊ฒ ์ฐํธ์ ๋ณด๋ธ๋ค๊ณ ์๋ฆฌ์ง ์์๋ ์๋๋ฐฉ์ด ์ด๋์ ์๋์ง๋ฅผ ๊ฐ์ ํ๊ณ ๋ณด๋ด๋ ๊ฒ.
- UDP๋ ์์
, ๋์์์ ์คํธ๋ฆฌ๋ฐ ์๋น์ค ๊ฐ์ ๊ฒ์ ์ ๋นํ ํ๋กํ ์ฝ์ด๋ค.
HTTP(Hypertext Transfer Protocol)
๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด
์์ผ
- ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ์ ์์ด์ ์ฌ์ฉ์์๊ฒ ๋คํธ์ํฌ์ ์ ๊ทผํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
-
์์ผ์ ์๋ช
์ฃผ๊ธฐ
- ์์ผ ์์ฑ
- ์์ผ์ ํตํ ์ก์์
- ์์ผ ์๋ฉธ
-
์์ผ ํ์
-
SOCK_STREAM
- ๋ฐ์ดํธ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ Stream ํต์ ์ ๊ตฌํํ ์ ์๊ฒ ํด์ฃผ๋ ์์ผ
- ์๋ฐฉํฅ ํต์ ๊ฐ๋ฅ
- ์ด ์์ผ์ ์ฌ์ฉํ๋ ํต์ ๋ฐฉ๋ฒ์ TCP๋ผ๊ณ ํ๋ค.
-
SOCK_DGRAM
- ๋ฐ์ดํฐ๊ทธ๋จ ํต์ ์ฉ ์์ผ
- SOCK_STREAM๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฐฉํฅ ํต์ ๊ฐ๋ฅ
- ์ด ์์ผ์ ์ฌ์ฉํ๋ ํต์ ๋ฐฉ๋ฒ์ UDP๋ผ๊ณ ํ๋ค.
-
SOCK_RAW
์์ผ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ธํฐ๋ท ์ฃผ์์ ํฌํธ์ ๋ํด ์์์ผ ํ๋ค.
- ์ธํฐ๋ท ์ฃผ์(IP)๋ฅผ ์ด์ฉํ๋ฉด ์ํ๋ ์ปดํจํฐ๋ฅผ ์ฐพ์ ์ ์๋ค.
- ํ์ง๋ง ์ปดํจํฐ๋ฅผ ์ฐพ์๋ค๊ณ ํด์ ์ฌ๋ฐ๋ฅธ ํต์ ์ ํ ์ ์๋ ๊ฒ์ ์๋๋ค. โต ์ปดํจํฐ ์์๋ ํ๋ก์ธ์ค ์ฌ๋ฌ ๊ฐ๊ฐ ๊ฐ์์ ํฌํธ๋ฅผ ๊ฐ์ง๊ณ ์ ์์ ๋๊ธฐ ์ค์ด๊ฑฐ๋ ํต์ ์ค์ด๊ธฐ ๋๋ฌธ์ด๋ค.
-
ํฌํธ
- ํ๋์ ์ปดํจํฐ์๋ ํ๋ก์ธ์ค ์ฌ๋ฌ ๊ฐ๊ฐ ์์ผ์ผ๋ก ํต์ ํ๋๋ฐ, ์ด๋ ๊ฐ๊ฐ์ ์์ผ์ ๊ตฌ๋ถํ๊ธฐ ์ํด ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค.
- ํฌํธ๋ ์ ์๊ฐ์ผ๋ก ๋์ด์๋ค.
- 0~1023๊น์ง๋ ์ ๋ช
ํ๋ก๊ทธ๋จ(FTP, WWW)๋ฑ์ด ์ฌ์ฉํ๋๋ก ์ด๋ฏธ ์ ํด์ ธ ์์ผ๋ฏ๋ก ์ผ๋ฐ ์ฌ์ฉ์๋ 1023์ดํ์ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
๋๋ฉ์ธ & IP ๋ณํ
๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ
TCP ํ๋ก๊ทธ๋๋ฐ
- TCP๋ ์คํธ๋ฆผ ํต์ ํ๋กํ ์ฝ์ด๋ผ๊ณ ๋ ๋ถ๋ฆผ
- ์ฐ๊ฒฐ์งํฅ ํ๋กํ ์ฝ: TCP ํต์ ์ ํ๋ ค๋ฉด ์์ชฝ์ ์์ผ์ด ์ฐ๊ฒฐ๋ ์ํ์ฌ์ผ๋ง ๊ฐ๋ฅํ๋ค.
์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ด๋?
- ์ก์ ํ ์ชฝ์ ๋ฐ์ดํฐ๊ฐ ์์ ์ธก์ ์ฐจ๋ก๋๋ก, ์ค๊ฐ์ ์ ์ค๋๋ ์ผ ์์ด ๋์ฐฉํ๋ ๊ฒ์ ์๋ฏธ
- ์์ ์ธก๊ณผ ์ก์ ์ธก์ด ๋ฏธ๋ฆฌ ์ฐ๊ฒฐ์ ๋งบ๊ณ ์ฐ๊ฒฐ๋ ์์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํด์ผ ํ๋ค.
- ์ฐ๊ฒฐ์ด ๋์ด์ง ๋๊น์ง๋ ์ก์ ํ ๋ฐ์ดํฐ๊ฐ ์ฐจ๋ก๋๋ก ๋ชฉ์ ์ง์ ์์ผ์ ์ ๋ฌ๋๋ ์ ๋ขฐ์ฑ์ด ์๋ ํต์ ์ด ๊ฐ๋ฅ
- ์ฆ, ํ ๋ฒ ์ฐ๊ฒฐ์ ๋งบ๊ฒ ๋๋ฉด, ์์ ์ ์ผ๋ก ํต์ ๊ฐ๋ฅ
TCP ํ๋ก๊ทธ๋๋ฐ์ ์ํด์๋ TCP ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ๋์ ์์๋ฅผ ์๊ณ ์์ด์ผ ํ๋๋ฐ, java์์๋ TCP ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๊ฒ ํ ์ ์๋๋ก java.net ํจํค์ง์ ๊ด๋ จ ํด๋์ค๋ค์ ๋ฏธ๋ฆฌ ์ค๋นํด๋๋ค.
-
์ฃผ์ ํด๋์ค
-
ServerSocket
: ์๋ฒ ์ชฝ์์ ํด๋ผ์ด์ธํธ์ ์ ์์ ๋๊ธฐํ๊ธฐ ์ํด์ ๋ฐ๋์ ํ์ํ ํด๋์ค
-
์ฃผ์ ๋ฉ์๋
Socket accept()
: ํด๋ผ์ด์ธํธ์ ์ ์ ์์ฒญ์ ๋ฐ์ ์๋ก์ด Socket ๊ฐ์ฒด return
void claose()
: ์๋ฒ ์์ผ ๋ซ๊ธฐ
InetAddress getInetAddress()
: ์๋ฒ ์์ ์ ์ธํฐ๋ท ์ฃผ์๋ฅผ return
-
Socket
: ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ํต์ ํ๊ธฐ ์ํด์ ๋ฐ๋์ ํ์ํ ํด๋์ค
-
์ฃผ์ ๋ฉ์๋
void claose()
: ์์ผ ๋ซ๊ธฐ
InetAddress getInetAddress()
: ์๋๋ฐฉ์ InetAddress๋ฅผ return
InetAddress getInetStream()
: ์ด ์์ผ๊ณผ ์ฐ๊ฒฐ๋ InputStream์ ์ป๋๋ค.
OutputStream getOutputStream()
: ์ด ์์ผ๊ณผ ์ฐ๊ฒฐ๋ OutputStream์ ์ป์
TCP ์์ฝ ์๋ฒ
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ ์ชฝ์์ ๋ฐ์๋ค์ฌ, ํด๋ผ์ด์ธํธ์๊ฒ ๊ทธ๋๋ก ๋ค์ ๋ณด๋ด์ฃผ๋ ๊ฒ์ ์๋ฏธ
TCP ์์ฝ ํด๋ผ์ด์ธํธ
โ๏ธ์์ฝ ์๋ฒ์ ์์ฝ ํด๋ผ์ด์ธํธ์์์ ์ค์ํ ๋ฌธ์ ์ ์ ์๋ฒ๊ฐ ๋จ ํ๋์ ํด๋ผ์ด์ธํธ ์ ์๋ง์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
accept()๋ฉ์๋๋ก ๋๊ธฐ -> ํด๋ผ์ด์ธํธ์ ์ ์ ์์ฒญ -> ํด๋ผ์ด์ธํธ์ ํต์ ํ ์ ์๋ ์์ผ return -> ๋ค์ accept()ํ์ง ์๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ์๋ฒ๋ค์ ๋์์ ์ฌ๋ฌ ๋ช
์ ์ฌ์ฉ์๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ ๋ฉํฐ Thread๋ฅผ ์ด์ฉํ์ฌ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ์ ์์ ์ง์ํด์ผํ๋ค.
UDP ํ๋ก๊ทธ๋๋ฐ
- UDP๋ ๋ฐ์ดํฐ๊ทธ๋จ ํต์ ํ๋กํ ์ฝ์ด๋ผ๊ณ ๋ ํ๋ค.
- ๋น์ฐ๊ฒฐ์ฑ(Connectionless) ํ๋กํ ์ฝ
- ํจํท์ ๋ณด๋ผ ๋๋ง๋ค ์์ ์ธก ์ฃผ์์ ๋ก์ปฌ ํ์ผ ์ค๋ช
์๋ฅผ ํจ๊ป ์ ์กํด์ผํ๋ค. ์ฆ, ์ ์กํด์ผํ ๋ฐ์ดํฐ ์ธ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๊ฐ ํจ๊ป ์ ์ก๋์ด์ผ ํ๋ค.
- ํด๋ผ์ด์ธํธ/์๋ฒ ๋ชจ๋ java.net ํจํค์ง ์์ ์๋ DatagramSocket๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- ํด๋ผ์ด์ธํธ/์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด DatagramPacket๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ผํ๋ค.
- DatagramSocket์ DatagramPacket์ ๋ณด๋ด๊ฑฐ๋ ๋ฐ์ ๋ ๋ชจ๋ ํ์ํ๋ค.
๐UDP๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ 64KB๋ก ์ ํ๋์ด ์๊ณ ์ ๋ขฐ์ฑ์ด ๋จ์ด์ง๋, ์ฐ๊ฒฐ๋์ง ์์ ์ํ๋ก ์ ์ก๋๊ธฐ ๋๋ฌธ์ ์ข ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ผ๋ฏ๋ก ๋ณต์กํ์ง ์๊ณ ๋ถํ๊ฐ ๋ง์ด ์๊ธฐ์ง ์๋ ๊ณณ์ ์ ํฉ
๐TCP๋ ์ฐ๊ฒฐ์ฑ์ผ๋ก ์ธํด ํ ๋ฒ ์ฐ๊ฒฐ์ ๋งบ์ผ๋ฉด ์ฐ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ด ์ ๋ขฐ์ฑ์ด ๋์ง๋ง, ์ฐ๊ฒฐ์ ํ์ํ ์๊ฐ์ด ํ์ํ๋ฏ๋ก ๋ฏธ๋ฆฌ ์ ํด์ง์ง ์์ ๊ธธ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ขฐ์ฑ ์๊ฒ ์ก์์ ํ๊ธฐ ์ํ ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ์ ์๋ง๋ค
UDP ์์ฝ ์๋ฒ๋ฅผ ๊ตฌํํ๋ ์์
- ํน์ ํฌํธ์์ ๋์ํ๋ DatagramSocket ๊ฐ์ฒด ์์ฑ
- ํด๋ผ์ด์ธํธ๊ฐ ์ ์กํ DatagramPacket์ ๋ฐ๊ธฐ ์ํด ๋ด์ฉ์ด ๋น์ด์๋ DatagramPacket ๊ฐ์ฒด๋ฅผ ์์ฑ
- ์์ฑํ DatagramPacket์ ๋งค๊ฐ๋ณ์๋ก DatagramSocket์ด ์ ๊ณตํ๋ receive()๋ฉ์๋ ํธ์ถ
- ํด๋ผ์ด์ธํธ๊ฐ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ ์ฝ์์ ์ถ๋ ฅ
- ํด๋ผ์ด์ธํธ๊ฐ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ์๋ก์ด DatagramPacket์ ์์ฑํ๋ค.
- ์์ฑํ DatagramPacket์ ๋งค๊ฐ๋ณ์๋ก DatagramSocket์ด ์ ๊ณตํ๋ send()๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํด๋ผ์ด์ธํธ๋ก ์ ์ก
- DatagramSocket์ close()๋ฅผ ํธ์ถํ์ฌ ์ฐ๊ฒฐ ํด์
UDP ์์ฝ ํด๋ผ์ด์ธํธ
- ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด์ DatagramSocket์ ์์ฑ
-
์๋ฒ์ ๋ค๋ฅด๊ฒ, ๋์ํ๋ ํฌํธ๋ ์ง์ ํ์ง ์๋๋ค.
- โต ํด๋ผ์ด์ธํธ๋ ์ ์กํ DatagramPacket์ ์๋ฒ์ DatagramSocket์ ๋์ ํฌํธ, ์๋ฒ์ IP, ์ ์กํ ๋ฐ์ดํฐ, ์ ์กํ ๋ฐ์ดํฐ์ ๊ธธ์ด ๋ฑ์ ์ง์ ํ ํ, send()๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์ ์กํ๊ธฐ ๋๋ฌธ์ด๋ค.
-
UDP ์์ฝ ํด๋ผ์ด์ธํธ ๊ตฌํ ์์
- DatagramSocket ๊ฐ์ฒด ์์ฑ
- ์ ์กํ ๋ฐ์ดํฐ, ๋ฐ์ดํฐ ๊ธธ์ด, ์๋ฒ IP, ์๋ฒ ํฌํธ ๋ฒํธ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ํ์ฌ DatagramPacket ๊ฐ์ฒด๋ฅผ ์์ฑ
- ์์ฑํ DatagramPacket์ ๋งค๊ฐ๋ณ์๋ก ํ์ฌ DatagramSocket์ด ์ ๊ณตํ๋ send()๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์๋ฒ ์ชฝ์ DatagramPacket()์ ์ ์ก
- ์๋ฒ์์ ์ ์กํ๋ ๋ฉ์ธ์ง๋ฅผ ๋ฐ๊ธฐ ์ํด ๋ด์ฉ์ด ๋น์ด์๋ ์์ ์ฉ DatagramPacket ๊ฐ์ฒด๋ฅผ ์์ฑ
- ์์ฑํ DatagramPacket์ ๋งค๊ฐ๋ณ์๋ก ํด DatagramSocket์ด ์ ๊ณตํ๋ receive()๋ฉ์๋๋ฅผ ํธ์ถ
- ์๋ฒ์์ ์์ ํ ๋ฉ์ธ์ง๋ฅผ ์ฝ์์ ์ถ๋ ฅ
- DatagramSocket์ close() ํธ์ถํ์ฌ ์ฐ๊ฒฐ ํด์