๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ - Socket

๋ฐ˜์‘ํ˜•

๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ธฐ ์ „์—๋Š” Socket ์ด๋ผ๋Š” ๊ฐœ๋…์„ ์ดํ•ดํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, ๋Œ€๋ถ€๋ถ„ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋žจ์—๋Š” ๋ฐ”๋กœ ์ด ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์„ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ง€์š”. ์˜ค๋Š˜์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๋‹ค๊ฐ€๊ฐ€๋Š” ๋„คํŠธ์›Œํฌ ์ฒซ ๊ฑธ์Œ์ธ ์†Œ์ผ“์— ๋Œ€ํ•ด ์‹œ์ž‘ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.


Network Socket

์†Œ์ผ“์ด๋ผ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ์ด์ œ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด๋ผ๋ฉด, ํ•œ ๋ฒˆ ์ฏค์€ ๋“ค์–ด๋ดค์„ ๋ฒ•ํ•œ ๋‹จ์–ด์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ์—์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ์†Œ์ผ“์€ ๋ณดํ†ต ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์š”์ฆ˜์—๋Š” ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•œ ํ†ต์‹ ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐ๋„ท ์†Œ์ผ“์ด๋ผ๊ณ ๋„ ์ด์•ผ๊ธฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.


ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ”๋กœ ์ด ์†Œ์ผ“์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. BSD UNIX ์šด์˜์ฒด์ œ์—์„œ ์ฒ˜์Œ ์†Œ๊ฐœ ๋œ ์†Œ์ผ“์˜ ์‹œ์ž‘์€ BSD Unix Socket์ด๋ฉฐ ํ˜„์žฌ๋Š” Unix Socket, Windows Socket์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜์˜ ์ฐจ์ด์ ์€ BSD Unix ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์†Œ์ผ“์ด๋ƒ, Windows ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์†Œ์ผ“์ด๋ƒ์˜ ์ฐจ์ด ์ž…๋‹ˆ๋‹ค. (๋ฌผ๋ก  ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๋„ ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.)


๋‹ค์‹œ ์–˜๊ธฐํ•˜์ž๋ฉด, ํ”„๋กœ๊ทธ๋žจ์ด ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์ž‘์„ฑ๋œ ํ†ต์‹ ์˜ ์ ‘์†์ ์ด๋ผ๊ณ ๋„ ํ•  ์ˆ˜ ์žˆ์ง€์š”. ๋„คํŠธ์›Œํฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฐ”๋กœ ์ด ์†Œ์ผ“์„ ์ด์šฉํ•ด์„œ ๋„คํŠธ์›Œํฌ๋ง(์ธํ„ฐ๋„ท)์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜/๋ฐœ์‹ ํ•ฉ๋‹ˆ๋‹ค.


์†Œ์ผ“์ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์œ„ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด๋ดค์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ํ†ต์‹ ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ ๋งจ ์œ„์ธต์—์„œ ์‹œ์ž‘๋˜์–ด ์•„๋žซ์ชฝ์œผ๋กœ ๊ฐ„๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋จผ์ € ์†Œ์ผ“์€ TCP, UDP์˜ ์ „๋‹ฌ ๊ณ„์ธต์„ ์ด์šฉํ•˜๋Š” API ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ฒŒ ๋˜๋ฉด, ์ „๋‹ฌ ๊ณ„์ธต์œผ๋กœ ์ „์†ก๋˜์–ด ๋ฌผ๋ฆฌ์ธต์œผ๋กœ ๊ฐ€์„œ ์ „์†ก๋ผ ๋„คํŠธ์›Œํฌ์ƒ์— ๋Œ์•„๋‹ค๋‹ˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


Socket์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์„ค๋ช… ๋“œ๋ ค๋ดค์Šต๋‹ˆ๋‹ค. ์ด์ œ Socket์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํ˜•ํƒœ๊ฐ€ ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. Socket์€ Unix ๊ณ„์—ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” BSD Socket๊ณผ Windows ๊ณ„์—ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Windows Socket์ด ์žˆ์Šต๋‹ˆ๋‹ค.


๋”ฐ๋ผ์„œ ์ œ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” Linux์—์„œ ํ•˜๋Š” Socket Programming๊ณผ Windows์—์„œ ํ•˜๋Š” Socket Programming ์ด๋ ‡๊ฒŒ 2๊ฐœ์˜ ํฌ์ŠคํŠธ๋ฅผ ๊ฐ๊ฐ ์ž‘์„ฑํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ๋‘ ๊ฐœ์˜ ์†Œ์ผ“์€ ํ˜•ํƒœ๊ฐ€ ์•ฝ๊ฐ„ ๋‹ค๋ฅด์ง€๋งŒ, ๋‘˜์ด ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, Linux์˜ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์ด Windows Socket์œผ๋กœ ์˜ฌ ๊ฒฝ์šฐ, ํ†ต์‹ ์ด ์•ˆ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ์šด์˜์ฒด์ œ ๊ฐ„ Socket ์‚ฌ์šฉ๋ฒ•์ด ๋‹ค๋ฅด๋ฏ€๋กœ, ์•„๋ž˜ 2๊ฐœ์˜ ๋ฒ„ํŠผ์„ ํ†ตํ•ด์„œ ๊ฐ์ž ์›ํ•˜๋Š” ์šด์˜์ฒด์ œ์—์„œ Socket Programming ์„ ์ง์ ‘ ํ•ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


Let's Coding !


BSD Socket Programming


Windows Socket Programming


๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments