์˜์–ดํ”„๋ž‘์Šค์–ด์ŠคํŽ˜์ธ์–ด

Ad


์˜จ์›์Šค ํŒŒ๋น„์ฝ˜

filan - ํด๋ผ์šฐ๋“œ์—์„œ์˜ ์˜จ๋ผ์ธ

Ubuntu Online, Fedora Online, Windows ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋˜๋Š” MAC OS ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ํ†ตํ•ด OnWorks ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด์—์„œ filan์„ ์‹คํ–‰ํ•˜์„ธ์š”.

์ด๊ฒƒ์€ Ubuntu Online, Fedora Online, Windows ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋˜๋Š” MAC OS ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋ฌด๋ฃŒ ์˜จ๋ผ์ธ ์›Œํฌ์Šคํ…Œ์ด์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OnWorks ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น filan์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ:

์ด๋ฆ„


socat - ๋‹ค๋ชฉ์  ๋ฆด๋ ˆ์ด(SOcket CAT)

๊ฐœ์š”


์†Œ์บฃ [์˜ต์…˜]
์†Œ์บฃ -V
์†Œ์บฃ -h[h[h]] | -?[?[?]]
ํ•„๋ž€
ํ”„๋กœ์นธ

๊ธฐ์ˆ 


์†Œ์บฃ ๋‘ ๊ฐœ์˜ ์–‘๋ฐฉํ–ฅ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ์„ค์ •ํ•˜๊ณ 
๊ทธ๋“ค ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ŠคํŠธ๋ฆผ์€ ๋Œ€๊ทœ๋ชจ ์„ธํŠธ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์‹ฑํฌ ๋ฐ ์†Œ์Šค(์ฃผ์†Œ ์œ ํ˜• ์ฐธ์กฐ), ๊ทธ๋ฆฌ๊ณ  ๋งŽ์€ ์ฃผ์†Œ
์˜ต์…˜์ด ์ŠคํŠธ๋ฆผ์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ socat๋Š” ๋‹ค์–‘ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋“ฑ ํ™œ์„ฑ ํŒŒ์ผ ์„ค๋ช…์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ stdout์œผ๋กœ ์ธ์‡„ํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ
๋””๋ฒ„๊น…์„ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ์†Œ์บฃ์ด์ง€๋งŒ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ
-h ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์นธ ํ”„๋กœ์„ธ์Šค ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ stdout์œผ๋กœ ์ธ์‡„ํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค
์ผ๋ถ€ UNIX ํ”„๋กœ์„ธ์Šค ์†์„ฑ์„ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ  ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์บฃ,
ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด ์†Œ์บฃ ์ธ์Šคํ„ด์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ XNUMX๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

. INIT ๋‹จ๊ณ„์—์„œ๋Š” ๋ช…๋ น์ค„ ์˜ต์…˜์ด ๊ตฌ๋ฌธ ๋ถ„์„๋˜๊ณ  ๋กœ๊น…์ด ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

์‹œ ์—ด ์ˆ˜ ๋‹จ๊ณ„, ์†Œ์บฃ ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๋ฅผ ์—ฐ ๋‹ค์Œ ๋‘ ๋ฒˆ์งธ ์ฃผ์†Œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๋‹จ๊ณ„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠนํžˆ ์–‘๋ง๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ์ฃผ์†Œ ์œ ํ˜•์˜ ๊ฒฝ์šฐ
๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์—ฐ๊ฒฐ ์š”์ฒญ ๋˜๋Š” ์ธ์ฆ ๋Œ€ํ™” ์ƒ์ž๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

. ์ด์ „ ๋‹จ๊ณ„, ์†Œ์บฃ ๋‹ค์Œ์„ ํ†ตํ•ด ๋‘ ์ŠคํŠธ๋ฆผ์˜ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ํŒŒ์ผ ์„ค๋ช…์ž๋ฅผ ๋ชจ๋‘ ๊ฐ์‹œํ•ฉ๋‹ˆ๋‹ค.
select() ๋ฐ ํ•œ์ชฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ณผ ๋ฐ˜๋Œ€ํŽธ์— ์“ธ ์ˆ˜๋„ ์žˆ๊ณ ,
socat๋Š” ์ด๋ฅผ ์ฝ๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฐœํ–‰ ๋ฌธ์ž ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์Œ์— ์”๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์˜ ์“ฐ๊ธฐ ํŒŒ์ผ ์„ค๋ช…์ž๋ฅผ ์ฐพ์€ ๋‹ค์Œ ๊ณ„์†ํ•ด์„œ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
์–‘๋ฐฉํ–ฅ.

์ŠคํŠธ๋ฆผ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹ค์ œ๋กœ EOF์— ๋„๋‹ฌํ•˜๋ฉด ํ์‡„ ๋‹จ๊ณ„๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์†Œ์บฃ ์ „์†ก
๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ EOF ์กฐ๊ฑด, ์ฆ‰ ์“ฐ๊ธฐ ์ŠคํŠธ๋ฆผ๋งŒ ์ข…๋ฃŒํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ •์˜๋œ ์‹œ๊ฐ„ ๋™์•ˆ ์†Œ์บฃ ๊ณ„์† ์ด์ฒด ์ค‘
๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€๋งŒ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์ฑ„๋„์„ ๋‹ซ๊ณ  ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜


์†Œ์บฃ ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์„ ์ˆ˜์ •ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ช…๋ น์ค„ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค
์ฃผ์†Œ์˜ ์ผ๋ถ€๋กœ ์‚ฌ์šฉ๋˜๋Š” ์†Œ์œ„ ์ฃผ์†Œ ์˜ต์…˜๊ณผ๋Š” ์•„๋ฌด ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
๋ช…์„ธ์„œ.

-V ๋ฒ„์ „ ๋ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ ์ •๋ณด๋ฅผ stdout์œผ๋กœ ์ธ์‡„ํ•˜๊ณ  ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

-h | -?
๋ช…๋ น์ค„ ์˜ต์…˜๊ณผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋„์›€๋ง ํ…์ŠคํŠธ๋ฅผ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.
์œ ํ˜•์„ ์ž…๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

- ํ | - ??
-h์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ฃผ์†Œ ์˜ต์…˜์˜ ์งง์€ ์ด๋ฆ„ ๋ชฉ๋ก์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€
์˜ต์…˜์€ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฏ€๋กœ ์ด ์ถœ๋ ฅ์€
ํŠน๋ณ„ํ•œ ๊ตฌํ˜„.

-์•„์•„์•„ | - ???
-hh์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ฃผ์†Œ ์˜ต์…˜ ์ด๋ฆ„ ๋ชฉ๋ก์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

-d ์ด ์˜ต์…˜์ด ์—†์œผ๋ฉด ์น˜๋ช…์  ๋ฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋งŒ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ ์šฉ
์˜ต์…˜์€ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋„ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง„๋‹จ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

-d -d ์น˜๋ช…์ , ์˜ค๋ฅ˜, ๊ฒฝ๊ณ  ๋ฐ ์•Œ๋ฆผ ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

-d -d -d
์น˜๋ช…์ , ์˜ค๋ฅ˜, ๊ฒฝ๊ณ , ์•Œ๋ฆผ ๋ฐ ์ •๋ณด ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

-d -d -d -d
์น˜๋ช…์ , ์˜ค๋ฅ˜, ๊ฒฝ๊ณ , ์•Œ๋ฆผ, ์ •๋ณด ๋ฐ ๋””๋ฒ„๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

-D ์ „์†ก ๋‹จ๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํŒŒ์ผ ์„ค๋ช…์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

-ly[ ]
stderr ๋Œ€์‹  syslog์— ๋ฉ”์‹œ์ง€๋ฅผ ์”๋‹ˆ๋‹ค. -d ์˜ต์…˜์œผ๋กœ ์ •์˜๋œ ์‹ฌ๊ฐ๋„.
์˜ต์…˜์œผ๋กœ , syslog ์œ ํ˜•์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ "daemon"์ž…๋‹ˆ๋‹ค.
ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด ์˜ต์…˜์„ ๋”ฐ๋ฅด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-lf
๋‹ค์Œ์— ๋ฉ”์‹œ์ง€๋ฅผ ์”๋‹ˆ๋‹ค. stderr ๋Œ€์‹  [ํŒŒ์ผ ์ด๋ฆ„]. ์ผ๋ถ€ ์ œXNUMX์ž
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํŠนํžˆ libwrap์€ ์ด ์˜ต์…˜์„ ๋”ฐ๋ฅด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-ls stderr์— ๋ฉ”์‹œ์ง€๋ฅผ ์”๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’). ์ผ๋ถ€ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š”
์ด ์˜ต์…˜์„ ๋”ฐ๋ฅด์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํŠนํžˆ libwrap์€ syslog์—๋งŒ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

-lp
์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์— ์ธ์‡„๋˜๊ณ  ๊ตฌ์„ฑ์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ด๋ฆ„.

-๋ฃจ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์˜ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋งˆ์ดํฌ๋กœ์ดˆ ๋‹จ์œ„๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜์ง€ ์•Š์Œ
syslog์— ๋กœ๊ทธ์ธํ•  ๋•Œ.

-lm[ ]
ํ˜ผํ•ฉ ๋กœ๊ทธ ๋ชจ๋“œ. ์‹œ์ž‘ํ•˜๋Š” ๋™์•ˆ ๋ฉ”์‹œ์ง€๋Š” stderr์— ์ธ์‡„๋ฉ๋‹ˆ๋‹ค. ์–ธ์ œ ์†Œ์บฃ ์‹œ์ž‘
์ „์†ก ๋‹จ๊ณ„ ๋ฃจํ”„ ๋˜๋Š” ๋ฐ๋ชฌ ๋ชจ๋“œ(์ฆ‰, ๋ชจ๋“  ์ŠคํŠธ๋ฆผ์„ ์—ฐ ํ›„ ๋ฐ
๋ฐ์ดํ„ฐ ์ „์†ก์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ํฌํฌ ์˜ต์…˜์ด ์žˆ๋Š” ์ฒญ์ทจ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ
๋จผ์ € ํ†ตํ™” ์ˆ˜๋ฝ), ๋กœ๊น…์„ syslog๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์œผ๋กœ ,
syslog ์œ ํ˜•์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ "daemon"์ž…๋‹ˆ๋‹ค.

-ใ…‹ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์— ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ HOSTNAME์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜
HOSTNAME์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ uname()์œผ๋กœ ๊ฒ€์ƒ‰๋œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

-v ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ ์ŠคํŠธ๋ฆผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ stderr์—๋„ ์”๋‹ˆ๋‹ค.
์ถœ๋ ฅ ํ˜•์‹์€ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์ผ๋ถ€ ๋ณ€ํ™˜๋œ ํ…์ŠคํŠธ์ด๋ฉฐ ์ ‘๋‘์‚ฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
"> " ๋˜๋Š” "< "๋Š” ํ๋ฆ„ ๋ฐฉํ–ฅ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

-x ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ ์ŠคํŠธ๋ฆผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ stderr์—๋„ ์”๋‹ˆ๋‹ค.
์ถœ๋ ฅ ํ˜•์‹์€ XNUMX์ง„์ˆ˜์ด๋ฉฐ ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๋Š” "> " ๋˜๋Š” "< " ์ ‘๋‘์‚ฌ๊ฐ€ ๋ถ™์Šต๋‹ˆ๋‹ค.
์ง€๋„. -v ์™€ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-๋น„
๋ฐ์ดํ„ฐ ์ „์†ก ๋ธ”๋ก์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์‚ฌ์ด์ฆˆ_t]. ๋งŽ์œผ๋ฉด ๋ฐ”์ดํŠธ๊ฐ€ ์ „์†ก๋ฉ๋‹ˆ๋‹ค
๋‹จ๊ณ„๋งˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 8192๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค.

-s ๊ธฐ๋ณธ์ ์œผ๋กœ, ์†Œ์บฃ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
์ผ๋ถ€ ์˜ต์…˜์„ ์ ์šฉํ•  ์ˆ˜ ์—†์„ ๋•Œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์†Œ์บฃ ์—‰์„ฑํ•˜๋‹ค
์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ณ„์†ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ socat๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
์น˜๋ช…์ ์ด๋ฉฐ ๋ณด์•ˆ ๊ฒ€์‚ฌ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์—ฐ๊ฒฐ ์‹œ๋„๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

-ํ‹ฐ
ํ•œ ์ฑ„๋„์ด EOF์— ๋„๋‹ฌํ•˜๋ฉด ๋‹ค๋ฅธ ์ฑ„๋„์˜ ์“ฐ๊ธฐ ๋ถ€๋ถ„์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ, ์†Œ์บฃ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค [timeval]์ดˆ ์ „์— ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 0.5์ž…๋‹ˆ๋‹ค.
์ดˆ. ์ด ์‹œ๊ฐ„ ์ดˆ๊ณผ๋Š” ์“ฐ๊ธฐ ๋ฐ ์ฝ๊ธฐ ๋ถ€๋ถ„์ด ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
๋…๋ฆฝ์ ์œผ๋กœ ํ์‡„๋จ. ์‹œ๊ฐ„ ์ดˆ๊ณผ ๊ฐ„๊ฒฉ ๋™์•ˆ ์ฝ๊ธฐ ๋ถ€๋ถ„์ด EOF๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ,
socat์€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

-ํ‹ฐ
์ด ๋น„ํ™œ์„ฑ ์‹œ๊ฐ„ ์ดˆ๊ณผ: socat๊ฐ€ ์ด๋ฏธ ์ „์†ก ๋ฃจํ”„์— ์žˆ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ฒฝ์šฐ
์— ๋Œ€ํ•œ ์ผ์ด ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค [timeval]์ดˆ(๋ฐ์ดํ„ฐ ๋„์ฐฉ ์—†์Œ, ์ธํ„ฐ๋ŸฝํŠธ ์—†์Œ)
๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค...) ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. UDP์™€ ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
EOF๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

-u ๋‹จ๋ฐฉํ–ฅ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๋Š” ์ฝ๊ธฐ์—๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ,
๋‘ ๋ฒˆ์งธ ์ฃผ์†Œ๋Š” ์“ฐ๊ธฐ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(์˜ˆ).

-U ์—ญ๋ฐฉํ–ฅ์—์„œ๋Š” ๋‹จ๋ฐฉํ–ฅ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๋Š” ๋‹ค์Œ ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์“ฐ๊ธฐ, ๋‘ ๋ฒˆ์งธ ์ฃผ์†Œ๋Š” ์ฝ๊ธฐ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

-g ์ฃผ์†Œ ์˜ต์…˜์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋™์•ˆ ํ•ด๋‹น ์˜ต์…˜์ด ๋‹ค์Œ์—์„œ ์œ ์šฉํ•˜๋‹ค๊ณ  ๊ฐ„์ฃผ๋˜๋Š”์ง€ ํ™•์ธํ•˜์ง€ ๋งˆ์„ธ์š”.
์ฃผ์–ด์ง„ ์ฃผ์†Œ ํ™˜๊ฒฝ. ์˜ˆ๋ฅผ ๋“ค์–ด ์žฅ์น˜๋ฅผ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
์ง๋ ฌ ์žฅ์น˜์— ๋Œ€ํ•œ ์†Œ์ผ“ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

-์—˜
์ž ๊ธˆ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. lockfile์ด ์—†์œผ๋ฉด ์ƒ์„ฑํ•˜๊ณ 
๊ณ„์†ํ•ด์„œ ์ข…๋ฃŒ ์‹œ ์ž ๊ธˆ ํŒŒ์ผ์˜ ๋งํฌ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

-W
์ž ๊ธˆ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ์‚ฌ๋ผ์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ž ๊ธˆํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ,
๊ทธ๊ฒƒ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ณ„์†ํ•ด์„œ ์ข…๋ฃŒ ์‹œ ์ž ๊ธˆ ํŒŒ์ผ์˜ ๋งํฌ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

-4 ์ฃผ์†Œ๊ฐ€ ์•”์‹œ์  ๋˜๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ IP ๋ฒ„์ „ 4๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
๋ฒ„์ „; ์ด๊ฒƒ์ด ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค.

-6 ์ฃผ์†Œ๊ฐ€ ์•”์‹œ์  ๋˜๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ IP ๋ฒ„์ „ 6๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
๋ฒ„์ „.

์ฃผ์†Œ ์ŠคํŽ™


์ฃผ์†Œ ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์†Œ์บฃ ์ง€์นจ๊ณผ
๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค.

์ฃผ์†Œ ์‚ฌ์–‘์€ ์ผ๋ฐ˜์ ์œผ๋กœ XNUMX๊ฐœ ์ด์ƒ์˜ ์ฃผ์†Œ ์œ ํ˜• ํ‚ค์›Œ๋“œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
ํ‚ค์›Œ๋“œ์™€ ์„œ๋กœ ':'๋กœ ๊ตฌ๋ถ„๋œ ํ•„์ˆ˜ ์ฃผ์†Œ ๋งค๊ฐœ๋ณ€์ˆ˜
XNUMX๊ฐœ ์ด์ƒ์˜ ์ฃผ์†Œ ์˜ต์…˜์€ ','๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ๋Š” ์ฃผ์†Œ ์œ ํ˜•(์˜ˆ: TCP4, OPEN, EXEC)์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ‚ค์›Œ๋“œ์˜ ๊ฒฝ์šฐ
๋™์˜์–ด๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค(STDIO์˜ ๊ฒฝ์šฐ '-', TCP4์˜ ๊ฒฝ์šฐ TCP). ํ‚ค์›Œ๋“œ๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€์— ๋Œ€ํ•œ
ํŠน์ˆ˜ ์ฃผ์†Œ ์œ ํ˜•์ธ ๊ฒฝ์šฐ ํ‚ค์›Œ๋“œ๋Š” ์ƒ๋žต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. a๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์†Œ ์ง€์ •
์ˆซ์ž๋Š” FD(์›์‹œ ํŒŒ์ผ ์„ค๋ช…์ž) ์ฃผ์†Œ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์•ž์— '/'๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
๋จผ์ € ':' ๋˜๋Š” ',', GOPEN(์ผ๋ฐ˜ ํŒŒ์ผ ์—ด๊ธฐ)์ด ๊ฐ€์ •๋ฉ๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ์ฃผ์†Œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆ˜์™€ ์œ ํ˜•์€ ์ฃผ์†Œ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ: TCP4
์„œ๋ฒ„ ์‚ฌ์–‘(์ด๋ฆ„ ๋˜๋Š” ์ฃผ์†Œ)๊ณผ ํฌํŠธ ์‚ฌ์–‘(๋ฒˆํ˜ธ ๋˜๋Š”
์„œ๋น„์Šค ์ด๋ฆ„).

๊ฐ ์ฃผ์†Œ์—๋Š” XNUMX๊ฐœ ์ด์ƒ์˜ ์ฃผ์†Œ ์˜ต์…˜์ด ์ œ๊ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ฃผ์†Œ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค
๋ช‡๋ช‡ ๋ฐฉ๋ฒ•๋“ค. ์˜ต์…˜์€ ์˜ต์…˜ ํ‚ค์›Œ๋“œ ๋˜๋Š” ์˜ต์…˜ ํ‚ค์›Œ๋“œ์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
'='๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ์˜ต์…˜ ํ‚ค์›Œ๋“œ๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์„ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด
์ฃผ์†Œ ์œ ํ˜•์— ์œ ์šฉํ•˜๋ฉฐ ๊ฐ ์˜ต์…˜์€ ํ•˜๋‚˜์˜ ์˜ต์…˜ ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ
์ฃผ์†Œ ์œ ํ˜•์—๋Š” ํ—ˆ์šฉ๋˜๋Š” ์˜ต์…˜ ๊ทธ๋ฃน ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์— ์†ํ•˜๋Š” ์˜ต์…˜๋งŒ
์ด๋Ÿฌํ•œ ์ฃผ์†Œ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(-g ์˜ต์…˜ ์ œ์™ธ).

์œ„์˜ ์Šคํ‚ค๋งˆ๋ฅผ ๋”ฐ๋ฅด๋Š” ์ฃผ์†Œ ์‚ฌ์–‘์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ์ฃผ์†Œ
๋ช…์„ธ์„œ. ๋‘ ๊ฐœ์˜ ๋‹จ์ผ ์ฃผ์†Œ๋ฅผ "!!"๋กœ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜•์„ฑํ•˜๋‹ค ๋“€์–ผ ์œ ํ˜•
ํ•œ ์ฑ„๋„์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์†Œ์บฃ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ์šฉ
๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•œ ๋‘ ๋ฒˆ์งธ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ์˜ต์…˜์„ ํ•œ ๋ฒˆ๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.
๋‘ ๋‹จ์ผ ์ฃผ์†Œ ๋ชจ๋‘์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ์†Œ๋Š” ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋ชจ๋“œ๋กœ ์—ด๋ฆฝ๋‹ˆ๋‹ค. ์ฃผ์†Œ๊ฐ€ ์ด์ค‘ ์ฃผ์†Œ์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ
์ฃผ์†Œ ์ง€์ • ๋˜๋Š” -u ๋˜๋Š” -U ์˜ต์…˜์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์ฃผ์†Œ๋Š” ๋‹ค์Œ ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฝ๊ธฐ ์œ„ํ•ด์„œ๋“ , ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๋“ . ์ผ๋ถ€ ์ฃผ์†Œ ์œ ํ˜•์—์„œ๋Š” ์ด๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

socat ๋ฒ„์ „ 1.5.0 ์ด์ƒ์—์„œ๋Š” ์–ดํœ˜ ๋ถ„์„์ด ๋”ฐ์˜ดํ‘œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
์˜๋ฏธ ์žˆ๊ฒŒ ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์ด์Šค์ผ€์ดํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ
๋ฌธ์ž ( { [ ' ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ํ•ด๋‹น ๋‹ซ๋Š” ๋ฌธ์ž - ) } ] ' - ๊ฐ€ ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค.
์„ ์œ„ํ•œ; ์ค‘์ฒฉ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ๋‚ด์—์„œ ํŠน์ˆ˜ ๋ฌธ์ž ๋ฐ
๋ฌธ์ž์—ด : , !! ํŠน๋ณ„ํžˆ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ž์™€ โ€‹โ€‹๋ฌธ์ž์—ด์€ ๋ชจ๋‘ ์ด์Šค์ผ€์ดํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
\ ๋˜๋Š” "" ์•ˆ์—

์ฃผ์†Œ ํƒ€์ž…


์ด ์„น์…˜์—์„œ๋Š” ํ‚ค์›Œ๋“œ, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ ์œ ํ˜•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
์˜๋ฏธ๋ก .

๋งŒ๋“ค๋‹ค:
์—ด๋ฆผ creat()๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์“ฐ๊ธฐ๋ฅผ ์œ„ํ•ด ํŒŒ์ผ ์„ค๋ช…์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ
์ฃผ์†Œ ์œ ํ˜•์—๋Š” ์“ฐ๊ธฐ ์ „์šฉ ์ปจํ…์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด creat๋กœ ์—ด๋ฆฐ ํŒŒ์ผ์€ ๊ทธ๋Ÿด ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
O_LARGEFILE๊ณผ ๊ฐ™์€ ํ”Œ๋ž˜๊ทธ๋Š” ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ OPEN์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
์ƒ์„ฑ, ์ƒ์„ฑ.
์œ ํšจํ•œ ๊ธฐ์กด ๊ฒฝ๋กœ์ด๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ๋ช…๋ช…๋œ
ํŒŒ์ดํ”„, creat()๊ฐ€ ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ์†Œ์ผ“์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,REG,NAMED
์œ ์šฉํ•œ ์˜ต์…˜: ๋ชจ๋“œ, ์‚ฌ์šฉ์ž, ๊ทธ๋ฃน, ์—ฐ๊ฒฐ ํ•ด์ œ-์ดˆ๊ธฐ, ์—ฐ๊ฒฐ ํ•ด์ œ-๋Šฆ๊ฒŒ, ์ถ”๊ฐ€
์ฐธ์กฐ: OPEN, GOPEN

์‹คํ–‰:
์ƒ์œ„ ํ”„๋กœ์„ธ์Šค์™€์˜ ํ†ต์‹ ์„ ์„ค์ •ํ•˜๋Š” ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌํฌํ•˜๊ณ 
execvp() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ํ”„๋กœ๊ทธ๋žจ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๋ช…๋ น์ด๋‹ค
๋‹จ์ผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์ธ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„์— '/'๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ
๋งˆ์ง€๋ง‰ '/' ์ดํ›„ ๋ถ€๋ถ„์€ ARGV[0]์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„์ด ์นœ์ฒ™์ธ ๊ฒฝ์šฐ
$PATH๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๊ธฐ ์œ„ํ•œ execvp() ์˜๋ฏธ ์ฒด๊ณ„๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ›„์—
์„ฑ๊ณต์ ์ธ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘, ์†Œ์บฃ ํ”„๋กœ์„ธ์Šค์˜ stdin์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ๋‹ค์Œ์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ์†Œ์ผ“์Œ()์— ์˜ํ•ด ์ƒ์„ฑ๋œ UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.
(์˜ˆ)
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,EXEC,FORK,TERMIOS
์œ ์šฉํ•œ ์˜ต์…˜: path, fdin, fdout, chroot, su, su-d, nofork, pty, stderr, ctty,
setid, ํŒŒ์ดํ”„, ๋กœ๊ทธ์ธ, sigint, sigquit
์ฐธ์กฐ: ์‹œ์Šคํ…œ

FD:
ํŒŒ์ผ ์„ค๋ช…์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. . ์ด๋ฏธ ์œ ํšจํ•œ UN*X ํŒŒ์ผ๋กœ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ์ˆ ์ž.
์˜ต์…˜ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์ฐธ์กฐ: STDIO, STDIN, STDOUT, STDERR

๊ณ ํŽœ:
(์ผ๋ฐ˜ ์—ด๊ธฐ) ์ด ์ฃผ์†Œ ์œ ํ˜•์€ ๋‹ค์Œ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์„ ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
์œ ์šฉํ•˜๊ฒŒ ๋””๋ ‰ํ† ๋ฆฌ. ์ƒ๋Œ€ ๊ฒฝ๋กœ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์ ˆ๋Œ€ ๊ฒฝ๋กœ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด๋ฏธ
์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์œ ํ˜•์ด ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์˜ ๊ฒฝ์šฐ, ์†Œ์บฃ ์—ฐ๊ฒฐํ•˜๋‹ค; ๋งŒ์•ฝ์—
์—ฐ๊ฒฐ ์‹คํŒจ, ์†Œ์บฃ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์†Œ์ผ“์„ ๊ฐ€์ •ํ•˜๊ณ  sendto() ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ
ํ•ญ๋ชฉ์€ ์†Œ์ผ“์ด ์•„๋‹™๋‹ˆ๋‹ค. ์†Œ์บฃ O_APPEND ํ”Œ๋ž˜๊ทธ๋ฅผ ์ ์šฉํ•˜์—ฌ ์—ฝ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ
์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜ ํŒŒ์ผ๋กœ O_CREAT ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ด๋ฆฝ๋‹ˆ๋‹ค(์˜ˆ).
์˜ต์…˜ ๊ทธ๋ฃน: FD,REG,SOCKET,NAMED,OPEN
์ฐธ์กฐ: OPEN, CREATE, UNIX-CONNECT

IP-๋ณด๋‚ด๊ธฐ: :
์›์‹œ IP ์†Œ์ผ“์„ ์—ฝ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์‚ฌ์–‘์ด๋‚˜ ์˜ต์…˜ pf, IP ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„
๋ฒ„์ „ 4 ๋˜๋Š” 6์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉํ•œ๋‹ค ํŒจํ‚ท์„ ๋ณด๋‚ด๋ ค๋ฉด [IP ์ฃผ์†Œ]
ํ˜ธ์ŠคํŠธ๋กœ๋ถ€ํ„ฐ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ณ , ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ๋กœ๋ถ€ํ„ฐ์˜ ํŒจํ‚ท์€ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ 255
IP ํ—ค๋”๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€์ธ ์›์‹œ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6
์œ ์šฉํ•œ ์˜ต์…˜: pf, ttl
์ฐธ์กฐ: IP4-SENDTO, IP6-SENDTO, IP-RECVFROM, IP-RECV, UDP-SENDTO, UNIX-SENDTO

์ƒํ˜ธ ์ž‘์šฉ:
๋‹ค์Œ์„ ํฌํ•จํ•œ ์›์‹œ ํŒจํ‚ท์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค์— ์—ฐ๊ฒฐ๋œ ๋„คํŠธ์›Œํฌ์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.
๋งํฌ ์ˆ˜์ค€ ๋ฐ์ดํ„ฐ. ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ๋งŒ
๋ฆฌ๋ˆ…์Šค์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET
์œ ์šฉํ•œ ์˜ต์…˜: pf, type
์ฐธ์กฐ: ip-recv

IP4-SENDTO: :
IP-SENDTO์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ•ญ์ƒ IPv4๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4

IP6-SENDTO: :
IP-SENDTO์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ•ญ์ƒ IPv6๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6

IP-๋ฐ์ดํ„ฐ๊ทธ๋žจ: :
ํŠนํžˆ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ์ผ ์ˆ˜ ์žˆ๋Š” ์ง€์ •๋œ ์ฃผ์†Œ๋กœ ๋‚˜๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
๋˜๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์ฃผ์†Œ. ๋กœ์ปฌ ์†Œ์ผ“์— ๋„์ฐฉํ•˜๋Š” ํŒจํ‚ท์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€์ง€ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.
์†Œ์Šค ์ฃผ์†Œ๊ฐ€ RANGE ๋˜๋Š” TCPWRAP ์˜ต์…˜๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด ์ฃผ์†Œ ์œ ํ˜•์€
๋Œ€์นญ ๋˜๋Š” ๋น„๋Œ€์นญ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋˜๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ๊ตฌํ˜„์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์—ฐ๋ฝ.
์˜ต์…˜ ๊ทธ๋ฃน: FD, SOCKET, IP4, IP6, RANGE
์œ ์šฉํ•œ ์˜ต์…˜: ๋ฐ”์ธ๋”ฉ, ๋ฒ”์œ„, tcpwrap, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ, ip-multicast-loop,
ip-๋ฉ€ํ‹ฐ์บ์ŠคํŠธ-ttl, ip-๋ฉ€ํ‹ฐ์บ์ŠคํŠธ-if, ip-์ถ”๊ฐ€-๋ฉค๋ฒ„์‹ญ, ttl, tos, pf
์ฐธ์กฐ: IP4-DATAGRAM, IP6-DATAGRAM, IP-SENDTO, IP-RECVFROM, IP-RECV, UDP-DATAGRAM

IP4-๋ฐ์ดํ„ฐ๊ทธ๋žจ: :
IP-DATAGRAM๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ํ•ญ์ƒ IPv4๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ)
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,RANGE

IP6-๋ฐ์ดํ„ฐ๊ทธ๋žจ: :
IP-DATAGRAM๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ํ•ญ์ƒ IPv6๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. IPv6์€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋ฐฉ์†ก.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6,RANGE

IP-RECVFROM:
๋‹ค์Œ์˜ ์›์‹œ IP ์†Œ์ผ“์„ ์—ฝ๋‹ˆ๋‹ค. . ์˜ต์…˜ pf์— ๋”ฐ๋ผ IP ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 4
๋˜๋Š” 6์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ถˆํŠน์ • ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ํ•˜๋‚˜์˜ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ณ  ํ•˜๋‚˜ ๋˜๋Š”
ํ•ด๋‹น ํ”ผ์–ด์— ๋” ๋งŽ์€ ์‘๋‹ต ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋Š” ํŠนํžˆ ํฌํฌ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ž„์˜์˜ ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ๋„์ฐฉํ•˜๋Š” ๊ฐ ํŒจํ‚ท์ด ์ž์ฒด์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ์˜ต์…˜
ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ UDP ๊ธฐ๋ฐ˜ ์„œ๋ฒ„์™€ ์œ ์‚ฌํ•œ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ntpd ๋˜๋Š” ๋ช…๋ช…๋œ.
๋ณด๋‚ธ ์‚ฌ๋žŒ์ด ์‘๋‹ต ํŒจํ‚ท์„ ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”.
ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹ ์ž IP ์ฃผ์†Œ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
์†Œ์ผ“์„ ๊ตฌ๋ณ„ํ•˜์‹ญ์‹œ์˜ค.
์ด ์ฃผ์†Œ๋Š” IP-SENDTO ์ฃผ์†Œ ํ”ผ์–ด์™€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์œ„ ์ฐธ์กฐ). ํ”„๋กœํ† ์ฝœ 255
IP ํ—ค๋”๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€์ธ ์›์‹œ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,CHILD,RANGE
์œ ์šฉํ•œ ์˜ต์…˜: pf, ํฌํฌ, ๋ฒ”์œ„, ttl, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ
์ฐธ์กฐ: IP4-RECVFROM, IP6-RECVFROM, IP-SENDTO, IP-RECV, UDP-RECVFROM,
UNIX-RECVFROM

IP4-RECV์—์„œ:
IP-RECVFROM๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ•ญ์ƒ IPv4๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,CHILD,RANGE

IP6-RECV์—์„œ:
IP-RECVFROM๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ•ญ์ƒ IPv6๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6,CHILD,RANGE

IP-RECV:
๋‹ค์Œ์˜ ์›์‹œ IP ์†Œ์ผ“์„ ์—ฝ๋‹ˆ๋‹ค. . ์˜ต์…˜ pf์— ๋”ฐ๋ผ IP ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 4
๋˜๋Š” 6์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ถˆํŠน์ • ๋‹ค์ˆ˜์˜ ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ณ  ์ด๋ฅผ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ. ๋‹ต๋ณ€์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด socat IP-SENDTO๋กœ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋™๋ฃŒ์—๊ฒŒ ์—ฐ์„คํ•˜์‹ญ์‹œ์˜ค. ํ”„๋กœํ† ์ฝœ 255๋Š” IP ํ—ค๋”๊ฐ€ ํฌํ•จ๋œ ์›์‹œ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ž๋ฃŒ.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,RANGE
์œ ์šฉํ•œ ์˜ต์…˜: pf, ๋ฒ”์œ„
์ฐธ์กฐ: IP4-RECV, IP6-RECV, IP-SENDTO, IP-RECVFROM, UDP-RECV, UNIX-RECV

IP4-RECV:
IP-RECV์™€ ๋น„์Šทํ•˜์ง€๋งŒ ํ•ญ์ƒ IPv4๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,RANGE

IP6-RECV:
IP-RECV์™€ ๋น„์Šทํ•˜์ง€๋งŒ ํ•ญ์ƒ IPv6๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6,RANGE

์—ด๋ ค ์žˆ๋Š”:
์—ด๋ฆผ open() ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์‚ฌ์šฉ(์˜ˆ์ œ) ์ด ์ž‘์—…์€ ๋‹ค์Œ์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“.
์ฐธ๊ณ : ์ด ์ฃผ์†Œ ์œ ํ˜•์€ ์–‘๋ฐฉํ–ฅ ๋ชจ๋“œ์—์„œ๋Š” ๊ฑฐ์˜ ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,REG,NAMED,OPEN
์œ ์šฉํ•œ ์˜ต์…˜: creat,excl,noatime,nofollow,append,rdonly,wronly,lock,
์ฝ๊ธฐ ๋ฐ”์ดํŠธ, ๋ฌด์‹œ
์ฐธ์กฐ: CREATE, GOPEN, UNIX-CONNECT

OPENSSL: :
SSL ์—ฐ๊ฒฐ ์„ค์ •์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. [TCP ์„œ๋น„์Šค] ์ผœ์ง [IP ์ฃผ์†Œ]
์ฃผ์†Œ ์‚ฌ์–‘, ์ด๋ฆ„ ํ™•์ธ์— ๋”ฐ๋ผ TCP/IP ๋ฒ„์ „ 4 ๋˜๋Š” 6์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜
์˜ต์…˜ pf.
์ฐธ๊ณ : ๋ฒ„์ „ 1.7.2.4๊นŒ์ง€๋Š” ์„œ๋ฒ„ ์ธ์ฆ์„œ์˜ ์œ ํšจ์„ฑ๋งŒ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ ์ธ์ฆ์„œ ์ €์žฅ์†Œ, cafile ๋˜๋Š” capath์™€ ์ผ์น˜ํ•˜์ง€๋งŒ ์ผ์น˜ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
์„œ๋ฒ„์˜ ์ด๋ฆ„์ด๋‚˜ IP ์ฃผ์†Œ. ๋ฒ„์ „ 1.7.3.0๋ถ€ํ„ฐ socat๋Š” ํ”ผ์–ด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์ผ์น˜ ์ฆ๋ช…์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋˜๋Š” ๊ฐ’
openssl-commonname ์˜ต์…˜. Socat์€ ์ด๋ฅผ ์ธ์ฆ์„œ์™€ ์ผ์น˜์‹œํ‚ค๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
subject commonName ๋ฐ ์ธ์ฆ ํ™•์žฅ subjectAltName DNS ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
์ธ์ฆ์„œ์˜ ์™€์ผ๋“œ์นด๋“œ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,OPENSSL,RETRY
์œ ์šฉํ•œ ์˜ต์…˜: ์•”ํ˜ธ, ๋ฐฉ๋ฒ•, ํ™•์ธ, ์ผ๋ฐ˜ ์ด๋ฆ„ cafile, capath, ์ธ์ฆ์„œ,
ํ‚ค, ์••์ถ•, ๋ฐ”์ธ๋“œ, pf, ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ œํ•œ, ์†Œ์Šค ํฌํŠธ, ์žฌ์‹œ๋„
์ฐธ์กฐ: OPENSSL-LISTEN, TCP

์—ด๊ธฐSL-๋“ฃ๊ธฐ:
TCP์—์„œ ์ˆ˜์‹  [TCP ์„œ๋น„์Šค]. IP ๋ฒ„์ „์€ 4 ๋˜๋Š” ๋‹ค์Œ์œผ๋กœ ์ง€์ •๋œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
pf. ์—ฐ๊ฒฐ์ด ์Šน์ธ๋˜๋ฉด ์ด ์ฃผ์†Œ๋Š” SSL ์„œ๋ฒ„๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ : ์ด ์ฃผ์†Œ์— ์ธ์ฆ์„œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ : ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋Š” cafile ๋˜๋Š” capath์— ๋Œ€ํ•ด์„œ๋งŒ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ ์ด๋ฆ„์ด๋‚˜ IP ์ฃผ์†Œ์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค!
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,LISTEN,OPENSSL,CHILD,RANGE,RETRY
์œ ์šฉํ•œ ์˜ต์…˜: pf, cipher, method, verify, commonname cafile, capath, ์ธ์ฆ์„œ,
ํ‚ค, ์••์ถ•, ํฌํฌ, ๋ฐ”์ธ๋“œ, ๋ฒ”์œ„, tcpwrap, su, ์žฌ์‚ฌ์šฉ ์ฃผ์†Œ, ์žฌ์‹œ๋„
์ฐธ์กฐ: OPENSSL, TCP-LISTEN

ํŒŒ์ดํ”„:
๋งŒ์•ฝ์— ์ด๋ฏธ ์กด์žฌํ•˜๋ฏ€๋กœ ์—ด๋ฆฝ๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ช…๋ช…๋œ ํŒŒ์ดํ”„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ƒ์„ฑ ๋ฐ ์˜คํ”ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. socat ๋ฒ„์ „ 1.4.3๋ถ€ํ„ฐ ๋ช…๋ช…๋œ ํŒŒ์ดํ”„๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
์ฃผ์†Œ๊ฐ€ ๋‹ซํ˜€ ์žˆ์„ ๋•Œ(๊ทธ๋Ÿฌ๋‚˜ ์—ฐ๊ฒฐ ํ•ด์ œ-๋‹ซ๊ธฐ ์˜ต์…˜ ์ฐธ์กฐ)
์ฐธ๊ณ : ํŒŒ์ดํ”„๊ฐ€ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ๋ชจ๋‘์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์—์ฝ” ์„œ๋น„์Šค๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ : ํŒŒ์ดํ”„๊ฐ€ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ๋ชจ๋‘์— ์‚ฌ์šฉ๋˜๊ณ  socat์ด ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ
ํŒŒ์ดํ”„๊ฐ€ ๋ฒ„ํผ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ”์ดํŠธ(Linux 2.4: 2048๋ฐ”์ดํŠธ)๊ฐ€ ์žˆ์œผ๋ฉด socat๊ฐ€ ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
socat ์˜ต์…˜(์˜ˆ: -b 2048) ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,NAMED,OPEN
์œ ์šฉํ•œ ์˜ต์…˜: rdonly, nonblock, group, user, mode, unlink-early
์ฐธ์กฐ: ์ด๋ฆ„ ์—†๋Š” ํŒŒ์ดํ”„

ํŒŒ์ดํ”„ ๋ช…๋ช…๋˜์ง€ ์•Š์€ ํŒŒ์ดํ”„๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—์ฝ”๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์— ๊ธฐ๋ก๋œ ๋ชจ๋“  ๋‚ด์šฉ์€ ์ฆ‰์‹œ ์ฝ์€ ๋ฐ์ดํ„ฐ๋กœ ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ฐธ๊ณ : socat๊ฐ€ ํŒŒ์ดํ”„๊ฐ€ ๋Œ€๊ธฐ์—ด์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ”์ดํŠธ๋ฅผ ์“ฐ๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒฝ์šฐ(Linux 2.4: 2048
๋ฐ”์ดํŠธ), socat๊ฐ€ ์ฐจ๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด -b 2048 ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD
์ฐธ์กฐ: ๋ช…๋ช…๋œ ํŒŒ์ดํ”„

๋Œ€๋ฆฌ: : :
TCP/IP ๋ฒ„์ „ 8080 ๋˜๋Š” 4์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ 6์—์„œ HTTP ํ”„๋ก์‹œ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์†Œ ์‚ฌ์–‘, ์ด๋ฆ„ ํ™•์ธ ๋˜๋Š” ์˜ต์…˜ pf์— ๋”ฐ๋ผ
ํ˜ธ์ŠคํŠธ ์ด๋ฆ„:ํฌํŠธ์— ๋Œ€ํ•œ CONNECT ์š”์ฒญ. ํ”„๋ก์‹œ๊ฐ€ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ  ์„ฑ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ
๋Œ€์ƒ์— ์—ฐ๊ฒฐํ•˜๋ฉด socat๊ณผ ๋Œ€์ƒ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์‹œ์ž‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ
ํŠธ๋ž˜ํ”ฝ์€ HTTP์ผ ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ž„์˜์˜ ํ”„๋กœํ† ์ฝœ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,HTTP,RETRY
์œ ์šฉํ•œ ์˜ต์…˜:proxyport,ignorecr,proxyauth,resolve,crnl,bind,
์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ, mss, ์†Œ์Šค ํฌํŠธ, ์žฌ์‹œ๋„
์ฐธ์กฐ: SOCKS, TCP

PTY ์˜์‚ฌ ํ„ฐ๋ฏธ๋„(pty)์„ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ๋งˆ์Šคํ„ฐ ์ธก์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ง๋ ฌ ํšŒ์„ ์ด๋‚˜ ํ„ฐ๋ฏธ๋„์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์—ฌ pty์˜ ์Šฌ๋ ˆ์ด๋ธŒ ์ธก์„ ์—ฝ๋‹ˆ๋‹ค. (์˜ˆ). ๋งŒ์•ฝ์—
ptmx์™€ openpty ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ptmx๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(POSIX).
์˜ต์…˜ ๊ทธ๋ฃน: FD,NAMED,PTY,TERMIOS
์œ ์šฉํ•œ ์˜ต์…˜: link, openpty, wait-slave, ๋ชจ๋“œ, ์‚ฌ์šฉ์ž, ๊ทธ๋ฃน
์ฐธ์กฐ: UNIX-LISTEN, PIPE, EXEC, SYSTEM

์ฝ๊ธฐ ๋ผ์ธ
์ž…๋ ฅ ๋ผ์ธ์„ ํŽธ์ง‘ํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก stdio์—์„œ GNU readline๊ณผ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
(์˜ˆ).
๋ผ์ด์„ผ์Šค ์ œํ•œ์œผ๋กœ ์ธํ•ด ๋ฐ๋น„์•ˆ์—์„œ๋Š” readline ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณด๋‹ค
๋ฒ„๊ทธ.
๋Œ€์‹  STDIO๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SCTP-์—ฐ๊ฒฐ: :
์ง€์ •๋œ SCTP ์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [IP ์ฃผ์†Œ] ๊ทธ๋ฆฌ๊ณ 
[TCP ์„œ๋น„์Šค] ์ฃผ์†Œ์— ๋”ฐ๋ผ TCP/IP ๋ฒ„์ „ 4 ๋˜๋Š” 6 ์‚ฌ์šฉ
์‚ฌ์–‘, ์ด๋ฆ„ ํ™•์ธ ๋˜๋Š” ์˜ต์…˜ pf.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,SCTP,CHILD,RETRY
์œ ์šฉํ•œ ์˜ต์…˜: ๋ฐ”์ธ๋”ฉ, pf, ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ, tos, mtudiscover, sctp-maxseg,
sctp-nodelay, ๋น„์ฐจ๋‹จ, ์†Œ์ŠคํฌํŠธ, ์žฌ์‹œ๋„, readbytes
์ฐธ์กฐ: SCTP4-CONNECT, SCTP6-CONNECT, SCTP-LISTEN, TCP-CONNECT

SCTP4-์—ฐ๊ฒฐ: :
SCTP-CONNECT์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,SCTP,CHILD,RETRY

SCTP6-์—ฐ๊ฒฐ: :
SCTP-CONNECT์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6,SCTP,CHILD,RETRY

SCTP-๋“ฃ๊ธฐ:
๋“ฃ๋Š”๋‹ค [TCP ์„œ๋น„์Šค] TCP/IP ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค. IP ๋ฒ„์ „์€
4 ๋˜๋Š” ์ฃผ์†Œ ์˜ต์…˜ pf, socat ์˜ต์…˜(-4, -6)์œผ๋กœ ์ง€์ •๋œ ๊ฒƒ ๋˜๋Š”
ํ™˜๊ฒฝ ๋ณ€์ˆ˜ SOCAT_DEFAULT_LISTEN_IP. ์ด ์ฃผ์†Œ๋ฅผ ์—ฌ๋Š” ๊ฒƒ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”
์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,SCTP,RETRY
์œ ์šฉํ•œ ์˜ต์…˜: crnl, ๋ถ„๊ธฐ, ๋ฐ”์ธ๋“œ, ๋ฒ”์œ„, tcpwrap, pf, max-children, backlog,
sctp-maxseg, sctp-nodelay, su, ์žฌ์‚ฌ์šฉ์ฃผ์†Œ, ์žฌ์‹œ๋„, ์ฟจ-์“ฐ๊ธฐ
์ฐธ์กฐ: SCTP4-LISTEN, SCTP6-LISTEN, TCP-LISTEN, SCTP-CONNECT

SCTP4-๋“ฃ๊ธฐ:
SCTP-LISTEN๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,SCTP,RETRY

SCTP6-๋“ฃ๊ธฐ:
SCTP-LISTEN๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,SCTP,RETRY

์†Œ์ผ“ ์—ฐ๊ฒฐ: : :
์ฃผ์–ด์ง„ ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ์†Œ์ผ“ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ŠคํŠธ๋ฆผ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ 
SOCK_STREAM(man ์†Œ์ผ“\(2) ์ฐธ์กฐ) ๋ฐ ์›๊ฒฉ ์ฃผ์†Œ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋‘˜
์†Œ์ผ“ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” int ์ˆซ์ž๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. OS์— ๋ฌธ์˜ํ•˜์„ธ์š”
์ ์ ˆํ•œ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•œ ๋ฌธ์„œ ๋ฐ ํฌํ•จ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์›๊ฒฉ ์ฃผ์†Œ
sa_family ๋ฐ (BSD)๊ฐ€ ์—†๋Š” sockaddr ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
sa_len ๊ตฌ์„ฑ ์š”์†Œ.
์ง€์ •๋œ ๊ทธ๋ฃน์˜ ์˜ต์…˜ ์™ธ์—๋„ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
socat ์˜ต์…˜ -g๋ฅผ ์ ์šฉํ•˜๋ฉด ๋” ๋†’์€ ์ˆ˜์ค€์˜ ํ”„๋กœํ† ์ฝœ ์˜ต์…˜์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,CHILD,RETRY
์œ ์šฉํ•œ ์˜ต์…˜: ๋ฐ”์ธ๋”ฉ, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: TCP, UDP-CONNECT, UNIX-CONNECT, SOCKET-LISTEN, SOCKET-SENDTO

์†Œ์ผ“-๋ฐ์ดํ„ฐ๊ทธ๋žจ: : : :
์ฃผ์–ด์ง„ ์ฒ˜์Œ ์„ธ ๊ฐœ์˜ ์†Œ์ผ“ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์†Œ์ผ“์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค(man ์ฐธ์กฐ).
์†Œ์ผ“\(2))์„ ์‹คํ–‰ํ•˜๊ณ  ๋‚˜๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์›๊ฒฉ ์ฃผ์†Œ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์„ธ ๊ฐœ์˜ ์†Œ์ผ“
๋งค๊ฐœ๋ณ€์ˆ˜๋Š” int ์ˆซ์ž๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. OS ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ 
์ ์ ˆํ•œ ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด ํŒŒ์ผ์„ ํฌํ•จํ•˜์„ธ์š”. ์›๊ฒฉ ์ฃผ์†Œ๋Š” ๋ฐ์ดํ„ฐ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
sa_family ๋ฐ (BSD) sa_len์ด ์—†๋Š” sockaddr ๊ตฌ์กฐ ํ‘œํ˜„
๊ตฌ์„ฑ ์š”์†Œ.
์ง€์ •๋œ ๊ทธ๋ฃน์˜ ์˜ต์…˜ ์™ธ์—๋„ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
socat ์˜ต์…˜ -g๋ฅผ ์ ์šฉํ•˜๋ฉด ๋” ๋†’์€ ์ˆ˜์ค€์˜ ํ”„๋กœํ† ์ฝœ ์˜ต์…˜์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,RANGE
์œ ์šฉํ•œ ์˜ต์…˜: ๋ฐ”์ธ๋”ฉ, ๋ฒ”์œ„, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: UDP-DATAGRAM, IP-DATAGRAM, SOCKET-SENDTO, SOCKET-RECV, SOCKET-RECVFROM

์†Œ์ผ“ ์ˆ˜์‹ : : :
์ฃผ์–ด์ง„ ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ์†Œ์ผ“ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ŠคํŠธ๋ฆผ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ 
SOCK_STREAM(man ์†Œ์ผ“\(2) ์ฐธ์กฐ)์—์„œ ๋“ค์–ด์˜ค๋Š” ์—ฐ๊ฒฐ์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
์ง€์—ญ ์ฃผ์†Œ. ๋‘ ๊ฐœ์˜ ์†Œ์ผ“ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” int ์ˆซ์ž๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
OS ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ํŒŒ์ผ์„ ํฌํ•จํ•˜์—ฌ ์ ์ ˆํ•œ ๊ฐ’์„ ์ฐพ์œผ์„ธ์š”. ๊ทธ๋งŒํผ
local-address๋Š” ๋‹ค์Œ์ด ์—†๋Š” sockaddr ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
sa_family ๋ฐ (BSD) sa_len ๊ตฌ์„ฑ ์š”์†Œ.
์ง€์ •๋œ ๊ทธ๋ฃน์˜ ์˜ต์…˜ ์™ธ์—๋„ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
socat ์˜ต์…˜ -g๋ฅผ ์ ์šฉํ•˜๋ฉด ๋” ๋†’์€ ์ˆ˜์ค€์˜ ํ”„๋กœํ† ์ฝœ ์˜ต์…˜์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,RANGE,CHILD,RETRY
์œ ์šฉํ•œ ์˜ต์…˜: setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: TCP, UDP-CONNECT, UNIX-CONNECT, SOCKET-LISTEN, SOCKET-SENDTO,
์†Œ์ผ“-SENDTO

์†Œ์ผ“-RECV: : : :
์ฃผ์–ด์ง„ ์„ธ ๊ฐœ์˜ ์†Œ์ผ“ ๋งค๊ฐœ๋ณ€์ˆ˜(man ์†Œ์ผ“\(2) ์ฐธ์กฐ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ 
๊ทธ๊ฒƒ์„ ๋ฌถ๋Š”๋‹ค . ๋„์ฐฉ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๊ฐ€์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
int ์ˆซ์ž๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. OS ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ํŒŒ์ผ์„ ํฌํ•จํ•˜์—ฌ
์ ์ ˆํ•œ ๊ฐ’์„ ์ฐพ์œผ์‹ญ์‹œ์˜ค. ๋กœ์ปฌ ์ฃผ์†Œ๋Š” ๋‹ค์Œ์˜ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
sa_family ๋ฐ (BSD) sa_len ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์—†๋Š” sockaddr ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,RANGE
์œ ์šฉํ•œ ์˜ต์…˜: ๋ฒ”์œ„, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: UDP-RECV, IP-RECV, UNIX-RECV, SOCKET-DATAGRAM, SOCKET-SENDTO,
์†Œ์ผ“-RECVFROM

์†Œ์ผ“-RECVFROM: : : :
์ฃผ์–ด์ง„ ์„ธ ๊ฐœ์˜ ์†Œ์ผ“ ๋งค๊ฐœ๋ณ€์ˆ˜(man ์†Œ์ผ“\(2) ์ฐธ์กฐ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ 
๊ทธ๊ฒƒ์„ ๋ฌถ๋Š”๋‹ค . ๋„์ฐฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์‘๋‹ต์„ ๋‹ค์‹œ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ. ์ฒ˜์Œ ์„ธ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” int ์ˆซ์ž๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฐพ๋‹ค
OS ๋ฌธ์„œ ๋ฐ ํฌํ•จ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ ์ ˆํ•œ ๊ฐ’์„ ์ฐพ์œผ์„ธ์š”. ๊ทธ๋งŒํผ
local-address๋Š” ๋‹ค์Œ์ด ์—†๋Š” sockaddr ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
sa_family ๋ฐ (BSD) sa_len ๊ตฌ์„ฑ ์š”์†Œ.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,CHILD,RANGE
์œ ์šฉํ•œ ์˜ต์…˜: ํฌํฌ, ๋ฒ”์œ„, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: UDP-RECVFROM, IP-RECVFROM, UNIX-RECVFROM, SOCKET-DATAGRAM, SOCKET-SENDTO,
์†Œ์ผ“-RECV

์†Œ์ผ“-SENDTO: : : :
์ฃผ์–ด์ง„ ์„ธ ๊ฐœ์˜ ์†Œ์ผ“ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ผ“์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค(man ์†Œ์ผ“\(2) ์ฐธ์กฐ).
์ง€์ •๋œ ์ฃผ์†Œ๋กœ ๋‚˜๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์„ธ ๊ฐ€์ง€
๋งค๊ฐœ๋ณ€์ˆ˜๋Š” int ์ˆซ์ž๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. OS ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ 
์ ์ ˆํ•œ ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด ํŒŒ์ผ์„ ํฌํ•จํ•˜์„ธ์š”. ์›๊ฒฉ ์ฃผ์†Œ๋Š” ๋ฐ์ดํ„ฐ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
sa_family ๋ฐ (BSD) sa_len์ด ์—†๋Š” sockaddr ๊ตฌ์กฐ ํ‘œํ˜„
๊ตฌ์„ฑ ์š”์†Œ.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET
์œ ์šฉํ•œ ์˜ต์…˜: ๋ฐ”์ธ๋”ฉ, setockopt-int, setockopt-bin, setockopt-string
์ฐธ์กฐ: UDP-SENDTO, IP-SENDTO, UNIX-SENDTO, SOCKET-DATAGRAM, SOCKET-RECV
์†Œ์ผ“-RECVFROM

์–‘๋ง4: : :
๋‹ค์Œ์„ ํ†ตํ•ด ์—ฐ๊ฒฐ [IP ์ฃผ์†Œ]์— [IPv4 ์ฃผ์†Œ] ์ผœ์ง [TCP
์„œ๋น„์Šค], IP ๋ฒ„์ „ 4 ๋˜๋Š” 4์„ ํ†ตํ•ด ์–‘๋ง ๋ฒ„์ „ 6 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์†Œ ์ง€์ •, ์ด๋ฆ„ ํ™•์ธ ๋˜๋Š” ์˜ต์…˜ pf(์˜ˆ).
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,SOCKS4,RETRY
์œ ์šฉํ•œ ์˜ต์…˜: ์–‘๋ง์‚ฌ์šฉ์ž, ์–‘๋งํฌํŠธ, ์†Œ์ŠคํฌํŠธ, pf, ์žฌ์‹œ๋„
์ฐธ์กฐ: SOCKS4A, PROXY, TCP

SOCKS4A: : :
SOCKS4์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์–‘๋ง ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 4a๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ํ™•์ธ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
์–‘๋ง ์„œ๋ฒ„๋กœ.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,SOCKS4,RETRY

STDERR ํŒŒ์ผ ์„ค๋ช…์ž 2๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์ฐธ์กฐ: FD

STDIN ํŒŒ์ผ ์„ค๋ช…์ž 0๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์œ ์šฉํ•œ ์˜ต์…˜: readbytes
์ฐธ์กฐ: FD

STDIUM ์ฝ๊ธฐ์—๋Š” ํŒŒ์ผ ์„ค๋ช…์ž 0์„ ์‚ฌ์šฉํ•˜๊ณ  ์“ฐ๊ธฐ์—๋Š” 1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์œ ์šฉํ•œ ์˜ต์…˜: readbytes
์ฐธ์กฐ: FD

ํ‘œ์ค€ ์ถœ๋ ฅ ํŒŒ์ผ ์„ค๋ช…์ž 1๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD(TERMIOS,REG,SOCKET)
์ฐธ์กฐ: FD

์ฒด๊ณ„:
์ƒ์œ„ ํ”„๋กœ์„ธ์Šค์™€์˜ ํ†ต์‹ ์„ ์„ค์ •ํ•˜๋Š” ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌํฌํ•˜๊ณ 
system() ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ํ”„๋กœ๊ทธ๋žจ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ ์— ์œ ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค
[๋ฌธ์ž์—ด]์—๋Š” ',' ๋˜๋Š” "!!"๊ฐ€ ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ ํ•ด๋‹น ์‰˜ ๋ฉ”ํƒ€ ๋ฌธ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณดํ˜ธ๋ฐ›์œผ์„ธ์š”. ์„ฑ๊ณต์ ์ธ ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ํ›„, ์†Œ์บฃ stdin์— ๋ฐ์ดํ„ฐ๋ฅผ ์”๋‹ˆ๋‹ค.
์ฒ˜๋ฆฌํ•˜๊ณ  stdout์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,EXEC,FORK,TERMIOS
์œ ์šฉํ•œ ์˜ต์…˜: path, fdin, fdout, chroot, su, su-d, nofork, pty, stderr, ctty,
setid, ํŒŒ์ดํ”„, sigint, sigquit
์ฐธ์กฐ: EXEC

TCP: :
์—ฐ๊ฒฐ ๋Œ€์ƒ [TCP ์„œ๋น„์Šค] ์ผœ์ง [IP ์ฃผ์†Œ] TCP/IP ๋ฒ„์ „ 4 ๋˜๋Š” 6 ์‚ฌ์šฉ
์ฃผ์†Œ ์‚ฌ์–‘, ์ด๋ฆ„ ํ™•์ธ ๋˜๋Š” ์˜ต์…˜ pf์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,TCP,RETRY
์œ ์šฉํ•œ ์˜ต์…˜: crnl, ๋ฐ”์ธ๋”ฉ, pf, ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ, tos, mtudiscover, mss, nodelay,
๋น„์ฐจ๋‹จ, ์†Œ์ŠคํฌํŠธ, ์žฌ์‹œ๋„, readbytes
์ฐธ์กฐ: TCP4, TCP6, TCP-LISTEN, UDP, SCTP-CONNECT, UNIX-CONNECT

TCP4: :
TCP์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ).
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,TCP,RETRY

TCP6: :
TCP์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6,TCP,RETRY

TCP-์ˆ˜์‹ :
๋“ฃ๋Š”๋‹ค [TCP ์„œ๋น„์Šค] TCP/IP ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค. IP ๋ฒ„์ „์€
4 ๋˜๋Š” ์ฃผ์†Œ ์˜ต์…˜ pf, socat ์˜ต์…˜(-4, -6)์œผ๋กœ ์ง€์ •๋œ ๊ฒƒ ๋˜๋Š”
ํ™˜๊ฒฝ ๋ณ€์ˆ˜ SOCAT_DEFAULT_LISTEN_IP. ์ด ์ฃผ์†Œ๋ฅผ ์—ฌ๋Š” ๊ฒƒ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”
์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6,TCP,RETRY
์œ ์šฉํ•œ ์˜ต์…˜: crnl, ๋ถ„๊ธฐ, ๋ฐ”์ธ๋”ฉ, ๋ฒ”์œ„, tcpwrap, pf, max-children, backlog, mss,
su, ์žฌ์‚ฌ์šฉ์ฃผ์†Œ, ์žฌ์‹œ๋„, ์ฟจ-์“ฐ๊ธฐ
์ฐธ์กฐ: TCP4-LISTEN, TCP6-LISTEN, UDP-LISTEN, SCTP-LISTEN, UNIX-LISTEN,
OPENSSL-LISTEN, TCP-CONNECT

TCP4-๋“ฃ๊ธฐ:
TCP-LISTEN๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ).
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,TCP,RETRY

TCP6-๋“ฃ๊ธฐ:
TCP-LISTEN๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์ถ”๊ฐ€ ์œ ์šฉํ•œ ์˜ต์…˜: ipv6only
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP6,TCP,RETRY

ํฐ ์ˆ ํ†ต[: / ]
Linux TUN/TAP ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์„ ํƒ์ ์œผ๋กœ ์ฃผ์†Œ์™€ ๋„ท๋งˆ์Šคํฌ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
๋งค๊ฐœ๋ณ€์ˆ˜์— ์˜ํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ธฐํƒ€ ํ”„๋กœ์„ธ์Šค; socat์€ "์™€์ด์–ด ์ธก"์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ์†Œ์—๋Š” ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
ํ„ฐ๋„ ๋ณต์ œ ์žฅ์น˜(๋ณดํ†ต /dev/net/tun )์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๋ฐ ๊ถŒํ•œ
์ผ๋ถ€ ioctl()์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ๊ถŒ ๋ถˆํ™•์‹คํ•จ is ํ•„์ˆ˜ ์— ๋ฐ”๋กœ ํ™œ์„ฑํ™” ์ „์—,
์ƒํ˜ธ ์ž‘์šฉ!
์˜ต์…˜ ๊ทธ๋ฃน: FD,NAMED,OPEN,TUN
์œ ์šฉํ•œ ์˜ต์…˜: iff-up, tun-device, tun-name, tun-type, iff-no-pi
์ฐธ์กฐ: ip-recv

UDP: :
์—ฐ๊ฒฐ ๋Œ€์ƒ [UDP ์„œ๋น„์Šค] ์ผœ์ง [IP ์ฃผ์†Œ] UDP/IP ๋ฒ„์ „ 4 ๋˜๋Š” 6 ์‚ฌ์šฉ
์ฃผ์†Œ ์‚ฌ์–‘, ์ด๋ฆ„ ํ™•์ธ ๋˜๋Š” ์˜ต์…˜ pf์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
UDP ํ”„๋กœํ† ์ฝœ ์†์„ฑ์œผ๋กœ ์ธํ•ด ์‹ค์ œ ์—ฐ๊ฒฐ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ํ™•๋ฆฝ๋œ; ์„œ๋ฒ„์— '์—ฐ๊ฒฐ'ํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋ฉฐ ํŒŒ์ผ ๋์€ ์—†์Šต๋‹ˆ๋‹ค.
์ƒํƒœ๋กœ ์šด์†ก์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6
์œ ์šฉํ•œ ์˜ต์…˜: ttl, tos, ๋ฐ”์ธ๋”ฉ, ์†Œ์ŠคํฌํŠธ, pf
์ฐธ์กฐ: UDP4, UDP6, UDP-LISTEN, TCP, IP

UDP4: :
UDP์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4

UDP6: :
UDP์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6

UDP-๋ฐ์ดํ„ฐ๊ทธ๋žจ: :
ํŠนํžˆ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ์ผ ์ˆ˜ ์žˆ๋Š” ์ง€์ •๋œ ์ฃผ์†Œ๋กœ ๋‚˜๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
๋˜๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์ฃผ์†Œ. ๋กœ์ปฌ ์†Œ์ผ“์— ๋„์ฐฉํ•˜๋Š” ํŒจํ‚ท์€ ๋‹ค์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์˜ฌ๋ฐ”๋ฅธ ์›๊ฒฉ ํฌํŠธ์™€ ํ•ด๋‹น ์†Œ์Šค ์ฃผ์†Œ๊ฐ€ RANGE ๋˜๋Š” TCPWRAP ์˜ต์…˜๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์ด ์ฃผ์†Œ ์œ ํ˜•์€ ๋Œ€์นญ ๋˜๋Š” ๋น„๋Œ€์นญ ๊ตฌํ˜„์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋˜๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ํ†ต์‹ .
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,RANGE
์œ ์šฉํ•œ ์˜ต์…˜: ๋ฐ”์ธ๋”ฉ, ๋ฒ”์œ„, tcpwrap, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ, ip-multicast-loop,
ip-๋ฉ€ํ‹ฐ์บ์ŠคํŠธ-ttl, ip-๋ฉ€ํ‹ฐ์บ์ŠคํŠธ-if, ip-์ถ”๊ฐ€-๋ฉค๋ฒ„์‹ญ, ttl, tos, ์†Œ์Šค ํฌํŠธ, pf
์ฐธ์กฐ: UDP4-DATAGRAM, UDP6-DATAGRAM, UDP-SENDTO, UDP-RECVFROM, UDP-RECV,
UDP-์—ฐ๊ฒฐ, UDP-์ˆ˜์‹ , IP-๋ฐ์ดํ„ฐ๊ทธ๋žจ

UDP4-๋ฐ์ดํ„ฐ๊ทธ๋žจ: :
UDP-DATAGRAM๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ(example1, example2)๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4, RANGE

UDP6-๋ฐ์ดํ„ฐ๊ทธ๋žจ: :
UDP-DATAGRAM๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6,RANGE

UDP-์ˆ˜์‹ :
UDP/IP ํŒจํ‚ท์ด ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. [UDP ์„œ๋น„์Šค] ๋ฐ ๋‹ค์‹œ '์—ฐ๊ฒฐ'
๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ. ํ—ˆ์šฉ๋˜๋Š” IP ๋ฒ„์ „์€ 4์ด๊ฑฐ๋‚˜ pf ์˜ต์…˜์œผ๋กœ ์ง€์ •๋œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์ œ๋ฐœ
UDP ํ”„๋กœํ† ์ฝœ ์†์„ฑ์œผ๋กœ ์ธํ•ด ์‹ค์ œ ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ
ํ”ผ์–ด์—์„œ ๋จผ์ € ๋„์ฐฉํ•ด์•ผ ํ•˜๋ฉฐ ํŒŒ์ผ ๋ ์กฐ๊ฑด์€ ์ „์†ก๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ฃผ์†Œ๋ฅผ ์—ด๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4,IP6
์œ ์šฉํ•œ ์˜ต์…˜: ํฌํฌ, ๋ฐ”์ธ๋“œ, ๋ฒ”์œ„, pf
์ฐธ์กฐ: UDP, UDP4-LISTEN, UDP6-LISTEN, TCP-LISTEN

UDP4-๋“ฃ๊ธฐ:
UDP-LISTEN๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP4

UDP6-๋“ฃ๊ธฐ:
UDP-LISTEN๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,LISTEN,CHILD,RANGE,IP6

UDP-SENDTO: :
๋‹ค์Œ์— ์˜ํ•ด ์ •์˜๋œ ์ง€์ •๋œ ํ”ผ์–ด ์†Œ์ผ“๊ณผ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. [UDP ์„œ๋น„์Šค] ์ผœ์ง
[IP ์ฃผ์†Œ], ์ฃผ์†Œ์— ๋”ฐ๋ผ UDP/IP ๋ฒ„์ „ 4 ๋˜๋Š” 6 ์‚ฌ์šฉ
์‚ฌ์–‘, ์ด๋ฆ„ ํ™•์ธ ๋˜๋Š” ์˜ต์…˜ pf. ํŒจํ‚ท์„ ๋ณด๋‚ด๊ณ  ๋ฐ›์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น ํ”ผ์–ด ์†Œ์ผ“์˜ ํŒจํ‚ท๋งŒ. ์ด ์ฃผ์†Œ๋Š” ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
๊ณ ๊ฐ. socat UDP-RECVFROM ๋ฐ UDP-RECV ์ฃผ์†Œ ํ”ผ์–ด์™€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6
์œ ์šฉํ•œ ์˜ต์…˜: ttl, tos, ๋ฐ”์ธ๋”ฉ, ์†Œ์ŠคํฌํŠธ, pf
์ฐธ์กฐ: UDP4-SENDTO, UDP6-SENDTO, UDP-RECVFROM, UDP-RECV, UDP-CONNECT,
UDP-์ˆ˜์‹ , IP-SENDTO

UDP4-SENDTO: :
UDP-SENDTO์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4

UDP6-SENDTO: :
UDP-SENDTO์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6

UDP-RECVFROM:
UDP ์†Œ์ผ“์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. [UDP ์„œ๋น„์Šค] UDP/IP ๋ฒ„์ „ 4 ๋˜๋Š” 6 ์‚ฌ์šฉ
์˜ต์…˜ pf์—์„œ. ๋ถˆํŠน์ • ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ํ•˜๋‚˜์˜ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ณ  ํ•˜๋‚˜ ๋˜๋Š”
ํ•ด๋‹น ํ”ผ์–ด์— ๋” ๋งŽ์€ ์‘๋‹ต ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋Š” ํŠนํžˆ ํฌํฌ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ž„์˜์˜ ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ๋„์ฐฉํ•˜๋Š” ๊ฐ ํŒจํ‚ท์€ ์ž์ฒด ํ•˜์œ„์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค. ์ด๋ฅผ ํ†ตํ•ด ntpd ๋˜๋Š” ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ UDP ๊ธฐ๋ฐ˜ ์„œ๋ฒ„์™€ ์œ ์‚ฌํ•œ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋ช…๋ช… ๋œ. ์ด ์ฃผ์†Œ๋Š” socat UDP-SENDTO ์ฃผ์†Œ ํ”ผ์–ด์™€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,CHILD,RANGE
์œ ์šฉํ•œ ์˜ต์…˜: ํฌํฌ, ttl, tos, ๋ฐ”์ธ๋”ฉ, ์†Œ์ŠคํฌํŠธ, pf
์ฐธ์กฐ: UDP4-RECVFROM, UDP6-RECVFROM, UDP-SENDTO, UDP-RECV, UDP-CONNECT,
UDP-๋“ฃ๊ธฐ, IP-RECVFROM, UNIX-RECVFROM

UDP4-RECVFROM:
UDP-RECVFROM๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,CHILD,RANGE

UDP6-RECVFROM:
UDP-RECVFROM๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6,CHILD,RANGE

UDP-RECV:
UDP ์†Œ์ผ“์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. [UDP ์„œ๋น„์Šค] UDP/IP ๋ฒ„์ „ 4 ๋˜๋Š” 6 ์‚ฌ์šฉ
์˜ต์…˜ pf์—์„œ. ๋ถˆํŠน์ • ๋‹ค์ˆ˜์˜ ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ณ  ์ด๋ฅผ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ. ๋‹ต๋ณ€์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด socat UDP-SENDTO ์ฃผ์†Œ์™€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋™๋ฃŒ; ์ด๋Š” syslog ์„œ๋ฒ„์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,IP6,RANGE
์œ ์šฉํ•œ ์˜ต์…˜: ํฌํฌ, pf, ๋ฐ”์ธ๋”ฉ, ์†Œ์ŠคํฌํŠธ, ttl, tos
์ฐธ์กฐ: UDP4-RECV, UDP6-RECV, UDP-SENDTO, UDP-RECVFROM, UDP-CONNECT, UDP-LISTEN,
IP-RECV, ์œ ๋‹‰์Šค-RECV

UDP4-RECV:
UDP-RECV์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv4 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP4,RANGE

UDP6-RECV:
UDP-RECV์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ IPv6 ํ”„๋กœํ† ์ฝœ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,IP6,RANGE

UNIX ์—ฐ๊ฒฐ:
์—ฐ๊ฒฐ ๋Œ€์ƒ UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์ด ์•„๋‹™๋‹ˆ๋‹ค.
์˜ค๋ฅ˜; ๋งŒ์•ฝ์— UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์ด์ง€๋งŒ ์ˆ˜์‹  ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
์˜ค๋ฅ˜.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,NAMED,RETRY,UNIX
) ์œ ์šฉํ•œ ์˜ต์…˜: ๋ฐ”์ธ๋”ฉ
์ฐธ์กฐ: UNIX-LISTEN, UNIX-SENDTO, TCP

UNIX-์ˆ˜์‹ :
๋“ฃ๋Š”๋‹ค UNIX ๋„๋ฉ”์ธ ์ŠคํŠธ๋ฆผ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ์— ์กด์žฌํ•˜์ง€๋งŒ ์†Œ์ผ“์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ์กด์žฌํ•œ๋‹ค
UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์ด๋ฏ€๋กœ ์ฃผ์†Œ ๋ฐ”์ธ๋”ฉ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค(์˜ต์…˜ ์‚ฌ์šฉ).
์—ฐ๊ฒฐ์„ ์ผ์ฐ ํ•ด์ œํ•˜์„ธ์š”!). ์ด ์ฃผ์†Œ๋ฅผ ์—ด๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฐจ๋‹จ๋  ๋•Œ๊นŒ์ง€ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.
์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. socat ๋ฒ„์ „ 1.4.3๋ถ€ํ„ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
์ด ์ฃผ์†Œ๊ฐ€ ํ์‡„๋œ ๊ฒฝ์šฐ(๋‹จ, ๋งํฌ ํ•ด์ œ-๋‹ซ๊ธฐ ์˜ต์…˜ ์ฐธ์กฐ)(์˜ˆ)
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,NAMED,LISTEN,CHILD,RETRY,UNIX
์œ ์šฉํ•œ ์˜ต์…˜: ํฌํฌ, umask, ๋ชจ๋“œ, ์‚ฌ์šฉ์ž, ๊ทธ๋ฃน, ์—ฐ๊ฒฐ ํ•ด์ œ-์ดˆ๊ธฐ
์ฐธ์กฐ: UNIX-CONNECT, UNIX-RECVFROM, UNIX-RECV, TCP-LISTEN

UNIX-SENDTO:
[๋กœ ์ •์˜๋œ ์ง€์ •๋œ ํ”ผ์–ด ์†Œ์ผ“๊ณผ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ] ๊ฐ€์ •ํ•˜๋ฉด
UNIX ๋„๋ฉ”์ธ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์†Œ์ผ“. ๊ทธ ๊ณณ์œผ๋กœ ํŒจํ‚ท์„ ๋ณด๋‚ด๊ณ , ๊ทธ ๊ณณ์œผ๋กœ๋ถ€ํ„ฐ ํŒจํ‚ท์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
ํ”ผ์–ด ์†Œ์ผ“๋งŒ ํ•ด๋‹น. ๋กœ์ปฌ ์†Œ์ผ“์„ ๋ฐ”์ธ๋”ฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฃผ์†Œ๋กœ(์˜ˆ: ์ด์ „์— ์กด์žฌํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” /tmp/sock1) ์ด ์ฃผ์†Œ ์œ ํ˜•
socat UNIX-RECVFROM ๋ฐ UNIX-RECV ์ฃผ์†Œ ํ”ผ์–ด์™€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,NAMED,UNIX
์œ ์šฉํ•œ ์˜ต์…˜: ๋ฐ”์ธ๋”ฉ
์ฐธ์กฐ: UNIX-RECVFROM, UNIX-RECV, UNIX-CONNECT, UDP-SENDTO, IP-SENDTO

UNIX-RECVFROM:
UNIX ๋„๋ฉ”์ธ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์†Œ์ผ“์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ]. ํ•˜๋‚˜์˜ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ณ 
ํ•ด๋‹น ํ”ผ์–ด์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์‘๋‹ต ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋Š” ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค
์ž„์˜์˜ ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ๋„์ฐฉํ•˜๋Š” ๊ฐ ํŒจํ‚ท์ด ๋‹ค์Œ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ํฌํฌ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ž์ฒด ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค. ์ด ์ฃผ์†Œ๋Š” socat UNIX-SENDTO ์ฃผ์†Œ ํ”ผ์–ด์™€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,NAMED,CHILD,UNIX
์œ ์šฉํ•œ ์˜ต์…˜: ํฌํฌ
์ฐธ์กฐ: UNIX-SENDTO, UNIX-RECV, UNIX-LISTEN, UDP-RECVFROM, IP-RECVFROM

UNIX-RECV:
UNIX ๋„๋ฉ”์ธ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์†Œ์ผ“์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ]. ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
์ง€์ •๋˜์ง€ ์•Š์€ ํ”ผ์–ด๋ฅผ ์„ ํƒํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ต๋ณ€์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,
socat UNIX-SENDTO ์ฃผ์†Œ ํ”ผ์–ด์— ์˜ํ•ด ์ฃผ์†Œ๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. syslog์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ. ์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,NAMED,UNIX
์ฐธ์กฐ: UNIX-SENDTO, UNIX-RECVFROM, UNIX-LISTEN, UDP-RECV, IP-RECV

UNIX-ํด๋ผ์ด์–ธํŠธ:
[๋กœ ์ •์˜๋œ ์ง€์ •๋œ ํ”ผ์–ด ์†Œ์ผ“๊ณผ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ] ๊ฐ€์ •ํ•˜๋ฉด
UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“. ๋จผ์ € ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๊ณ  ์‹คํŒจํ•˜๋ฉด ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๊ทธ๋žจ ์†Œ์ผ“์ด๋ฏ€๋กœ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์„ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน: FD,SOCKET,NAMED,UNIX
์œ ์šฉํ•œ ์˜ต์…˜: ๋ฐ”์ธ๋”ฉ
์ฐธ์กฐ: UNIX-CONNECT, UNIX-SENDTO, GOPEN

์ถ”์ƒ-์—ฐ๊ฒฐ:

์š”์•ฝ ๋“ฃ๊ธฐ:

์š”์•ฝ-๋ณด๋‚ด๊ธฐ:

์ถ”์ƒ-RECVFROM:

์ถ”์ƒ-RECV:

์ถ”์ƒ ํด๋ผ์ด์–ธํŠธ:
ABSTRACT ์ฃผ์†Œ๋Š” ๊ด€๋ จ UNIX ์ฃผ์†Œ์™€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ธฐ๋ฐ˜ ์†Œ์ผ“์ด ์•„๋‹ˆ๋ผ ๋Œ€์ฒด UNIX ๋„๋ฉ”์ธ์„ ์ฃผ์†Œ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์†Œ ๊ณต๊ฐ„. ์ด๋ฅผ ๋ณด๊ด€ํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์ผ“ ์ฃผ์†Œ ๋ฌธ์ž์—ด ์•ž์— "\0"์ด ๋ถ™์Šต๋‹ˆ๋‹ค.
๋‚ด๋ถ€์ ์œผ๋กœ. ์ด ๊ธฐ๋Šฅ์€ Linux์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ต์…˜ ๊ทธ๋ฃน์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
ABSTRACT ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ์ ์„ ์ œ์™ธํ•˜๊ณ  ๊ด€๋ จ UNIX ์ฃผ์†Œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
NAMED ๊ทธ๋ฃน์˜ ๋ฉค๋ฒ„์ž…๋‹ˆ๋‹ค.

์ฃผ์†Œ ์˜ต์…˜


์ฃผ์†Œ ์˜ต์…˜์€ ์ฃผ์†Œ ์‚ฌ์–‘์— ์ ์šฉ๋˜์–ด ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ์ฑ„๋„์˜ ์ฃผ์†Œ์™€ ์†์„ฑ์„ ์—ฝ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์ธ ์ด์œ ๋กœ ๋ชจ๋“  ์˜ต์…˜์„ ๋ชจ๋“  ์ฃผ์†Œ ์œ ํ˜•์— ์ ์šฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ:
์ผ๋ฐ˜ ํŒŒ์ผ์— ์†Œ์ผ“ ์˜ต์…˜์„ ์ ์šฉํ•˜๋ฉด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์“ธ๋ชจ์—†๋Š” ์กฐํ•ฉ์„ ์žก์œผ๋ ค๋ฉด
์˜คํ”ˆ ๋‹จ๊ณ„ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์„ ํƒ๊ถŒ ๊ทธ๋ฃน ์†Œ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์˜ต์…˜
ํ•˜๋‚˜ ์ด์ƒ์˜ ์˜ต์…˜ ๊ทธ๋ฃน์— ์†ํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์†Œ ์œ ํ˜•์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ต์…˜ ๊ทธ๋ฃน ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(๋‹จ, -g ์˜ต์…˜ ์ฐธ์กฐ).

์ฃผ์†Œ ์˜ต์…˜์—๋Š” ํ•ด๋‹น ๊ฐ’์ด ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฃผ์†Œ ์˜ต์…˜
ํ‚ค์›Œ๋“œ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ฑฐ๋‚˜ ํ‚ค์›Œ๋“œ ๋’ค์— "=value"๊ฐ€ ์˜ต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ value๋Š” ๋‹ค์Œ์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ์œ ํ˜•. ์ผ๋ถ€ ์ฃผ์†Œ ์˜ต์…˜์€ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:
sync ์˜ต์…˜์€ open() ํ˜ธ์ถœ๋กœ O_SYNC ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜ต์…˜์œผ๋กœ ์ธํ•ด ์‹œ์Šคํ…œ ๋˜๋Š”
๋„์„œ๊ด€ ์ „ํ™”; ์˜ˆ๋ฅผ ๋“ค์–ด `ttl=value' ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด setockopt(fd, SOL_IP, IP_TTL, value,
sizeof(int)) ํ˜ธ์ถœ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ธฐํƒ€ ์˜ต์…˜์€ ๋‚ด๋ถ€๋กœ ์„ค์ •๋จ ์†Œ์บฃ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜
๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘; ์˜ˆ๋ฅผ ๋“ค์–ด `crnl'์€ ๋ช…์‹œ์ ์ธ ๋ฌธ์ž ๋ณ€ํ™˜์„ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜
๋” ๋ณต์žกํ•œ ๊ตฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด su-d(substuser-delayed)๋Š” ์ผ๋ถ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌธ์˜ํ•˜๊ณ 
์ •๋ณด๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ๋‚˜์ค‘์— ๊ฐ€๋Šฅํ•œ chroot() ํ˜ธ์ถœ ํ›„์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์†Œ์— ์—ฌ๋Ÿฌ ์˜ต์…˜์ด ์ œ๊ณต๋˜๋Š” ๊ฒฝ์šฐ ์ฃผ์†Œ ์‚ฌ์–‘์˜ ์ˆœ์„œ
์‹คํ–‰/์ ์šฉ ์ˆœ์„œ์— (๊ฑฐ์˜) ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹ ์—, ์†Œ์บฃ ์ด
์— ๋‚ด์žฅ ์„ ํƒ๊ถŒ ์ƒ ์˜ต์…˜์„ ์œ ์šฉํ•œ ์ˆœ์„œ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€
์˜ต์…˜์€ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ(์˜ˆ: ์—ฐ๊ฒฐ ํ•ด์ œ, ์ดˆ๊ธฐ ์—ฐ๊ฒฐ ํ•ด์ œ, ๋Šฆ๊ฒŒ ์—ฐ๊ฒฐ ํ•ด์ œ)๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
์ฒ˜ํ˜• ์‹œ๊ฐ„.

ํ•˜๋‚˜์˜ ์ฃผ์†Œ ์ง€์ • ๋‚ด์—์„œ ๋™์ผํ•œ ์˜ต์…˜์ด ๋‘ ๋ฒˆ ์ด์ƒ ์ง€์ •๋œ ๊ฒฝ์šฐ
๊ฐ’์ด ๊ฐ™๊ฑฐ๋‚˜ ๋‹ค๋ฅด๋ฉด ์˜ต์…˜์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํšจ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ต์…˜์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
setockopt()์™€ ๊ฐ™์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ๋‹ค์ค‘ ํ˜ธ์ถœ์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •ํ•œ ์˜ต์…˜์œผ๋กœ
open()๊ณผ ๊ฐ™์€ ํ•„์ˆ˜ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋˜๋Š” ๋‚ด๋ถ€ ํ”Œ๋ž˜๊ทธ ์„ค์ •, ๋งˆ์ง€๋ง‰ ๊ฐ’
์˜ต์…˜ ๋ฐœ์ƒ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ์˜ต์…˜์˜ ์กด์žฌ ๋˜๋Š” ์˜๋ฏธ๋Š” ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์†Œ์บฃ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค
๋ˆ„๋ฝ๋œ libc ๋˜๋Š” ์ปค๋„ ๊ธฐ๋Šฅ์„ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‹จ์ง€
๊ธฐ๋ณธ ์‹œ์Šคํ…œ. ๋”ฐ๋ผ์„œ ์šด์˜ ์ฒด์ œ์— ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ๊ด€๋ จ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ด ํ”Œ๋žซํผ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๋ฝ์—์„œ๋Š” ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ์ฃผ์†Œ ์˜ต์…˜์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๊ฒƒ์„ ์œ„ํ•ด
ํฌ๊ด„์ ์ธ ์ฐธ์กฐ ๋ฐ ํ‘œ์ค€ ์˜ต์…˜ ์ด๋ฆ„, ๋ณ„์นญ ์ด๋ฆ„,
์˜ต์…˜ ๋‹จ๊ณ„ ๋ฐ ํ”Œ๋žซํผ์€ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”. xio.help.

FD ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด ์˜ต์…˜ ๊ทธ๋ฃน์—๋Š” UN*X ์Šคํƒ€์ผ ํŒŒ์ผ ์„ค๋ช…์ž์— ์ ์šฉ๋˜๋Š” ์˜ต์…˜์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ชจ๋“  ํ˜„์žฌ ์†Œ์บฃ ์ฃผ์†Œ ์œ ํ˜•์€ ํŒŒ์ผ ์„ค๋ช…์ž์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ๋ชจ๋“  ์ฃผ์†Œ์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ : ์ด๋Ÿฌํ•œ ์˜ต์…˜ ์ค‘ ์ผ๋ถ€๋Š” ๋‹ค์Œ์„ ์ œ๊ณตํ•˜๋Š” ๋‹ค๋ฅธ ์˜ต์…˜ ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์ด๊ธฐ๋„ โ€‹โ€‹ํ•ฉ๋‹ˆ๋‹ค.
fd ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ ๋˜ ๋‹ค๋ฅธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ต์…˜์˜ ๊ฒฝ์šฐ ์‹ค์ œ ์ฃผ์†Œ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…˜ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋น„fd ๊ธฐ๋ฐ˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์šฐ์„ ์ˆœ์œ„.

ํด๋กœ์ =
fcntl() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ FD_CLOEXEC ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. . ์„ค์ •๋œ ๊ฒฝ์šฐ,
exec() ๊ณ„์—ด ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ํŒŒ์ผ ์„ค๋ช…์ž๊ฐ€ ๋‹ซํž™๋‹ˆ๋‹ค. ์†Œ์บฃ ๋‚ด๋ถ€์ ์œผ๋กœ ์ฒ˜๋ฆฌ
์ด ํ”Œ๋ž˜๊ทธ๋Š” ์ž์‹ ์ด ์ œ์–ดํ•˜๋Š” โ€‹โ€‹fds์— ๋Œ€ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
์ด ์˜ต์…˜.

์„ค์ •ํ•˜๋‹ค fcntl(fd,
F_SETLK, ...) ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ํŒŒ์ผ์ด ์ด๋ฏธ ์ž ๊ฒจ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ํ˜ธ์ถœ๋กœ ์ธํ•ด
์˜ค๋ฅ˜. Linux์—์„œ ๊ทธ๋ฃน์˜ ํŒŒ์ผ ๊ถŒํ•œ์ด "S"(gx,g+s)์ด๊ณ 
ํŒŒ์ผ ์‹œ์Šคํ…œ์ด "mand" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ๋กœ ๋งˆ์šดํŠธ๋˜๋ฉด ์ž ๊ธˆ์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์ฆ‰,
๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŒŒ์ผ์„ ์—ด์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ํŒŒ์ผ์— ์ž„์˜ ๋Œ€๊ธฐ ์“ฐ๊ธฐ ์ž ๊ธˆ์„ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
fcntl(fd, F_SETLKW, ...) ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ํŒŒ์ผ์ด ์ด๋ฏธ ์ž ๊ฒจ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ํ˜ธ์ถœ์€
๋ธ”๋ก. ์ด ์ž ๊ธˆ์„ ํ•„์ˆ˜๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ setlk ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

setlk-rd
fcntl(fd,
F_SETLK, ...) ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ํŒŒ์ผ์ด ์ด๋ฏธ ์“ฐ๊ธฐ ์ž ๊ฒจ ์žˆ์œผ๋ฉด ์ด ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž ๊ธˆ์„ ํ•„์ˆ˜๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ setlk ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

setlkw-rd
๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ํŒŒ์ผ์— ๋Œ€ํ•ด ์ž„์˜ ๋Œ€๊ธฐ ์ฝ๊ธฐ ์ž ๊ธˆ์„ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
fcntl(fd, F_SETLKW, ...) ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ํŒŒ์ผ์ด ์ด๋ฏธ ์“ฐ๊ธฐ ์ž ๊ฒจ ์žˆ๋Š” ๊ฒฝ์šฐ
ํ˜ธ์ถœ ๋ธ”๋ก. ์ด ์ž ๊ธˆ์„ ํ•„์ˆ˜๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ setlk ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฌด๋ฆฌ ์ „
Flock(fd,
LOCK_EX) ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ์†Œ์บฃ ํŒŒ์ผ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์— ์˜ํ•ด ์ž ๊ธด ๊ฒฝ์šฐ ์ด ํ˜ธ์ถœ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค.

๋ฌด๋ฆฌ-์ „-nb
Flock(fd,
LOCK_EX|LOCK_NB) ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ํŒŒ์ผ์ด ์ด๋ฏธ ์ž ๊ฒจ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅ˜.

๋ฌด๋ฆฌ-sh
Flock(fd,
LOCK_SH) ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ์†Œ์บฃ ํŒŒ์ผ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์— ์˜ํ•ด ์ž ๊ธด ๊ฒฝ์šฐ ์ด ํ˜ธ์ถœ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค.

๋ฌด๋ฆฌ-sh-nb
Flock(fd,
LOCK_SH|LOCK_NB) ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ํŒŒ์ผ์ด ์ด๋ฏธ ์ž ๊ฒจ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅ˜.

์ž๋ฌผ์‡  ํŒŒ์ผ์— ์ฐจ๋‹จ ์ž ๊ธˆ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์— ๋”ฐ๋ผ setlk ๋˜๋Š” ๋ฌด๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
ํŠน์ • ํ”Œ๋žซํผ์—์„œ์˜ ๊ฐ€์šฉ์„ฑ. ๋‘˜ ๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ POSIX ๋ณ€ํ˜•
(setlkw)๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž=
์„ค์ • (์†Œ์œ ์ž) ์ŠคํŠธ๋ฆผ์˜. ์ฃผ์†Œ๊ฐ€ NAMED์˜ ๊ตฌ์„ฑ์›์ธ ๊ฒฝ์šฐ
์˜ต์…˜ ๊ทธ๋ฃน, ์†Œ์บฃ ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ๋ฐ”์ธ๋”ฉํ•œ ํ›„ chown() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค(๊ฒฝ์Ÿ ์กฐ๊ฑด!). ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ์†Œ์บฃ ์„ธํŠธ
fchown() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ ์‚ฌ์šฉ์ž. ์ด๋Ÿฌํ•œ ํ˜ธ์ถœ์—๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฃจํŠธ ๊ถŒํ•œ.

์‚ฌ์šฉ์ž ์ง€์—ฐ=
fd์˜ ์†Œ์œ ์ž๋ฅผ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์—ฐ ํ›„ fchown() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜
์ฑ„๋„์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์—๋งŒ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฃน=
์„ค์ • ์ŠคํŠธ๋ฆผ์˜. ์ฃผ์†Œ๊ฐ€ NAMED ์˜ต์…˜์˜ ๊ตฌ์„ฑ์›์ธ ๊ฒฝ์šฐ
๊ทธ๋ฃน, ์†Œ์บฃ ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ๋ฐ”์ธ๋”ฉํ•œ ํ›„ chown() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“(๊ฒฝ์Ÿ ์กฐ๊ฑด!). ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ์†Œ์บฃ ์„ค์ •
fchown() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ŠคํŠธ๋ฆผ ๊ทธ๋ฃน. ์ด๋Ÿฌํ•œ ํ†ตํ™”์—๋Š” ๊ทธ๋ฃน์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉค๋ฒ„์‹ญ ๋˜๋Š” ๋ฃจํŠธ ๊ถŒํ•œ.

๋‹จ์ฒด ์ง€๊ฐ=
fd์˜ ๊ทธ๋ฃน์„ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์—ฐ ํ›„ fchown() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜
์ฑ„๋„์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์—๋งŒ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“œ=
์„ค์ • ์ŠคํŠธ๋ฆผ์˜ [mode_t] (๊ถŒํ•œ). ์ฃผ์†Œ๊ฐ€ ํšŒ์›์ธ ๊ฒฝ์šฐ
NAMED ์˜ต์…˜ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•˜๊ณ  open() ๋˜๋Š” creat() ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“œ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์œผ๋กœ. ์ฃผ์†Œ๊ฐ€ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  NAMED ์˜ต์…˜ ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์ธ ๊ฒฝ์šฐ
์‹œ์Šคํ…œ ํ˜ธ์ถœ, ์†Œ์บฃ ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์„ ์—ฐ ํ›„ chmod() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋˜๋Š” UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์— ๋ฐ”์ธ๋”ฉ(๊ฒฝ์Ÿ ์กฐ๊ฑด!). ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ์†Œ์บฃ ์„ค์ •
fchmod() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ŠคํŠธ๋ฆผ ๋ชจ๋“œ. ์ด๋Ÿฌํ•œ ํ˜ธ์ถœ์—๋Š” ์†Œ์œ ๊ถŒ์ด๋‚˜ ๋ฃจํŠธ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠน๊ถŒ.

ํŒŒ๋งˆ-๋Šฆ์Œ=
fd์˜ ๊ถŒํ•œ์„ value๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [mode_t] fchmod() ์‹œ์Šคํ…œ ์‚ฌ์šฉ
์ฑ„๋„์„ ๊ฐœ์„คํ•˜๊ฑฐ๋‚˜ ์—ฐ๊ฒฐํ•œ ํ›„ ํ†ตํ™”ํ•˜์„ธ์š”. ์ด๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ๋งŒ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
ํ•ญ๋ชฉ.

์ถ”๊ฐ€=
ํ•ญ์ƒ ํŒŒ์ผ์˜ ์‹ค์ œ ๋์— ๋ฐ์ดํ„ฐ๋ฅผ ์”๋‹ˆ๋‹ค. ์ฃผ์†Œ๊ฐ€ OPEN ํšŒ์›์ธ ๊ฒฝ์šฐ
์˜ต์…˜ ๊ทธ๋ฃน, ์†Œ์บฃ open() ์‹œ์Šคํ…œ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ O_APPEND ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ).
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ์†Œ์บฃ fcntl(fd, F_SETFL, O_APPEND) ํ˜ธ์ถœ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋น„์ฐจ๋‹จ=
๋น„์ฐจ๋‹จ ๋ชจ๋“œ์—์„œ ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ํšจ๊ณผ๋Š”
TCP ์ฃผ์†Œ์˜ connect() ํ˜ธ์ถœ์€ ์ฐจ๋‹จ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ช…๋ช…๋œ ํŒŒ์ดํ”„๋ฅผ ์—ฌ๋Š” ๊ฒƒ์€
๋…์„œ๊ฐ€ ์ฐจ๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃผ์†Œ๊ฐ€ OPEN ์˜ต์…˜ ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์ธ ๊ฒฝ์šฐ, ์†Œ์บฃ
open() ์‹œ์Šคํ…œ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ O_NONBLOCK ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ์†Œ์บฃ ์ ์šฉ
fcntl(fd, F_SETFL, O_NONBLOCK) ํ˜ธ์ถœ.

์ง„ ์•”์‹œ์  ์ค„ ์ข…๊ฒฐ์ž ๋ณ€ํ™˜์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ์—์„œ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.
(์‹œ๊ทธ์œˆ).

๋ณธ๋ฌธ ์•”์‹œ์  ์ค„ ์ข…๊ฒฐ์ž ๋ณ€ํ™˜์„ ๊ฐ•์ œํ•˜๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ ๋ชจ๋“œ์—์„œ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค(Cygwin).

์ƒ์†๋ฐ›์ง€ ์•Š๋Š”๋‹ค
์ƒ์„ฑ๋œ ํ”„๋กœ์„ธ์Šค(Cygwin)์—์„œ ์ด ํŒŒ์ผ์„ ์—ด์–ด๋‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ์“ฐ๊ธฐ
EPIPE ๋˜๋Š” ECONNRESET์„ ์‚ฌ์šฉํ•˜์—ฌ ์“ฐ๊ธฐ๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์˜ ๋Œ€์‹  ์ˆ˜์ค€ ์˜ค๋ฅ˜. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋กœ๊ทธ ํŒŒ์ผ์ด ์ฑ„์›Œ์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
socat๊ฐ€ ๋Œ€์šฉ๋Ÿ‰ ์„œ๋ฒ„ ๋˜๋Š” ํ”„๋ก์‹œ๋กœ ์‚ฌ์šฉ๋  ๋•Œ ์“ธ๋ชจ์—†๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€
ํด๋ผ์ด์–ธํŠธ๋Š” ์ข…์ข… ์—ฐ๊ฒฐ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.
์ด ์˜ต์…˜์€ ์‹คํ—˜์ ์ž…๋‹ˆ๋‹ค.

๋-๋‹ซ๊ธฐ
์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” (์ฃผ์†Œ์— ๋”ฐ๋ฅธ) ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.
ํŒŒ์ผ ์„ค๋ช…์ž. ์ด๋Š” ์—ฐ๊ฒฐ์„ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ณต์œ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ํ•จ๊ป˜(์˜ˆ)
์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ์ผ“ ์—ฐ๊ฒฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ข…๋ฃŒ(2) ์ข…๋ฃŒ
์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ณต์œ ํ•˜๋”๋ผ๋„ ์†Œ์ผ“์ž…๋‹ˆ๋‹ค. ๊ฐ€๊นŒ์šด(2) ์†Œ์ผ“์„ "์—ฐ๊ฒฐ ํ•ด์ œ"ํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋งํฌ๊ฐ€ ๋‚จ์•„ ์žˆ๋Š” ํ•œ ํ™œ์„ฑ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค.
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ EXEC ๋˜๋Š” SYSTEM ์œ ํ˜•์˜ ์ฃผ์†Œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด socat๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ
ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ์ด ๋‹ซํž™๋‹ˆ๋‹ค.
์„ค๋ช…์ž.

ํ์‡„ ์—†์Œ
์“ฐ๊ธฐ ๋ถ€๋ถ„์„ ์ข…๋ฃŒํ•˜๋Š” (์ฃผ์†Œ์— ๋”ฐ๋ฅธ) ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค.

์…ง๋‹ค์šด
์“ฐ๊ธฐ ๋ถ€๋ถ„์„ ์ข…๋ฃŒํ•˜๋Š” (์ฃผ์†Œ์— ๋”ฐ๋ฅธ) ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
shutdown\(fd, SHUT_WR)์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์†Œ์ผ“์—์„œ๋งŒ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ซํžˆ๋‹ค
์“ฐ๊ธฐ ๋ถ€๋ถ„์„ ์ข…๋ฃŒํ•˜๋Š” (์ฃผ์†Œ์— ๋”ฐ๋ฅธ) ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
๋‹ซ๊ธฐ\(fd)์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค.

์ข…๋ฃŒ-null
ํ•˜๋‚˜์˜ ์ฃผ์†Œ๊ฐ€ EOF๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ, ์†Œ์บฃ ์“ฐ๊ธฐ ์ž‘์—…์— ํฌ๊ธฐ๊ฐ€ XNUMX์ธ ํŒจํ‚ท์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
EOF ์กฐ๊ฑด์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์ฃผ์†Œ์˜ ์ฑ„๋„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” UDP์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋ฐ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํ”„๋กœํ† ์ฝœ. ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ netcat ๋ฐ socat์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
null-eof.

null-eof
์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ์บฃ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์— ๋„์ฐฉํ•˜๋Š” ๋นˆ(XNUMX ํฌ๊ธฐ ํŽ˜์ด๋กœ๋“œ) ํŒจํ‚ท์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
์†Œ์ผ“์ด๋ฏ€๋กœ ํฌํŠธ ์Šค์บ” ํ›„์—๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์†Œ์บฃ ๋น„์–ด ์žˆ๋‹ค๊ณ  ํ•ด์„ํ•˜๋‹ค
EOF ํ‘œ์‹œ๊ธฐ๋กœ์„œ์˜ ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํŒจํ‚ท(shut-null ์ฐธ์กฐ)

ioctl-void=
์š”์ฒญ ๊ฐ’์„ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ, NULL์„ ์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜์—ฌ ioctl()์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด socat์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ioctl์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ioctl-int= :
์š”์ฒญ ๊ฐ’์„ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ, ์ •์ˆ˜ ๊ฐ’์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜์—ฌ ioctl()์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
์„ธ ๋ฒˆ์งธ ์ฃผ์žฅ.

ioctl-intp= :
๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์š”์ฒญ ๊ฐ’๊ณผ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ioctl()์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ •์ˆ˜ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ioctl-bin= :
์š”์ฒญ ๊ฐ’์„ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ฃผ์–ด์ง„ ๊ฐ’์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ioctl()์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ๊ฐ’์„ ์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ์— ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜•ํƒœ.

ioctl-๋ฌธ์ž์—ด= :
์š”์ฒญ ๊ฐ’์„ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ฃผ์–ด์ง„ ๊ฐ’์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ioctl()์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด์„ ์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ˜•ํƒœ.

NAMED ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž, ๊ทธ๋ฃน ๋ฐ ๋ชจ๋“œ ์˜ต์…˜๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉ์ž-์ดˆ๊ธฐ=
๋ณ€๊ฒฝ (์†Œ์œ ์ž) ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์ „์—
chown() ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ์ด ํ˜ธ์ถœ์—๋Š” ๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฃน-์ดˆ๊ธฐ=
๋ณ€๊ฒฝ chown()์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์ „์—
์‹œ์Šคํ…œ ํ˜ธ์ถœ. ์ด ํ˜ธ์ถœ์—๋Š” ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ ๋˜๋Š” ๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ๋งˆ-์ดˆ๊ธฐ=
๋ณ€๊ฒฝ [mode_t] ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ
chmod() ์‹œ์Šคํ…œ ํ˜ธ์ถœ. ์ด ํ˜ธ์ถœ์—๋Š” ์†Œ์œ ๊ถŒ์ด๋‚˜ ๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋งˆ์Šคํฌ=
ํ”„๋กœ์„ธ์Šค์˜ umask๋ฅผ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [mode_t] ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์ „
ํ•ญ๋ชฉ(UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค!) ์ด ์ „ํ™”๋Š” ์•ž์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์˜ ์šด์˜ ์†Œ์บฃ ๋ฐฉ๋ฒ•!

์—ฐ๊ฒฐ ํ•ด์ œ - ์กฐ๊ธฐ
ํŒŒ์ผ์„ ์—ด๊ธฐ ์ „, ์‹ฌ์ง€์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์กฐ๊ธฐ์— ์ ์šฉํ•˜๊ธฐ ์ „์—๋„ ํŒŒ์ผ ๋งํฌ๋ฅผ ํ•ด์ œ(์ œ๊ฑฐ)ํ•ฉ๋‹ˆ๋‹ค.
๋“ฑ

ํ’€๋ฆฌ๋‹ค ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์ „, ์‚ฌ์šฉ์ž ์ดˆ๊ธฐ ๋“ฑ ์ดํ›„์— ํŒŒ์ผ ๋งํฌ๋ฅผ ํ•ด์ œ(์ œ๊ฑฐ)ํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ํ•ด์ œ ์ง€์—ฐ
๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋„๋ก ํŒŒ์ผ์„ ์—ฐ ํ›„ ๋งํฌ๋ฅผ โ€‹โ€‹ํ•ด์ œ(์ œ๊ฑฐ)ํ•ฉ๋‹ˆ๋‹ค.
์งง์€ ๊ฒฝ์Ÿ ์กฐ๊ฑด ํ›„์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ํ•ด์ œ-๋‹ซ๊ธฐ
์ฃผ์†Œ๋ฅผ ๋‹ซ์„ ๋•Œ ์ฃผ์†Œ ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ช…๋œ ํŒŒ์ดํ”„์˜ ๊ฒฝ์šฐ
์œ ๋‹‰์Šค ๋„๋ฉ”์ธ ์†Œ์ผ“๊ณผ pty ์ฃผ์†Œ์˜ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์ˆ˜์‹ , ๊ธฐ๋ณธ๊ฐ’
1์ด๋‹ค; ์ƒ์„ฑ๋œ ํŒŒ์ผ, ์—ด๋ฆฐ ํŒŒ์ผ, ์ผ๋ฐ˜ ์—ด๋ฆฐ ํŒŒ์ผ ๋ฐ ํด๋ผ์ด์–ธํŠธ Unix ๋„๋ฉ”์ธ์˜ ๊ฒฝ์šฐ
์†Œ์ผ“์˜ ๊ธฐ๋ณธ๊ฐ’์€ 0์ž…๋‹ˆ๋‹ค.

๊ณต์„ ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

OPEN ๊ทธ๋ฃน ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด open() ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋กœ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: ์˜ต์…˜
`creat'๋Š” O_CREAT ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ์ถ”๊ฐ€ ๋ฐ ๋น„์ฐจ๋‹จ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐฝ์กฐ=
ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค(์˜ˆ).

dsync=
๋ฉ”ํƒ€์ •๋ณด๊ฐ€ ๋ฏธ๋””์–ด์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ธฐ๋ก๋  ๋•Œ๊นŒ์ง€ write() ํ˜ธ์ถœ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

์ œ์™ธ=
creat ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ์ด ์กด์žฌํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ=
32๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” 2^31๋ฐ”์ดํŠธ๋ณด๋‹ค ํฐ ํŒŒ์ผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ
์ฝ๊ธฐ ์‹œ ์•ก์„ธ์Šค ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก O_NOATIME ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋…นํ‹ฐ=
์ด ํŒŒ์ผ์„ ์ œ์–ด ํ„ฐ๋ฏธ๋„๋กœ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ฅด์ง€ ์•Š์Œ=
์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

nshare=
์ด ํŒŒ์ผ์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

rshare=
๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์“ฐ๊ธฐ ์œ„ํ•ด ์ด ํŒŒ์ผ์„ ์—ฌ๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

rsync=
๋ฉ”ํƒ€์ •๋ณด๊ฐ€ ๋ฏธ๋””์–ด์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ธฐ๋ก๋  ๋•Œ๊นŒ์ง€ write()๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

๋™๊ธฐํ™”=
๋ฐ์ดํ„ฐ๊ฐ€ ๋ฏธ๋””์–ด์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ธฐ๋ก๋  ๋•Œ๊นŒ์ง€ write()๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

rdonly=
์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.

์ž˜๋ชป=
์“ฐ๊ธฐ ์ „์šฉ์œผ๋กœ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.

์ž๋ฅด๊ธฐ ํŒŒ์ผ์„ ์—ฌ๋Š” ๋™์•ˆ ํŒŒ์ผ์„ ํฌ๊ธฐ 0์œผ๋กœ ์ž๋ฆ…๋‹ˆ๋‹ค.

REG ๊ณผ BLK ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ UN*X ํŒŒ์ผ ์„ค๋ช…์ž์— ์ ์šฉ๋˜์ง€๋งŒ ํ•ด๋‹น ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋žœ๋ค ์•ก์„ธ์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ํŒŒ์ผ์—์„œ๋งŒ ๊ฐ์ง€๋ฉ๋‹ˆ๋‹ค.

์ถ”๊ตฌ=
lseek(fd, , SEEK_SET) (๋˜๋Š” lseek64 ) ์‹œ์Šคํ…œ ํ˜ธ์ถœ, ๋”ฐ๋ผ์„œ
ํŒŒ์ผ ํฌ์ธํ„ฐ๋ฅผ ์ ˆ๋Œ€์ ์œผ๋กœ ์œ„์น˜ ์ง€์ • [off_t ๋˜๋Š” off64_t]. ์ฐธ๊ณ ํ•˜์„ธ์š”
๋ˆ„๋ฝ๋œ ๊ฐ’์˜ ๊ธฐ๋ณธ๊ฐ’์€ 1์ด ์•„๋‹Œ 0์ž…๋‹ˆ๋‹ค.

ํƒ์ƒ‰-ํ˜„์žฌ=
lseek(fd, , SEEK_CUR) (๋˜๋Š” lseek64 ) ์‹œ์Šคํ…œ ํ˜ธ์ถœ, ๋”ฐ๋ผ์„œ
ํŒŒ์ผ ํฌ์ธํ„ฐ ์œ„์น˜ ์ง€์ • [off_t ๋˜๋Š” off64_t] ๋ฐ”์ดํŠธ๋ฅผ ์ƒ๋Œ€์ ์œผ๋กœ
ํ˜„์žฌ ์œ„์น˜(๋ณดํ†ต 0)์ž…๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ ๊ฐ’์˜ ๊ธฐ๋ณธ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
1์ด ์•„๋‹ˆ๋ผ 0์ž…๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ๋=
lseek(fd, , SEEK_END) (๋˜๋Š” lseek64 ) ์‹œ์Šคํ…œ ํ˜ธ์ถœ, ๋”ฐ๋ผ์„œ
ํŒŒ์ผ ํฌ์ธํ„ฐ ์œ„์น˜ ์ง€์ • [off_t ๋˜๋Š” off64_t] ๋ฐ”์ดํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ
ํŒŒ์ผ์ด ํ˜„์žฌ ๋๋‚ฉ๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ ๊ฐ’์˜ ๊ธฐ๋ณธ๊ฐ’์€ 1์ด ์•„๋‹Œ 0์ž…๋‹ˆ๋‹ค.

ftruncate=
ftruncate(fd, ) (๋˜๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ftruncate64) ์‹œ์Šคํ…œ ํ˜ธ์ถœ, ๋”ฐ๋ผ์„œ
ํ•ด๋‹น ์œ„์น˜์—์„œ ํŒŒ์ผ ์ž๋ฅด๊ธฐ [off_t ๋˜๋Š” off64_t]. ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค
๋ˆ„๋ฝ๋œ ๊ฐ’์˜ ๊ธฐ๋ณธ๊ฐ’์€ 1์ด ์•„๋‹Œ 0์ž…๋‹ˆ๋‹ค.

๋น„๋ฐ€=

ํ•ด์ œ=

๋น„๊ต=

ext2-๋™๊ธฐํ™”=

๋ถˆ๋ณ€=

ext2-์ถ”๊ฐ€=

๋…ธ๋ค=

ext2-noatime=

์ €๋„ ๋ฐ์ดํ„ฐ=

์•Œ๋ฆผ=

๋””๋ ‰ํ„ฐ๋ฆฌ ๋™๊ธฐํ™”=
์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ์šด์˜ ์ฒด์ œ ๋ฐ ํŒŒ์ผ์˜ ๋น„ํ‘œ์ค€ ํŒŒ์ผ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
ext2fs, ext3fs ๋˜๋Š” reiserfs๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Linux์™€ ๊ฐ™์ด ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ์‹œ์Šคํ…œ.
์ด๋Ÿฌํ•œ ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ man 1 chattr์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์„ธ์š”
ํŒŒ์ผ ์ƒ์„ฑ๊ณผ ์ด๋Ÿฌํ•œ ์˜ต์…˜ ์ ์šฉ ์‚ฌ์ด์˜ ๊ฒฝ์Ÿ ์กฐ๊ฑด.

๋ฐฉ๋ฒ• ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด ๊ทธ๋ฃน์˜ ์˜ต์…˜์€ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋Œ€์‹  ํ”„๋กœ์„ธ์Šค ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
์ฑ„๋„. EXEC ๋ฐ SYSTEM ์ฃผ์†Œ์™€ LISTEN ๋ฐ CONNECT ์œ ํ˜• ์ฃผ์†Œ์˜ ๊ฒฝ์šฐ
FORK ์˜ต์…˜์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ๊ธฐ๋ณธ socat ํ”„๋กœ์„ธ์Šค ๋Œ€์‹  ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

chroot=
chroot() ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ฃผ์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„
(์˜ˆ). ์ด ํ˜ธ์ถœ์—๋Š” ๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

chroot-์ดˆ๊ธฐ=
chroot() ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ฃผ์†Œ๋ฅผ ์—ด๊ธฐ ์ „์— ์ด ํ†ตํ™”
๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์ • ID=
๊ธฐ๋ณธ ๋ณ€๊ฒฝ ์ฃผ์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„์˜ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์ด ํ†ตํ™”
๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ๋‹ค๋ฅธ ์˜ต์…˜์„ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฃน ๊ด€๋ จ ๊ถŒํ•œ.

setgid-์ดˆ๊ธฐ=
setgit๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์ฃผ์†Œ๋ฅผ ์—ด๊ธฐ ์ „์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

setuid=
๋ณ€๊ฒฝ (์†Œ์œ ์ž) ์ฃผ์†Œ ์ฒ˜๋ฆฌ ํ›„ ํ”„๋กœ์„ธ์Šค์˜. ์ด ํ†ตํ™”
๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ๊ทธ๋ฃน์„ ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ด€๋ จ ํŠน๊ถŒ. ์˜ต์…˜ su๊ฐ€ ๊ท€ํ•˜์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋” ์ž˜ ๋งž๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

setuid-์ดˆ๊ธฐ=
setuid์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์ฃผ์†Œ๋ฅผ ์—ด๊ธฐ ์ „์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

์ˆ˜=
๋ณ€๊ฒฝ (์†Œ์œ ์ž) ๋ฐ ์ฃผ์†Œ ์ฒ˜๋ฆฌ ํ›„ ํ”„๋กœ์„ธ์Šค์˜ ๊ทธ๋ฃน
(์˜ˆ). ์ด ํ˜ธ์ถœ์—๋Š” ๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

su-d=
substuser-delayed์˜ ์งง์€ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ (์†Œ์œ ์ž) ๋ฐ ๊ทธ๋ฃน
์ฃผ์†Œ ์ฒ˜๋ฆฌ ํ›„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค(์˜ˆ). ์‚ฌ์šฉ์ž์™€ ๊ทธ์˜ ๊ทธ๋ฃน์€
๊ฒ€์ƒ‰๋œ ์ „์— ๊ฐ€๋Šฅํ•œ chroot() . ์ด ํ˜ธ์ถœ์—๋Š” ๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

setpgid=
ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง€์ •๋œ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. . ๊ฐ’์ด ์—†์œผ๋ฉด
์ฃผ์–ด์ง€๊ฑฐ๋‚˜, ๊ฐ’์ด 0 ๋˜๋Š” 1์ด๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” ์ƒˆ ํ”„๋กœ์„ธ์Šค์˜ ๋ฆฌ๋”๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.

์„ธํŠธ์‹œ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒˆ ์„ธ์…˜์˜ ๋ฆฌ๋”๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค(์˜ˆ).

์ฝ๊ธฐ ๋ผ์ธ ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

๋ผ์ด์„ผ์Šค ์ œํ•œ์œผ๋กœ ์ธํ•ด ๋ฐ๋น„์•ˆ์—์„œ๋Š” readline ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(BUGS ์ฐธ์กฐ).
์ด ์˜ต์…˜์€ readline ์ฃผ์†Œ ์œ ํ˜•์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์—ญ์‚ฌ=
๊ธฐ๋ก์„ ์ฝ๊ณ  ์”๋‹ˆ๋‹ค. (์˜ˆ).

๊ฐ‘์ž๊ธฐ
๋ฒ„์ „ 1.4.0๋ถ€ํ„ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ socat๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฒฐ์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
readline ํ˜ธ์ถœ๋กœ ์ „๋‹ฌ - ๋งˆ์ง€๋ง‰ ๋ถˆ์™„์ „ํ•œ ์ค„์„ ๊ธฐ์–ตํ•˜์—ฌ
์‚ฐ์ถœ. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด socat์€ readline์— ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
ํ„ฐ๋ฏธ๋„์˜ ์ฒซ ๋ฒˆ์งธ ์—ด์—์„œ ์ค„ ํŽธ์ง‘.

๋…ธ์—์ฝ”=
๋‹ค์Œ ์ž…๋ ฅ ๋ผ์ธ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ์˜ ์ผ๋ฐ˜ ํŒจํ„ด์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  ๊ธฐ๋ก์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋กฌํ”„ํŠธ
๊ฐ€์žฅ ์ตœ๊ทผ์˜ readline ์ฃผ์†Œ ์ดํ›„์— ์ถœ๋ ฅ๋œ ํ…์ŠคํŠธ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.
๊ฐœํ–‰ ๋ฌธ์ž ๋ฐ ์ž…๋ ฅ ๋ฌธ์ž๊ฐ€ ์ž…๋ ฅ๋˜๊ธฐ ์ „. ํŒจํ„ด์€ ๊ทœ์น™์ ์ด๋‹ค
ํ‘œํ˜„์‹(์˜ˆ: "^[Pp]assword:.*$" ๋˜๋Š” "([Uu]ser:|[Pp]assword:)"). ์ •๊ทœ์‹ ๋ณด๊ธฐ\(7)
์ž์„ธํ•œ ๋‚ด์šฉ์€. (์˜ˆ)

ํ”„๋กฌํ”„ํŠธ=
๋ฌธ์ž์—ด์„ readline ํ•จ์ˆ˜์— ํ”„๋กฌํ”„ํŠธ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. readline์€ ์ด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค
์—ญ์‚ฌ๋ฅผ ๋ฐŸ์„ ๋•Œ. ์ด ๋ฌธ์ž์—ด์ด ๋ฐœํ–‰๋œ ์ง€์†์ ์ธ ํ”„๋กฌํ”„ํŠธ์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ
๋‹ค๋ฅธ socat ์ฃผ์†Œ์˜ ๋Œ€ํ™”ํ˜• ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ์ผ๊ด€๋œ ๋ชจ์–‘๊ณผ ๋Š๋‚Œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณด๊ด€๋ฉ๋‹ˆ๋‹ค.

์‹ ์ฒญ ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด ๊ทธ๋ฃน์—๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ค€์—์„œ ์ž‘๋™ํ•˜๋Š” ์˜ต์…˜์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
socat์— ์˜ํ•ด ์ „์†ก๋œ "์›์‹œ" ๋ฐ์ดํ„ฐ์—๋Š” ์žˆ์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์†Œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ ๋ฐ์ดํ„ฐ์—๋Š” ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋Œ€๋ฆฌ.

cr ๊ธฐ๋ณธ ์ค„ ์ข…๋ฃŒ ๋ฌธ์ž NL('\n', 0x0a)์„ CR('\r',
0x0d) ์ด ์ฑ„๋„์— ์“ฐ๊ธฐ/์ฝ๊ธฐ ์‹œ.

crnl ๊ธฐ๋ณธ ์ค„ ์ข…๋ฃŒ ๋ฌธ์ž NL('\n', 0x0a)์„ CRNL๋กœ/์—์„œ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
("\r\n", 0x0d0a) ์ด ์ฑ„๋„์—์„œ ์“ฐ๊ธฐ/์ฝ๊ธฐ ์‹œ(์˜ˆ). ์ฐธ๊ณ : ์†Œ์บฃ
๋‹จ์ˆœํžˆ ๋ชจ๋“  CR ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์‹œํ•˜๋‹ค
์ด ์ฑ„๋„์—์„œ EOF๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์†Œ์บฃ ์ด๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ:
"tail -f")(์˜ˆ).

์ฝ๊ธฐ๋ฐ”์ดํŠธ=
์†Œ์บฃ ์ด ์ฃผ์†Œ์—์„œ ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ”์ดํŠธ๋งŒ ์ฝ์Šต๋‹ˆ๋‹ค(์ฃผ์†Œ๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ”์ดํŠธ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค).
๋ฐ”์ดํŠธ๋ฅผ ์ „์†กํ•˜๊ณ  ๋‚˜์ค‘์— EOF์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ€์žฅํ•ฉ๋‹ˆ๋‹ค). 0๋ณด๋‹ค ์ปค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž ๊ธˆ ํŒŒ์ผ=
์ž ๊ธˆ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. lockfile์ด ์—†์œผ๋ฉด ์ƒ์„ฑํ•˜๊ณ 
๊ณ„์†ํ•ด์„œ ์ข…๋ฃŒ ์‹œ ์ž ๊ธˆ ํŒŒ์ผ์˜ ๋งํฌ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๊ธฐ์ž ๊ธˆ=
์ž ๊ธˆ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ์‚ฌ๋ผ์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ž ๊ธˆํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ,
๊ทธ๊ฒƒ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ณ„์†ํ•ด์„œ ์ข…๋ฃŒ ์‹œ ์ž ๊ธˆ ํŒŒ์ผ์˜ ๋งํฌ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

ํƒˆ์ถœ=
์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์—์„œ EOF๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฌธ์ž์˜ ์ˆซ์ž ์ฝ”๋“œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ
์›์‹œ ๋ชจ๋“œ์˜ ํ„ฐ๋ฏธ๋„์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ).

์†Œ์ผ“ ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ IP ๋˜๋Š” UNIX ๋„๋ฉ”์ธ๊ณผ ๊ฐ™์€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์†Œ์ผ“์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์€
setockopt() ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ฐ”์ธ๋”ฉ=
๋ฐ”์ธ๋”ฉ() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ผ“์„ ์ง€์ •๋œ ์†Œ์ผ“ ์ฃผ์†Œ์— ๋ฐ”์ธ๋”ฉํ•ฉ๋‹ˆ๋‹ค. ํ˜•ํƒœ
~์˜ ์†Œ์ผ“ ๋„๋ฉ”์ธ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. IP4 ๋ฐ IP6์€ ๋‹ค์Œ ํ˜•์‹์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
[ํ˜ธ์ŠคํŠธ ์ด๋ฆ„|ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ][:(์„œ๋น„์Šค|ํฌํŠธ)] (์˜ˆ), UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์—๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
.

์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ=
๋‹ค์Œ ์ดํ›„์— ์—ฐ๊ฒฐ ์‹œ๋„๋ฅผ ์ค‘๋‹จํ•˜์„ธ์š”. [timeval] ์˜ค๋ฅ˜ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

so-bindtodevice=
์†Œ์ผ“์„ ์ฃผ์–ด์ง„ ๊ฒƒ์— ๋ฐ”์ธ๋“œํ•ฉ๋‹ˆ๋‹ค. . ์ด ์˜ต์…˜์—๋Š” ๋ฃจํŠธ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠน๊ถŒ.

๋ฐฉ์†ก
๋ฐ์ดํ„ฐ๊ทธ๋žจ ์†Œ์ผ“์˜ ๊ฒฝ์šฐ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ฃผ์†Œ๋กœ ์ „์†ก ๋ฐ ํŒจํ‚ท ์ˆ˜์‹ ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ฃผ์†Œ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊ทธ ์†Œ์ผ“ ๋””๋ฒ„๊น…์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋ฃจํŠธ๋ฅผ ํƒ€์ง€ ์•Š๋Š”๋‹ค
์ง์ ‘ ์—ฐ๊ฒฐ๋œ ํ”ผ์–ด์™€๋งŒ ํ†ต์‹ ํ•˜๊ณ  ๋ผ์šฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ด์•„ ์œ ์ง€
์†Œ์ผ“์—์„œ Keepalive ์ „์†ก์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋จธ๋ญ‡๊ฑฐ๋ฆฌ๋‹ค=
๋ฐ์ดํ„ฐ ์ „์†ก์ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ง€์ •๋œ ์‹œ๊ฐ„์ด ๋  ๋•Œ๊นŒ์ง€ shutdown() ๋˜๋Š” close()๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.
์‹œ๊ฐ„ ์ดˆ๊ณผ [int]๊ฐ€ ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋นˆ๋ฆฐ
์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์— ๋Œ€์—ญ ์™ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.

์šฐ์„ ์ˆœ์œ„=
์ •์˜๋œ ํ”„๋กœํ† ์ฝœ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [ ] ๋‚˜๊ฐ€๋Š” ํŒจํ‚ท์˜ ๊ฒฝ์šฐ.

rcvbuf=
์†Œ์ผ“() ํ˜ธ์ถœ ํ›„ ์ˆ˜์‹  ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜]. ์™€ ํ•จ๊ป˜
TCP ์†Œ์ผ“์—์„œ ์ด ๊ฐ’์€ ์†Œ์ผ“์˜ ์ตœ๋Œ€ ์ฐฝ ํฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

rcvbuf-๋Šฆ๊ฒŒ=
์†Œ์ผ“์ด ์ด๋ฏธ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„ ๋•Œ ์ˆ˜์‹  ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
[์ •์ˆ˜]. TCP ์†Œ์ผ“์˜ ๊ฒฝ์šฐ ์ด ๊ฐ’์€ ์†Œ์ผ“์˜ ์ตœ๋Œ€ ์ฐฝ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
ํฌ๊ธฐ.

rcvlowat=
์†Œ์ผ“ ๊ณ„์ธต์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ˆ˜์‹ ๋œ ๋ฐ”์ดํŠธ์˜ ์ตœ์†Œ ์ˆ˜[int]๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
๋ฒ„ํผ๋ง๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์บฃ.

rcvtimeo=
์ˆ˜์‹  ์‹œ๊ฐ„ ์ œํ•œ [timeval]์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์žฌ์‚ฌ์šฉ ์ฃผ์†Œ
๋‹ค๋ฅธ ์†Œ์ผ“์ด ์ฃผ์†Œ์˜ ์ผ๋ถ€์ผ์ง€๋ผ๋„ ์ฃผ์†Œ์— ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋กœ์ปฌ
ํฌํŠธ)๋Š” ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. ์†Œ์บฃ (์˜ˆ).

sndbuf=
์†Œ์ผ“() ํ˜ธ์ถœ ํ›„ ์ „์†ก ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜].

sndbuf-late=
์†Œ์ผ“์ด ์—ฐ๊ฒฐ๋  ๋•Œ ์ „์†ก ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜].

sndlowat=
์†Œ์ผ“ ๊ณ„์ธต์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ „์†ก ๋ฒ„ํผ์˜ ์ตœ์†Œ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋ณด๋‚ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. [์ •์ˆ˜].

sndtimeo=
์ „์†ก ์‹œ๊ฐ„ ์ œํ•œ์„ ์ดˆ[timeval]๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

pf=
์ง€์ •๋œ IP ๋ฒ„์ „ ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ญ”๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค
"ip4"๋‚˜ "ip6" ๊ฐ™์€ ๊ฑฐ์ฃ . ๊ฒฐ๊ณผ ๊ฐ’์€ ์†Œ์ผ“()์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
๋˜๋Š” ์†Œ์ผ“์Œ() ํ˜ธ์ถœ. ์ด ์˜ต์…˜์€ ์ฃผ์†Œ ํ™•์ธ ๋ฐ ํ•„์ˆ˜ ์‚ฌํ•ญ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
๋ฐ”์ธ๋“œ ๋ฐ ๋ฒ”์œ„ ์˜ต์…˜์˜ ๊ตฌ๋ฌธ.

์œ ํ˜•=
์†Œ์ผ“()์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ง€์ •๋œ ์†Œ์ผ“ ์œ ํ˜•์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์†Œ์ผ“์Œ() ํ˜ธ์ถœ, [์ •์ˆ˜]. ์ฃผ์†Œ ํ™•์ธ์€ ์ด์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์˜ต์…˜. Linux์—์„œ 1์€ ์ŠคํŠธ๋ฆผ ์ง€ํ–ฅ ์†Œ์ผ“์„ ์˜๋ฏธํ•˜๊ณ , 2๋Š” ๋ฐ์ดํ„ฐ๊ทธ๋žจ ์†Œ์ผ“์„ ์˜๋ฏธํ•˜๋ฉฐ,
3์€ ์›์‹œ ์†Œ์ผ“์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœํ†  ํƒ€์ž…
์†Œ์ผ“()์˜ ์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ง€์ •๋œ ์†Œ์ผ“์˜ ํ”„๋กœํ† ์ฝœ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์†Œ์ผ“์Œ() ํ˜ธ์ถœ, [์ •์ˆ˜]. ์ฃผ์†Œ ํ™•์ธ์€ ๋‹ค์Œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด ์˜ต์…˜. 6์€ TCP, 17์€ UDP๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํƒ€์ž„์Šคํƒฌํ”„
SO_TIMESTAMP ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํƒ€์ž„์Šคํƒฌํ”„ ๋ณด์กฐ ๋ฉ”์‹œ์ง€.

setockopt-int= : :
์ง€์ •๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์ผ“์— ๋Œ€ํ•ด setockopt()๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ๋ฒจ [int]๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค
setockopt()์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ๋ ˆ์ด์–ด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: TCP์˜ ๊ฒฝ์šฐ SOL_TCP(6)
Linux์˜ ๊ฒฝ์šฐ) ๋˜๋Š” ์†Œ์ผ“ ๊ณ„์ธต์˜ ๊ฒฝ์šฐ SOL_SOCKET(Linux์˜ ๊ฒฝ์šฐ 1). optname [int]๋Š”
setockopt()์˜ ์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜์ด๋ฉฐ ์–ด๋–ค ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ• ์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์— ๋Œ€ํ•œ
์‹ค์ œ ์ˆซ์ž๋Š” ๊ท€ํ•˜์˜ ์ ์ ˆํ•œ ํฌํ•จ ํŒŒ์ผ์„ ์ฐพ์•„์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒด๊ณ„. ๋„ค ๋ฒˆ์งธ setockopt() ๋งค๊ฐœ๋ณ€์ˆ˜์ธ ๊ฐ’ [int]๊ฐ€ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
ํฌ์ธํ„ฐ์ด๋ฉฐ, ๊ธธ์ด ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ sizeof\(int)๊ฐ€ ์•”์‹œ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

setockopt-bin= : :
setockopt-int์™€ ๋น„์Šทํ•˜์ง€๋งŒ dalan ํ˜•์‹์œผ๋กœ ์ œ๊ณต๋˜์–ด์•ผ ํ•˜๋ฉฐ ๋‹ค์Œ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ž„์˜์˜ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค; ๊ธธ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ์—์„œ ์ž๋™์œผ๋กœ ํŒŒ์ƒ๋ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.

setockopt-๋ฌธ์ž์—ด= : :
setockopt-int์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ž์—ด์€
ํ›„ํ–‰ null ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ํ•จ์ˆ˜์ด๋ฉฐ ๊ธธ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ž๋™์œผ๋กœ
๋ฐ์ดํ„ฐ์—์„œ ํŒŒ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

UNIX ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ UNIX ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์ฃผ์†Œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์œ ๋‹‰์Šค-tightsocklen=[0|1]
์†Œ์ผ“ ์ž‘์—… ์‹œ ์ „์ฒด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์†Œ์ผ“ ์ฃผ์†Œ ๊ธธ์ด๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
struct sockaddr_un ๋ ˆ์ฝ”๋“œ์ด์ง€๋งŒ (๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ ์™ธ์—) ๊ด€๋ จ ๋ถ€๋ถ„๋งŒ
ํŒŒ์ผ ์ด๋ฆ„ ๋˜๋Š” ์ถ”์ƒ ๋ฌธ์ž์—ด. ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

IP4 ๊ณผ IP6 ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ IPv4 ๋ฐ IPv6 ๊ธฐ๋ฐ˜ ์†Œ์ผ“๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ† ์Šค=
๋‚˜๊ฐ€๋Š” ํŒจํ‚ท์˜ TOS(์„œ๋น„์Šค ์œ ํ˜•) ํ•„๋“œ๋ฅผ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [๋ฐ”์ดํŠธ](RFC ์ฐธ์กฐ
791).

ttl=
๋‚˜๊ฐ€๋Š” ํŒจํ‚ท์˜ TTL(Time To Live) ํ•„๋“œ๋ฅผ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [๋ฐ”์ดํŠธ].

IP ์˜ต์…˜=
์†Œ์Šค ๋ผ์šฐํŒ…๊ณผ ๊ฐ™์€ IP ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์œผ๋กœ ์ œ๊ณต๋˜์–ด์•ผ ํ•˜๋ฉฐ ๊ถŒ์žฅ๋จ
ํ˜•์‹์€ "x"๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๊ทธ ๋’ค์— ์ง์ˆ˜ ๊ฐœ์˜ XNUMX์ง„์ˆ˜๊ฐ€ ์˜ต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€
์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์„ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ 10.0.0.1์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด
๋Š์Šจํ•œ ์†Œ์Šค ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ถ€ ๊ฒŒ์ดํŠธ์›จ์ด์˜ ๊ฒฝ์šฐ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์ฃผ์†Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ณ 
ip-options=x8307040a000001 ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Š์Šจํ•œ ์†Œ์Šค ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.
IP ์˜ต์…˜์€ RFC 791์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

mtudiscover=<0|1|2>
์ด ์†Œ์ผ“์—์„œ ๊ฒฝ๋กœ MTU ๊ฒ€์ƒ‰์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ•ญ์ƒ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 0, 1, 2๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

IP-PKT์ •๋ณด
IP_PKTINFO ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณด์กฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋Œ€์ƒ ์ฃผ์†Œ์™€ ์ธํ„ฐํŽ˜์ด์Šค(Linux)๊ฐ€ ํฌํ•จ๋œ ๋ฉ”์‹œ์ง€(์˜ˆ)

IP ๋ณต๊ตฌ
IP_RECVERR ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณด์กฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž์„ธํ•œ ์˜ค๋ฅ˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค.

IP-Recvopts
IP_RECVOPTS ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด IP ์ˆ˜์‹  ๋ฐ ๋กœ๊น…์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
์˜ต์…˜ ๋ณด์กฐ ๋ฉ”์‹œ์ง€(Linux, *BSD).

IP-Recvtos
IP_RECVTOS ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด TOS(์œ ํ˜•
์„œ๋น„์Šค) ๋ณด์กฐ ๋ฉ”์‹œ์ง€(Linux).

IP-recvttl
IP_RECVTTL ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด TTL(์‹œ๊ฐ„)์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
to live) ๋ณด์กฐ ๋ฉ”์‹œ์ง€(Linux, *BSD).

IP-recvdstaddr
IP_RECVDSTADDR ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋Œ€์ƒ ์ฃผ์†Œ(*BSD)๊ฐ€ ํฌํ•จ๋œ ๋ณด์กฐ ๋ฉ”์‹œ์ง€(์˜ˆ)

IP-Recvif
IP_RECVIF ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ธํ„ฐํŽ˜์ด์Šค ์ˆ˜์‹  ๋ฐ ๋กœ๊น…์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
๋ณด์กฐ ๋ฉ”์‹œ์ง€(*BSD)(์˜ˆ)

IP-์ถ”๊ฐ€-๋ฉค๋ฒ„์‹ญ=

IP-์ถ”๊ฐ€-๋ฉค๋ฒ„์‹ญ=

IP-์ถ”๊ฐ€-๋ฉค๋ฒ„์‹ญ=

IP-์ถ”๊ฐ€-๋ฉค๋ฒ„์‹ญ=

IP-์ถ”๊ฐ€-๋ฉค๋ฒ„์‹ญ=
์ง€์ •๋œ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ๊ทธ๋ฃน์˜ ์†Œ์ผ“ ๊ตฌ์„ฑ์›์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” ์ด๊ฒƒ๋ฟ์ด๋‹ค
IPv4์šฉ์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ๊ทธ๋ฃน์˜ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ 
์›ํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ตฌ๋ฌธ์€ ์ฒซ ๋ฒˆ์งธ ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋‚˜๋จธ์ง€๋Š” struct mreqn(Linux)์„ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ์„ฑ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ƒ‰์ธ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์นธ.

IP-๋ฉ€ํ‹ฐ์บ์ŠคํŠธ-if=
๋ฉ€ํ‹ฐ์บ์ŠคํŠธ์— ์‚ฌ์šฉํ•  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋˜๋Š” ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
๊ตํ†ต.

IP-๋ฉ€ํ‹ฐ์บ์ŠคํŠธ-๋ฃจํ”„=
๋‚˜๊ฐ€๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ํŠธ๋ž˜ํ”ฝ์ด ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฃจํ”„๋ฐฑ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

IP-๋ฉ€ํ‹ฐ์บ์ŠคํŠธ-ttl=
๋‚˜๊ฐ€๋Š” ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ํŠธ๋ž˜ํ”ฝ์— ์‚ฌ์šฉ๋˜๋Š” TTL์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋””๋ฒ„๊ทธ

res-aa๋งŒ

res-usevc

res-primary

์žฌ์ ํ™”

์žฌ๊ท€

res-defnames

res-stayopen

res-dnsrch
์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ํ•ด๋‹น ํ™•์ธ์ž(์ด๋ฆ„ ํ™•์ธ) ์˜ต์…˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ์˜ต์…˜์„ ์ง€์šฐ๋ ค๋ฉด "=0"์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ man ํ•ด์„๊ธฐ\(5)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
์ด๋Ÿฌํ•œ ์˜ต์…˜. ์ฐธ๊ณ : ์ด ์˜ต์…˜์€ ์ ์šฉ๋œ ์ฃผ์†Œ์—๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.
์—.

IP6 ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ IPv6 ๊ธฐ๋ฐ˜ ์†Œ์ผ“์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์€ IP ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.
IPv4 ๋ฐ IPv6 ์†Œ์ผ“ ๋ชจ๋‘์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

ipv6๋งŒ=
IPV6_V6ONLY ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 0์ด๋ฉด TCP ์Šคํƒ๋„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋™์ผํ•œ ํฌํŠธ์—์„œ IPv4 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

ipv6-recvdstopts
IPV6_RECVDSTOPTS ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋Œ€์ƒ ์˜ต์…˜์ด ํฌํ•จ๋œ ๋ณด์กฐ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค.

ipv6-recvhoplimit
IPV6_RECVHOPLIMIT ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
hoplimit๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณด์กฐ ๋ฉ”์‹œ์ง€.

ipv6-recvhoopts
IPV6_RECVHOPOPTS ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ™‰ ์˜ต์…˜์ด ํฌํ•จ๋œ ๋ณด์กฐ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค.

ipv6-recvpktinfo
IPV6_RECVPKTINFO ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋Œ€์ƒ ์ฃผ์†Œ์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณด์กฐ ๋ฉ”์‹œ์ง€.

ipv6-์œ ๋‹ˆ์บ์ŠคํŠธ-ํ™‰=๋งํฌ(TYPE_INT)( )
IPV6_UNICAST_HOPS ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ™‰ ์ˆ˜ ์ œํ•œ(TTL)์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๊ฐ€๋Š” ์œ ๋‹ˆ์บ์ŠคํŠธ ํŒจํ‚ท.

ipv6-recvrthdr
IPV6_RECVRTHDR ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ผ์šฐํŒ… ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณด์กฐ ๋ฉ”์‹œ์ง€.

IPv6-tํด๋ž˜์Šค
IPV6_TCLASS ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‚˜๊ฐ€๋Š” ์ „์†ก ํด๋ž˜์Šค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
ํŒจํ‚ท.

ipv6-recvtํด๋ž˜์Šค
IPV6_RECVTCLASS ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์Œ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋กœ๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ „์†ก ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณด์กฐ ๋ฉ”์‹œ์ง€.

TCP ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ TCP ์†Œ์ผ“์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ setockopt()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์ ์ ˆํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜.

์ฝ”๋ฅดํฌ MSS(์ตœ๋Œ€ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ)๋ณด๋‹ค ์ž‘์€ ํŒจํ‚ท์€ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฐ๊ธฐ ์ˆ˜๋ฝ
์ˆ˜์‹ ํ•˜๋Š” ๋™์•ˆ ํ”ผ์–ด๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๋งŒ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค.

์œ ์ง€CNT=
์†Œ์ผ“์„ ์ข…๋ฃŒํ•˜๊ธฐ ์ „์˜ ์—ฐ๊ฒฐ ์œ ์ง€ ์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜].

ํ‚คํผ=
์ฒซ ๋ฒˆ์งธ Keepalive๋ฅผ ๋ณด๋‚ด๊ธฐ ์ „์— ์œ ํœด ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜].

keepintvl=
๋‘ Keepalive ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์„ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜].

๋จธ๋ฌด๋ฅด๋‹ค2=
์†Œ์ผ“์„ FIN-WAIT-2 ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜].

mss=
์†Œ์ผ“() ํ˜ธ์ถœ ํ›„ MSS(์ตœ๋Œ€ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ)๋ฅผ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜]. ์ด๊ฒƒ
๊ทธ๋Ÿฐ ๋‹ค์Œ SYN ๋˜๋Š” SYN/ACK ํŒจํ‚ท(์˜ˆ)์„ ํ†ตํ•ด ๊ฐ’์ด ํ”ผ์–ด์— ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค.

mss-๋Šฆ์Œ=
์—ฐ๊ฒฐ์ด ์„ค์ •๋œ ํ›„ ์†Œ์ผ“์˜ MSS๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜].

์ง€์ฒด์—†์ด
RTT(์™•๋ณต ์‹œ๊ฐ„) ์ธก์ •์„ ์œ„ํ•œ Nagle ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋•๋‹ˆ๋‹ค.

RFC1323
RFC1323 TCP ์˜ต์…˜ ํ™œ์„ฑํ™”: TCP ์ฐฝ ํฌ๊ธฐ ์กฐ์ •, ์™•๋ณต ์‹œ๊ฐ„ ์ธก์ •(RTTM),
๋ž˜ํ•‘๋œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ(PAWS)(AIX)๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ์ค€ RFC1122 ํ˜ธํ™˜ ๊ธด๊ธ‰ ํฌ์ธํ„ฐ ์ฒ˜๋ฆฌ(AIX)๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋™๊ธฐํ™” =
์—ฐ๊ฒฐ ์ค‘ ์ตœ๋Œ€ SYN ์žฌ์ „์†ก ํšŸ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜].

md5sig ํŒจํ‚ท์—์„œ MD5 ๋‹ค์ด์ œ์ŠคํŠธ ์ƒ์„ฑ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค(FreeBSD).

๋ฉ์ฒญํ•˜๋‹ค TCP ์˜ต์…˜(FreeBSD, MacOSX) ์‚ฌ์šฉ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋…ธํ‘ธ์‰ฌ TCP_NOPUSH ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(FreeBSD, MacOSX).

์ž๋ฃจ ๋น„ํ™œ์„ฑํ™”
์„ ํƒ์  ์Šน์ธ ๊ธฐ๋Šฅ(OpenBSD) ์‚ฌ์šฉ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ช… ํ™œ์„ฑํ™”
ํŒจํ‚ท์—์„œ MD5 ๋‹ค์ด์ œ์ŠคํŠธ ์ƒ์„ฑ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค(OpenBSD).

์ค‘๋‹จ ์ž„๊ณ„๊ฐ’=
์„ค์ •๋œ ์—ฐ๊ฒฐ์—์„œ ์ƒ๋Œ€๋ฐฉ์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
(HP-UX).

conn-์ค‘๋‹จ-์ž„๊ณ„๊ฐ’=
์ตœ์ดˆ ์ ‘์† ์‹œ ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
(HP-UX).

์œ ์ง€
์—ฐ๊ฒฐ\() ๋„์ค‘ ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์‘๋‹ต์„ ๋ณด๋‚ด๋Š” ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์œ„๋กœ. ๊ฐ’์€ 150์ดˆ ๋‹จ์œ„์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ 75(64์ดˆ)(TruXNUMX)์ž…๋‹ˆ๋‹ค.

๋ฐœ "๋ž˜ํ•‘๋œ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ" ๊ธฐ๋Šฅ(Tru64)์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ผ€๋‚˜
์„ ํƒ์  ์Šน์ธ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค(Tru64).

์ดˆํ”„ํ…Œ๋‚˜
๊ธฐ์กด ์—ฐ๊ฒฐ์—์„œ RTT ์žฌ๊ณ„์‚ฐ์„ ํ—ˆ์šฉํ•˜๋Š” ํƒ€์ž„์Šคํƒฌํ”„ ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
(ํŠธ๋ฃจ64).

SCTP ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ SCTP ์ŠคํŠธ๋ฆผ ์†Œ์ผ“์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

sctp-nodelay
Nagle ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” SCTP_NODELAY ์†Œ์ผ“ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

sctp-maxseg=
SCTP_MAXSEG ์†Œ์ผ“ ์˜ต์…˜์„ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜]. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ๊ฐ’์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค.
SYN ๋˜๋Š” SYN/ACK ํŒจํ‚ท์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”ผ์–ด์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.

UDP, TCP, ๊ณผ SCTP ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์—ฌ๊ธฐ์„œ๋Š” ๋„คํŠธ์›Œํฌ ํฌํŠธ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ด€๋ จ๋œ ์˜ต์…˜์„ ์ฐพ์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
UDP, TCP, SCTP ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์†Œ์ŠคํฌํŠธ=
๋‚˜๊ฐ€๋Š”(ํด๋ผ์ด์–ธํŠธ) TCP ๋ฐ UDP ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ ์†Œ์Šค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜์—ฌ
์ถ”๊ฐ€ ๋ฐ”์ธ๋“œ() ํ˜ธ์ถœ. TCP ๋˜๋Š” UDP ์ˆ˜์‹  ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด socat๊ฐ€ ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด ์†Œ์ŠคํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์˜ ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค(์˜ˆ).

๋กœ์šฐํฌํŠธ
์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐœ์‹ (ํด๋ผ์ด์–ธํŠธ) TCP ๋ฐ UDP ์—ฐ๊ฒฐ์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์ž„์˜ ํ• ๋‹น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
640๊ณผ 1023 ์‚ฌ์ด์˜ ์†Œ์Šค ํฌํŠธ ํฌํ•จ UNIX ํด๋ž˜์Šค ์šด์˜ ์ฒด์ œ์—์„œ๋Š” ์ด
๋ฃจํŠธ ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šน์ธ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๋กœ์ปฌ ๋ฃจํŠธ๋กœ. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด TCP ๋ฐ UDP ์ˆ˜์‹  ์ฃผ์†Œ๊ฐ€ ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ๊ฐ€ sourceport <= 1023์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์—ฐ๊ฒฐ. ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€
์–ด๋–ค ์ƒํ™ฉ์—์„œ๋Š” ์ œํ•œ๋œ ๊ถŒํ•œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

SOCKS ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

SOCKS ์œ ํ˜• ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ถ€ ์–‘๋ง ๊ด€๋ จ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–‘๋งํฌํŠธ= ์„œ๋น„์Šค>
์–‘๋ง ์„œ๋ฒ„ ํฌํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ "์–‘๋ง" ์„œ๋น„์Šค ๋˜๋Š” ํฌํŠธ 1080์„ ๋‹ค์Œ์œผ๋กœ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
.

์–‘๋ง์‚ฌ์šฉ์ž=
๋ณด๋‚ธ๋‹ค ์–‘๋ง ์„œ๋ฒ„์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ•„๋“œ์˜ [๋ฌธ์ž์—ด]. ๊ธฐ๋ณธ๊ฐ’์€
์‹ค์ œ ์‚ฌ์šฉ์ž ์ด๋ฆ„($LOGNAME ๋˜๋Š” $USER)(์˜ˆ)

HTTP ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

HTTP ์œ ํ˜• ์ฃผ์†Œ์™€ ํ•จ๊ป˜ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์œ ์ผํ•œ HTTP ์ฃผ์†Œ
๊ตฌํ˜„๋œ ๊ฒƒ์€ ํ”„๋ก์‹œ ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค.

ํ”„๋ก์‹œํฌํŠธ= ์„œ๋น„์Šค>
๊ธฐ๋ณธ HTTP ํ”„๋ก์‹œ ํฌํŠธ 8080์„ ๋‹ค์Œ์œผ๋กœ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. .

๋ฌด์‹œ
HTTP ํ”„๋กœํ† ์ฝœ์—์„œ๋Š” ์ค„ ์ข…๊ฒฐ์ž๋กœ CR+NL์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ์„œ๋ฒ„์ธ ๊ฒฝ์šฐ
์ด ํ‘œ์ค€์„ ์œ„๋ฐ˜ํ•˜๋ฉด socat์ด ๋‹ต๋ณ€์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ๋‹ค์Œ์„ ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.
socat์€ NL์„ ์ค„ ์ข…๊ฒฐ์ž๋กœ ํ•ด์„ํ•˜๊ณ  ๋Œ€๋‹ต์—์„œ CR์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  socat์€ CR+NL์„ ํ”„๋ก์‹œ์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ ์ธ์ฆ= :
ํ”„๋ก์‹œ ์„œ๋ฒ„์— "๊ธฐ๋ณธ" ์ธ์ฆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์— ๋Œ€ํ•œ ์ธ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ํ˜•์‹์˜ "Proxy-Authorization: Base" ํ—ค๋”์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ : ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋กœ์ปฌ ์ปดํ“จํ„ฐ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก; ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ํ”„๋ก์‹œ ์„œ๋ฒ„๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
(base64๋กœ ์ธ์ฝ”๋”ฉ๋จ) ์Šค๋‹ˆํ•‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ
๊ธฐ๋ณธ์ ์œผ๋กœ socat๋Š” ๋Œ€์ƒ์ด ํฌํ•จ๋œ CONNECT ์š”์ฒญ์„ ํ”„๋ก์‹œ์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.
ํ˜ธ์ŠคํŠธ ์ด๋ฆ„. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด socat๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ๋กœ์ปฌ๋กœ ํ™•์ธํ•˜๊ณ  IP๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
์ฃผ์†Œ. RFC 2396์— ๋”ฐ๋ฅด๋ฉด ์ด๋ฆ„ ํ™•์ธ์€ IPv4๋กœ๋งŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
์ฃผ์†Œ๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

RANGE ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด ์˜ต์…˜์€ ์—ฐ๊ฒฐ ํด๋ผ์ด์–ธํŠธ์— ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
๋„คํŠธ์›Œํฌ ์†Œ์ผ“์„ ์ˆ˜์‹ ํ•˜๊ณ  ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. tcp-wrappers ์˜ต์…˜์ด ์ด ๊ทธ๋ฃน์— ์†ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ”์œ„=
์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•œ ํ›„ ํ”ผ์–ด๊ฐ€ ๋‚ด๋ถ€์— ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ๋ฒ”์œ„. IPv4์˜ ๊ฒฝ์šฐ
์ฃผ์†Œ, ์ฃผ์†Œ ๋ฒ”์œ„๋Š” ์ฃผ์†Œ/๋น„ํŠธ ํ˜•์‹์„ ์ทจํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: 10.0.0.0/8).
์ฃผ์†Œ:๋งˆ์Šคํฌ, ์˜ˆ: 10.0.0.0:255.0.0.0(์˜ˆ); IPv6์˜ ๊ฒฝ์šฐ
[ip6-์ฃผ์†Œ/๋น„ํŠธ], ์˜ˆ: [::1/128]. ํด๋ผ์ด์–ธํŠธ ์ฃผ์†Œ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์†Œ์บฃ
๊ฒฝ๊ณ ๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ๊ณ„์† ์ฒญ์ทจ/์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

TCP๋žฉ[= ]
Wietse Venema์˜ libwrap(tcpd) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ—ˆ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์—ฐ๊ฒฐ. ๊ตฌ์„ฑ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. /etc/hosts.allow ๊ณผ /etc/hosts.deny ์šฉ
๊ธฐ๋ณธ๊ฐ’, ์ž์„ธํ•œ ๋‚ด์šฉ์€ "man 5 ํ˜ธ์ŠคํŠธ_์•ก์„ธ์Šค"๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์„ ํƒ ์‚ฌํ•ญ (์œ ํ˜•
๋ฌธ์ž์—ด)์€ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค ์ด๋ฆ„(์˜ˆ)์œผ๋กœ ๋ž˜ํผ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ์—
์ƒ๋žตํ•˜๋ฉด socats ํ˜ธ์ถœ์˜ ๊ธฐ๋ณธ ์ด๋ฆ„(argv[0])์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค tcpwrap์ธ ๊ฒฝ์šฐ
๋ฒ”์œ„ ์˜ต์…˜์ด ์ฃผ์†Œ์— ์ ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ๋‘ ์กฐ๊ฑด์„ ๋ชจ๋‘ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ—ˆ์šฉ ํ…Œ์ด๋ธ”=
/etc/hosts.allow ๋Œ€์‹  ์ง€์ •๋œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฑฐ๋ถ€ ํ…Œ์ด๋ธ”=
/etc/hosts.deny ๋Œ€์‹  ์ง€์ •๋œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

tcpwrap-๋“ฑ=
์ง€์ •๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํ˜ธ์ŠคํŠธ.ํ—ˆ์šฉ ๋ฐ ํ˜ธ์ŠคํŠธ ๊ฑฐ๋ถ€๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์— ์˜ํ•ด ์žฌ์ •์˜๋จ
์˜ต์…˜ ํ˜ธ์ŠคํŠธ ํ—ˆ์šฉ ๋ฐ ํ˜ธ์ŠคํŠธ ๊ฑฐ๋ถ€.

๋“ค์–ด๋ด ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ฒญ์ทจ ์†Œ์ผ“๊ณผ ๊ด€๋ จ๋œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

๋ฐฑ๋กœ๊ทธ=
Listen() ์‹œ์Šคํ…œ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ ์ „๋‹ฌ๋œ ๋ฐฑ๋กœ๊ทธ ๊ฐ’์„ ๋‹ค์Œ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [์ •์ˆ˜].
๊ธฐ๋ณธ๊ฐ’์€ 5์ž…๋‹ˆ๋‹ค.

์ตœ๋Œ€ ์–ด๋ฆฐ์ด=
๋™์‹œ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ์ˆ˜ [int]๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.

์•„์ด ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ์ฃผ์†Œ์— ๋Œ€ํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

ํฌํฌ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ ํ›„ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์—์„œ ํ•ด๋‹น ์ฑ„๋„์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
์ƒ์œ„ ํ”„๋กœ์„ธ์Šค๋Š” ์ฒญ์ทจ ๋˜๋Š” ์ˆ˜์‹ ์„ ํ†ตํ•ด ๋” ๋งŽ์€ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
๋ฃจํ”„๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ(์˜ˆ์ œ)
OPENSSL-CONNECT์™€ OPENSSL-LISTEN์€ ์‹ค์ œ๋กœ ํ•˜์œ„ ํ•ญ๋ชฉ์„ ๋ถ„๊ธฐํ•  ๋•Œ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

OPENSSL-LISTEN ํฌํฌ ์ „์— SSL ํ•ธ๋“œ์…ฐ์ดํฌ, OPENSSLSSL-CONNECT ํฌํฌ
๋‚˜์ค‘์—. RETRY ๋ฐ FOREVER ์˜ต์…˜์€ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์—์„œ ์ƒ์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ผ๋ถ€ ์šด์˜ ์ฒด์ œ(์˜ˆ: FreeBSD)์—์„œ๋Š” ์ด ์˜ต์…˜์ด UDP-LISTEN์— ๋Œ€ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ตฌ์• .

EXEC ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

ํ”„๋กœ๊ทธ๋žจ์„ ํ˜ธ์ถœํ•˜๋Š” ์ฃผ์†Œ์— ๋Œ€ํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

๊ฒฝ๋กœ=
ํ”„๋กœ๊ทธ๋žจ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. .
์ด $PATH ๊ฐ’์€ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์—๋„ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ์ธ execvp() ํ˜ธ์ถœ์˜ ์ ‘๋‘์‚ฌ argv[0]์— '-'๊ฐ€ ๋ถ™์œผ๋ฏ€๋กœ ์‰˜์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋กœ๊ทธ์ธ ์‰˜.

ํฌํฌ ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

EXEC ๋˜๋Š” SYSTEM ์ฃผ์†Œ๋Š” ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ํ˜ธ์ถœํ•˜๊ณ  ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
์†Œ์บฃ ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋žจ. ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋‹ค์Œ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ์˜ต์…˜. ๊ธฐ๋ณธ์ ์œผ๋กœ ์†Œ์ผ“ ์Œ()์ด ์ƒ์„ฑ๋˜์–ด stdin ๋ฐ stdout์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ stderr์€ ์ž์‹ ํ”„๋กœ์„ธ์Šค์—์„œ ์ƒ์†๋ฉ๋‹ˆ๋‹ค. ์†Œ์บฃ ํ”„๋กœ์„ธ์Šค์™€ ์•„์ด
ํ”„๋กœ์„ธ์Šค๋Š” ๊ธฐ๋ณธ socat ํ”„๋กœ์„ธ์Šค์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ผ ์„ค๋ช…์ž 0๊ณผ 1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋…ธํฌํฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์œ„ํ•ด ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ถ„๊ธฐํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  execvp\()๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜
์‹ค์ œ socat ์ธ์Šคํ„ด์Šค์—์„œ ์ง์ ‘ system\()์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋™๋ฃŒ ๊ฐ„์˜ ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์ด์ง€๋งŒ
์ œํ•œ:

o ์ด ์˜ต์…˜์€ ๋‘ ๋ฒˆ์งธ์—๋งŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์บฃ ์ฃผ์†Œ.

o ์ด์ค‘์ฃผ์†Œ์˜ ์ผ๋ถ€์—๋Š” ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

o ์ฒซ ๋ฒˆ์งธ socat ์ฃผ์†Œ๋Š” OPENSSL ๋˜๋Š” READLINE์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

o socat ์˜ต์…˜ -b, -t, -D, -l, -v, -x๊ฐ€ ์“ธ๋ชจ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

o ๋‘ ์ฃผ์†Œ ๋ชจ๋‘์— ๋Œ€ํ•ดignoreof, cr ๋ฐ crnl ์˜ต์…˜์ด ์“ธ๋ชจ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

o ๋‘ ๋ฒˆ์งธ ์ฃผ์†Œ(nofork ์˜ต์…˜์ด ์žˆ๋Š” ์ฃผ์†Œ)์˜ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ์˜ต์…˜, cloexec,
Flock, user, group, mode, nonblock, perm-late, setlk ๋ฐ setpgid๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ ์šฉ๋œ. ํ•˜์ง€๋งŒ ์ด๋“ค ์ค‘ ์ผ๋ถ€๋Š” ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ดํ”„ ์†Œ์ผ“ ๋Œ€์‹  ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด ๋ช…๋ช…๋˜์ง€ ์•Š์€ ํŒŒ์ดํ”„ ์Œ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
ํ•œ ์Œ์ด๋‹ค.

์˜คํ”ˆํ”ผํ‹ฐ
๋‹ค์Œ์œผ๋กœ ์ƒ์„ฑ๋œ ์˜์‚ฌ ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์™€์˜ ํ†ต์‹ ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ๊ฐ’(socketpair ๋˜๋Š” ptmx) ๋Œ€์‹  openpty()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ptmx ๋‹ค์Œ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์˜์‚ฌ ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์™€์˜ ํ†ต์‹ ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์—ด๊ธฐ /dev/ptmx or /dev/ptc ๊ธฐ๋ณธ๊ฐ’(์†Œ์ผ“ ์Œ) ๋Œ€์‹ .

pty ๋Œ€์‹  ์˜์‚ฌ ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์™€์˜ ํ†ต์‹ ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์†Œ์ผ“ ์Œ. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ pty๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. openpty์™€ ptmx๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
๋‘˜ ๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ POSIX์™€ ํ˜ธํ™˜๋˜๋ฏ€๋กœ ptmx๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ).

ctty pty๋ฅผ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์˜ ์ œ์–ด tty๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค(์˜ˆ).

ํ‘œ์ค€ ์˜ค๋ฅ˜ stderr๋ฅผ dup()์œผ๋กœ ๋งŒ๋“ค์–ด ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์˜ stderr์„ ์ถœ๋ ฅ ์ฑ„๋„๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
ํ‘œ์ค€ ์ถœ๋ ฅ(์˜ˆ์ œ).

fdin=
ํŒŒ์ผ ์„ค๋ช…์ž์— ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ์ž…๋ ฅ ์ฑ„๋„์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹ ์—
ํ‘œ์ค€์ž…๋ ฅ(0). ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹œ์ž‘๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์ฝ๊ธฐ ์œ„ํ•ด ์ด fd๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ์†Œ์บฃ (์˜ˆ).

fdout=
ํŒŒ์ผ ์„ค๋ช…์ž์— ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ์ถœ๋ ฅ ์ฑ„๋„์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹ ์—
ํ‘œ์ค€ ์ถœ๋ ฅ(1). ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹œ์ž‘๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์“ฐ๊ธฐ๋ฅผ ์œ„ํ•ด ์ด fd๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ์†Œ์บฃ (์˜ˆ).

ํ•œ์ˆจ, ์„œ๋ช…, ์‹œ๊ทธํ€ดํŠธ
์žˆ๋‹ค ์†Œ์บฃ ์ด ์œ ํ˜•์˜ ์‹ ํ˜ธ๋ฅผ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ์†Œ๊ฐ€ ์—†์œผ๋ฉด
์˜ต์…˜, socat์€ ์ด๋Ÿฌํ•œ ์‹ ํ˜ธ์—์„œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ๋ฅด๋ฏธ์˜ค์Šค ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

tty์—์„œ ์ž‘๋™ํ•˜๋Š” ์ฃผ์†Œ(์˜ˆ: stdio, file:/dev/tty, exec:...,pty)์˜ ๊ฒฝ์šฐ ํ„ฐ๋ฏธ๋„
UN*X termios ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์ •์˜๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ฃผ์†Œ ์˜ต์…˜์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งค๊ฐœ๋ณ€์ˆ˜. ๋Œ€ํ™”ํ˜• ํ„ฐ๋ฏธ๋„์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ์— ์œ ์˜ํ•˜์„ธ์š”.
์ดํ›„์—๋„ ์œ ํšจํ•˜๋‹ค ์†Œ์บฃ์˜ ์ข…๋ฃŒ์ด๋ฏ€๋กœ "reset" ๋˜๋Š” "stty"๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜์ค‘์— ์…ธ์—์„œ sane"์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. PTY ์˜ต์…˜์ด ์žˆ๋Š” EXEC ๋ฐ SYSTEM ์ฃผ์†Œ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์˜ต์…˜์€ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด pty์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

b0 ํ„ฐ๋ฏธ๋„์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

b19200 ์ง๋ ฌ ํšŒ์„  ์†๋„๋ฅผ 19200๋ณด๋“œ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์š”๊ธˆ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ
socat -hh |grep ' b[1-9]' ์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ง€์›๋˜๋Š” ๋ชจ๋“  ์†๋„๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ตฌํ˜„.
์ฐธ๊ณ : ์ผ๋ถ€ ์šด์˜ ์ฒด์ œ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ispeed๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜
๋Œ€์‹  ์†๋„๋ฅผ ๋†’์ด์‹ญ์‹œ์˜ค.

์—์ฝ”=
๋กœ์ปฌ ์—์ฝ”๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ด์ฝ˜=
ํ‘œ์ค€ ๋ชจ๋“œ๋ฅผ โ€‹โ€‹์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ง€์›Œ ๋ผ์ธ ๋ฒ„ํผ๋ง ๋ฐ ์ผ๋ถ€ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

์‚ด๊ฐ—์ด ๋ฒ—์–ด ์ง„ ์›์‹œ ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๊ฑฐ์˜ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€
๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  rawer ๋˜๋Š” cfmakeraw ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋‚ ๊ฒƒ ํ„ฐ๋ฏธ๋„์„ ์›์‹œ ์˜ต์…˜๋ณด๋‹ค ์›์‹œ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ์•”์‹œ์ ์œผ๋กœ ์—์ฝ”๋ฅผ ๋•๋‹ˆ๋‹ค.
(์˜ˆ).

cfmakeraw
cfmakeraw()๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ์ด ํ˜ธ์ถœ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜์—ฌ ์›์‹œ ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜
์•”์‹œ์ ์œผ๋กœ ์—์ฝ”๋ฅผ ๋•๋‹ˆ๋‹ค.

๋ฌด์‹œ=
break ๋ฌธ์ž(์˜ˆ: ^C)๋ฅผ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

๋ธŒํ‚จํŠธ=

bs0

bs1

bsdly=<0|1>

ํด๋กœ์ปฌ=

cr0
cr1
cr2
cr3

์บ๋ฆฌ์ง€ ๋ฆฌํ„ด ์ง€์—ฐ์„ ๊ฐ๊ฐ 0, 1, 2 ๋˜๋Š” 3์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 0์€ ์ง€์—ฐ์ด ์—†์Œ์„ ์˜๋ฏธํ•˜๊ณ ,
๋‹ค๋ฅธ ๊ฐ’์€ ํ„ฐ๋ฏธ๋„์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

crdly=<0|1|2|3>

ํฌ๋ ˆ์•„=

crtscts=

cs5
cs6
cs7
cs8

๋ฌธ์ž ํฌ๊ธฐ๋ฅผ ๊ฐ๊ฐ 5, 6, 7 ๋˜๋Š” 8๋น„ํŠธ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

csize=<0|1|2|3>

cstopb=
์ •์ง€ ๋น„ํŠธ๋ฅผ XNUMX๊ฐœ๊ฐ€ ์•„๋‹Œ XNUMX๊ฐœ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

dsusp=
ํ˜„์žฌ ์ „๊ฒฝ์„ ์ผ์‹œ ์ค‘๋‹จํ•˜๋Š” VDSUSP ๋ฌธ์ž์˜ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์‰˜์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค(Linux๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋‘).

echoctl=
๋ชจ์ž ํ‘œ๊ธฐ๋ฒ•์˜ ์—์ฝ” ์ œ์–ด ๋ฌธ์ž(์˜ˆ: ^A)

์—์ฝ”=

์—์ฝ”ํฌ=

์—์ฝ”์ผ€=

์—์ฝ”๋„ฌ=

echoprt=

์˜ =

์—์˜ฌ=

์—์˜ฌ2=

์ง€์šฐ๋‹ค=

๋ฒ„๋ฆฌ๋‹ค=

ff0

ff1

์ •๋ง=

ํ”Œ๋Ÿฌ์‹œ=

hupcl=

ICRNL=

iexten=

๋ฌด์‹œ=

๋ฌด์‹œ=

์•„์ด๋งฅ์Šค๋ฒจ=

ํฌํ•จ=

์ธํŒฉ=

๋‚ด๋ถ€=

isig=

์†๋„=
์ด ๋ผ์ธ์— ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์ฐธ์กฐ: ospeed, b19200

istrip=

iuclc=

์ต์‚ฌ๋‹ˆ=

ixoff=

์ต์Šจ=

์ฃฝ์ด๋‹ค=

๋‹ค์Œ=

์ตœ์†Œ=

nl0 ๊ฐœํ–‰ ์ง€์—ฐ์„ 0์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

nl1

์ „ํ˜€=

noflsh=

ocrnl=

ofdel=

ofill=

์˜ฌ์ฟ =

onlcr=

onlret=

onocr=

๋ฐ˜๋Œ€=
์ถœ๋ ฅ ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด NL์„ CR-NL๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์†๋„=
์ด ๋ผ์ธ์—์„œ ๋‚˜๊ฐ€๋Š” ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์†๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์ฐธ์กฐ: ispeed, b19200

parenb=
์ถœ๋ ฅ์—์„œ ํŒจ๋ฆฌํ‹ฐ ์ƒ์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ž…๋ ฅ์—์„œ ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

parmrk=

ํŒจ๋Ÿฌ๋กœ๋“œ=

ํŽœ๋”˜=

๊ทธ๋งŒ๋‘๋‹ค=

์žฌ์ธ์‡„=

์ œ์ •์‹ ์˜ ํ„ฐ๋ฏธ๋„์„ ์œ ์šฉํ•œ ๊ธฐ๋ณธ ์ƒํƒœ์™€ ๊ฐ™์€ ์ƒํƒœ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์‹œ์ž‘=

์ค‘์ง€=

์˜์‹ฌ=

SWTC=

tab0

tab1

tab2

tab3

๊ฐ€๋ณ๊ฒŒ=

์‹œ๊ฐ„=

์ค‘์ง€ํ•˜๋‹ค=

vt0

vt1

vtdly=

์›Œ๋ผ์„ธ=

xcase=

xtab

์•„์ดํŒ์˜ฌ
UNIX System V STREAMS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํƒ์—์„œ ๋ชจ๋“  ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

i-ํ‘ธ์‹œ=
UNIX System V STREAMS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์ •๋œ ์ด๋ฆ„(๋ฌธ์ž์—ด)์œผ๋กœ ๋“œ๋ผ์ด๋ฒ„(๋ชจ๋“ˆ)๋ฅผ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
์Šคํƒ์—. ์˜ˆ๋ฅผ ๋“ค์–ด, Solaris์—์„œ ๋ฌธ์ž ์žฅ์น˜๊ฐ€
termios ๋“ฑ์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
i-pop-all,i-push=ptem,i-push=ldterm,i-push=ttcompat

PTY ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ pty ์ฃผ์†Œ ์œ ํ˜•๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งํฌ=
์‹ค์ œ ์˜์‚ฌ ํ„ฐ๋ฏธ๋„(pty)์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ธฐํ˜ธ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ
ptys๊ฐ€ ์–ด๋Š ์ •๋„ ์ƒ์„ฑ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์ด๋ฆ„์œผ๋กœ ์ธํ•ด socat ์ƒ์„ฑ pty์— ์ง์ ‘ ์•ก์„ธ์Šคํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
์ž๋™์œผ๋กœ. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ํŒŒ์ผ์—์„œ "์ˆ˜์ •" ์ง€์ ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹ค์ œ pty์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ณ„์ธต ๊ตฌ์กฐ(์˜ˆ) ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์†Œ์บฃ
๋ฒ„์ „ 1.4.3์—์„œ๋Š” ์ฃผ์†Œ๊ฐ€ ๋‹ซํžˆ๋ฉด ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
์˜ต์…˜ ์—ฐ๊ฒฐ ํ•ด์ œ-๋‹ซ๊ธฐ).

๋…ธ์˜ˆ
ํ”„๋กœ์„ธ์Šค๊ฐ€ pty์˜ ์Šฌ๋ ˆ์ด๋ธŒ ์ธก์„ ์—ด ๋•Œ๊นŒ์ง€ ๊ฐœ๋ฐฉ ๋‹จ๊ณ„๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ฐœ,
socat์€ ๋‹ค์Œ ์ฃผ์†Œ๋ฅผ ์—ด๊ฑฐ๋‚˜ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ pty๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค.
์ „์†ก ๋ฃจํ”„์— ์ง„์ž…ํ•ฉ๋‹ˆ๋‹ค. wait-slave ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด socat๋Š”
ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ„์†ํ•˜๊ธฐ ์ „์— pty์˜ ์Šฌ๋ ˆ์ด๋ธŒ ์ธก์„ ์—ฝ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์šด์˜ ์ฒด์ œ๊ฐ€ poll() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋‹ค์Œ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.
pty์˜ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ๋™์ž‘์ด๋ฏ€๋กœ ๋ชจ๋“  ์šด์˜ ์ฒด์ œ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ
Linux, FreeBSD, NetBSD ๋ฐ Tru64์—์„œ openpty๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๊ณต์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

pty-๊ฐ„๊ฒฉ=
wait-slave ์˜ต์…˜์ด ์„ค์ •๋˜๋ฉด socat์€ ์ฃผ๊ธฐ์ ์œผ๋กœ HUP ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
pty์˜ ์Šฌ๋ ˆ์ด๋ธŒ ์ธก์ด ์—ด๋ ค ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด poll()์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๊ธฐ๋ณธ ํด๋ง
๊ฐ„๊ฒฉ์€ 1์ดˆ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด pty-interval ์˜ต์…˜ [timeval]์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์˜คํ”ˆ SSL ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ด๋Ÿฌํ•œ ์˜ต์…˜์€ openssl ๋ฐ openssl-listen ์ฃผ์†Œ ์œ ํ˜•์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธ=
์—ฐ๊ฒฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธ ๋ชฉ๋ก์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋งค๋‰ด์–ผ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”
์•”ํ˜ธ, ์„น์…˜ CIPHER LIST FORMAT, ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด
๊ฐ’ ๋ฐ ๊ธฐ๋ณธ๊ฐ’ .
์—ฌ๋Ÿฌ ์•”ํ˜ธ ๋ฌธ์ž์—ด์ด ':'์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ œ๊ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์•”ํ˜ธ ๋ฌธ์ž์—ด:

3DES XNUMX์ค‘ DES๊ฐ€ ํฌํ•จ๋œ ์•”ํ˜ธ ์ œํ’ˆ๊ตฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

MD5 MD5์™€ ํ•จ๊ป˜ ์•”ํ˜ธํ™” ์ œํ’ˆ๊ตฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

aNULL ์ธ์ฆ ์—†์ด ์•”ํ˜ธ ์ œํ’ˆ๊ตฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

NULL ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HIGH "๋†’์€" ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์•”ํ˜ธ ์ œํ’ˆ๊ตฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”ผ์–ด๋Š” ๋‹ค์Œ์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์†์„ฑ์„ ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด ํ˜‘์ƒ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ•=
์‚ฌ์šฉํ•  ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ๋ฌธ์ž์—ด(๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์•ˆ ํ•จ)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

SSL2 SSL ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 2๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

SSL3 SSL ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 3๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

SSL23 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ ํ•ฉํ•œ SSL ๋˜๋Š” TLS ํ”„๋กœํ† ์ฝœ์„ ์„ ํƒํ•˜์„ธ์š”. ์ด ์˜ต์…˜์ด ๊ธฐ๋ณธ๊ฐ’์ธ ๊ฒฝ์šฐ
์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

TLS1 TLS ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 1์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

TLS1.1 TLS ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 1.1์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

TLS1.2 TLS ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 1.2์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

DTLS1 DTLS ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ 1์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

ํ™•์ธ=
ํ”ผ์–ด์˜ ์ธ์ฆ์„œ ํ™•์ธ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 1(์ฐธ)์ž…๋‹ˆ๋‹ค. ํ™•์ธ ๋น„ํ™œ์„ฑํ™” ์ค‘
๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•ด ์†Œ์ผ“์„ ์—ด์–ด ์•”ํ˜ธํ™”๋ฅผ ์“ธ๋ชจ์—†๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์ธ์ฆ์„œ=
์ธ์ฆ์„ ์œ„ํ•œ ์ธ์ฆ์„œ์™€ ๊ฐœ์ธ ํ‚ค๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ
์ธ์ฆ์„œ๋Š” OpenSSL ํ˜•์‹(*.pem)์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. openssl-listen์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜์„ ์ ๊ทน ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธ aNULL์„ ์ œ์™ธํ•˜๊ณ  "๊ณต์œ  ์•”ํ˜ธ ์—†์Œ" ์˜ค๋ฅ˜
์ธ์ฆ์„œ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค=
๊ฐœ์ธ ํ‚ค๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ํ‚ค๋Š” ์ด ํŒŒ์ผ์ด๋‚˜ ๋‹ค์Œ ์œ„์น˜์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
cert ์˜ต์…˜์œผ๋กœ ์ œ๊ณต๋œ ํŒŒ์ผ. ๊ทธ ์‚ฌ์‹ค์„ ์ž…์ฆํ•ด์•ผ ํ•˜๋Š” ๋‹น์‚ฌ์ž
์ธ์ฆ์„œ ์†Œ์œ ์ž์—๊ฒŒ๋Š” ๊ฐœ์ธ ํ‚ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

dhparams=
Diffie Hellman ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
dhparams ์˜ต์…˜์ด ์•„๋‹Œ ๊ฒฝ์šฐ cert ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋œ ํŒŒ์ผ์—์„œ
ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์นดํŒŒ์ผ=
์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”(๋ฃจํŠธ) ๊ธฐ๊ด€ ์ธ์ฆ์„œ๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
PEM ํ˜•์‹์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ธ์ฆ์„œ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธํ•˜๋Š” ๋‹น์‚ฌ์ž
ํ•ด๋‹น ํ”ผ์–ด์˜ ์ธ์ฆ์€ ์ด ํŒŒ์ผ์— ์žˆ๋Š” ์ธ์ฆ์„œ๋งŒ ์‹ ๋ขฐํ•ฉ๋‹ˆ๋‹ค.

์นดํŒจ์Šค=
์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”(๋ฃจํŠธ) ์ธ์ฆ์„œ๊ฐ€ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
PEM ํ˜•์‹์˜ ์ธ์ฆ์„œ์™€ ํ•ด๋‹น ํ•ด์‹œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค(OpenSSL ์„ค๋ช…์„œ ์ฐธ์กฐ).

์˜ˆ๋“œ=
์ผ๋ถ€ ์‹œ์Šคํ…œ์—์„œ๋Š” openssl์— ์ž„์˜ ๋ฐ์ดํ„ฐ์˜ ๋ช…์‹œ์ ์ธ ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ง€์ •
egd์™€ ๊ฐ™์€ ์—”ํŠธ๋กœํ”ผ ์ˆ˜์ง‘ ๋ฐ๋ชฌ์ด ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์†Œ์ผ“ ์ด๋ฆ„, ์˜ˆ:
/dev/egd-ํ’€.

์˜์‚ฌ openssl์ด ์—”ํŠธ๋กœํ”ผ ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ณ  ์—”ํŠธ๋กœํ”ผ๊ฐ€ ์—†๋Š” ์‹œ์Šคํ…œ์—์„œ
์ˆ˜์ง‘ ๋ฐ๋ชฌ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ์˜ต์…˜์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
์˜์‚ฌ ์—”ํŠธ๋กœํ”ผ. ์ด๋Š” ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋งˆ์ดํฌ๋กœ์ดˆ ๋‹จ์œ„๋กœ ์ทจํ•จ์œผ๋กœ์จ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
libc ์˜์‚ฌ ๋‚œ์ˆ˜ ์ƒ์„ฑ๊ธฐ์— ์ดˆ๊ธฐ๊ฐ’์„ ๊ณต๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. openssl์€
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฌด์ž‘์œ„\() ํ˜ธ์ถœ์˜ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ฐธ๊ณ : ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋ณด์•ˆ ํ‚ค ์ƒ์„ฑ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

์••์ถ•
์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์••์ถ• ์‚ฌ์šฉ์„ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ "์—†์Œ"์œผ๋กœ ์„ค์ •
์••์ถ•์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  "auto"๋กœ ์„ค์ •ํ•˜๋ฉด OpenSSL์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์ƒ์˜ ์••์ถ•์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์–‘ ๋‹น์‚ฌ์ž๊ฐ€ ์ง€์›ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜. ๊ธฐ๋ณธ๊ฐ’์€ ์•„๋ฌด๊ฒƒ๋„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์••์ถ• ๊ด€๋ จ ์„ค์ •์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ : OpenSSL 0.9.8 ์ด์ƒ์ด ํ•„์š”ํ•˜๋ฉฐ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
OpenSSL 0.9.8์„ ์‚ฌ์šฉํ•œ ์••์ถ•์€ ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜ ์ด๋ฆ„=
ํ”ผ์–ด ์ธ์ฆ์„œ๊ฐ€ ์ผ์น˜ํ•ด์•ผ ํ•˜๋Š” ์ผ๋ฐ˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. OPENSSL-CONNECT ์‚ฌ์šฉ
์ฃผ์†Œ๋Š” ์ฃผ์–ด์ง„ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด๋‚˜ IP ๋Œ€์ƒ ์ฃผ์†Œ๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. OPENSSL-LISTEN ์‚ฌ์šฉ
๊ทธ๋Ÿฌ๋ฉด ํ”ผ์–ด ์ธ์ฆ์„œ ์ผ๋ฐ˜ ์ด๋ฆ„ ํ™•์ธ์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์—๋Š” ์˜๋ฏธ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ต์…˜ ํ™•์ธ์ด ๋น„ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๊ณ  ์„ ํƒํ•œ ์•”ํ˜ธ๊ฐ€ ํ”ผ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ
์ฆ๋ช…์„œ.

ํ”ฝ์Šค ์ปดํŒŒ์ผ๋œ ๊ฒฝ์šฐ FIPS ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. FIPS ์•”ํ˜ธํ™” ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ •๋ณด
ํ‘œ์ค€ ์ฐธ์กฐ http://oss-institute.org/fips-faq.html. ์ด ๋ชจ๋“œ์—๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ด€๋ จ ์ธ์ฆ์„œ๋Š” FIPS ์ง€์› ๋ฒ„์ „์˜ openssl์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
ํ•˜๋‚˜์˜ socat ์ฃผ์†Œ์—์„œ ์ด ์˜ต์…˜์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์„ ํƒ ์ทจ์†Œํ•˜๋ฉด ๋ชจ๋“  OpenSSL ์ฃผ์†Œ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
์ด ๊ณผ์ •์˜.

์žฌ์‹œ๋„ ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

์ผ๋ถ€ ์‹œ์Šคํ…œ ํ˜ธ์ถœ, ํŠนํžˆ ์—ฐ๊ฒฐ ์‹œ๋„์˜ ์žฌ์‹œ๋„๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์˜ต์…˜์ž…๋‹ˆ๋‹ค.

์žฌ์‹œ๋„=
์—ฐ๊ฒฐ ๋˜๋Š” ์ˆ˜์‹  ์‹œ๋„๊ฐ€ ์ค‘๋‹จ๋˜๊ธฐ ์ „์˜ ์žฌ์‹œ๋„ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€
0์€ ๋‹จ ํ•œ ๋ฒˆ์˜ ์‹œ๋„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๊ฒฉ=
์—ฐ์† ์‹œ๋„ ์‚ฌ์ด์˜ ์‹œ๊ฐ„(์ดˆ, [timespec])์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 1์ดˆ์ž…๋‹ˆ๋‹ค.

์˜์›ํžˆ
์žฌ์‹œ๋„ ํšŸ์ˆ˜๋ฅผ ๋ฌด์ œํ•œ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

TUN ์„ ํƒ๊ถŒ ๊ทธ๋ฃน

Linux TUN/TAP ์ธํ„ฐํŽ˜์ด์Šค ์žฅ์น˜ ์ฃผ์†Œ๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์˜ต์…˜์ž…๋‹ˆ๋‹ค.

ํŠœ๋‹ ์žฅ์น˜=
TUN ๋ณต์ œ ์žฅ์น˜์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜๋„๋ก socat์— ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€
/dev/net/tun.

ํˆฐ ์ด๋ฆ„=
๊ฒฐ๊ณผ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ์‹œ์Šคํ…œ ๋Œ€์‹  ํŠน์ • ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
์ƒ์„ฑ๋จ(tun0, tun1 ๋“ฑ)

tun-type=[tun|ํƒญ]
TUN ์žฅ์น˜์˜ ์œ ํ˜•์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. TAP ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ฐธ์กฐ
์ด๋Ÿฌํ•œ ์œ ํ˜• ๊ฐ„์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•œ Linux ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ์„ค๋ฆฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ
๋‘ ๊ฐœ์˜ TUN ์žฅ์น˜ ์‚ฌ์ด๋ฅผ ํ„ฐ๋„๋งํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์œ ํ˜•์€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

iff-no-pi
์žฅ์น˜์— ์ถ”๊ฐ€ ํŒจํ‚ท์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹IFF_NO_PI ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
ํ„ฐ๋„์˜ ์ •๋ณด. ๋‘ TUN ์‚ฌ์ด์— ํ„ฐ๋„์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ
์žฅ์น˜์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ํ”Œ๋ž˜๊ทธ๋Š” ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํ™•์‹คํ•จ TUN ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์ƒํƒœ๋ฅผ UP์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ.

iff ๋ฐฉ์†ก
TUN ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ BROADCAST ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-๋””๋ฒ„๊ทธ
TUN ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ DEBUG ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-๋ฃจํ”„๋ฐฑ
TUN ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ LOOPBACK ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-pointopoint
TUN ์žฅ์น˜์˜ POINTOPOINT ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-notrailers
TUN ์žฅ์น˜์˜ NOTTRAILERS ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-running
TUN ์žฅ์น˜์˜ RUNNING ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-noarp
TUN ์žฅ์น˜์˜ NOARP ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํ™•์‹คํ•œ
TUN ์žฅ์น˜์˜ PROMISC ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-allmulti
TUN ์žฅ์น˜์˜ ALLMULTI ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-๋งˆ์Šคํ„ฐ
TUN ์žฅ์น˜์˜ MASTER ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-์Šฌ๋ ˆ์ด๋ธŒ
TUN ์žฅ์น˜์˜ SLAVE ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-๋ฉ€ํ‹ฐ์บ์ŠคํŠธ
TUN ์žฅ์น˜์˜ MULTICAST ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-portsel
TUN ์žฅ์น˜์˜ PORTSEL ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-automedia
TUN ์žฅ์น˜์˜ AUTOMEDIA ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

iff-๋™์ 
TUN ์žฅ์น˜์˜ DYNAMIC ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ Values


์ด ์„น์…˜์—์„œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ฃผ์†Œ ์˜ต์…˜์„ ๋‹ค๋ฃจ๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ€์ ธ๊ฐ€๋„ ๋ผ.

์ฃผ์†Œ ๋ฒ”์œ„
ํ˜„์žฌ IPv4 ๋ฐ IPv6์— ๋Œ€ํ•ด์„œ๋งŒ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์ฃผ์†Œ ์˜ต์…˜ '๋ฒ”์œ„'๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ถ€์šธ "0" ๋˜๋Š” "1"; ๊ฐ’์„ ์ƒ๋žตํ•˜๋ฉด "1"์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

byte ๋ถ€ํ˜ธ ์—†๋Š” int ์ˆซ์ž, strtoul() ๋กœ ์ฝ์Œ, UCHAR_MAX ์ดํ•˜.

๋ช…๋ น ์ค„
๋‹จ์ผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„๊ณผ ํ•ด๋‹น ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

data ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์›์‹œ ๋ฐ์ดํ„ฐ ์‚ฌ์–‘ ์ง€์‚ฌ ํ†ต์‚ฌ๋ก . ํ˜„์žฌ ์œ ์ผํ•˜๊ฒŒ ์œ ํšจํ•œ ์–‘์‹์€
'x'๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๊ทธ ๋’ค์— ์ง์ˆ˜ ๊ฐœ์˜ XNUMX์ง„์ˆ˜๊ฐ€ ์˜ค๋Š” ๋ฌธ์ž์—ด,
๋ฐ”์ดํŠธ ์‹œํ€€์Šค.

์˜ˆ๋ฐฐ ๊ทœ์น™์„œ
์ผ๋ฐ˜์ ์ธ UN*X ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

์‹œ์„ค
์†Œ๋ฌธ์ž๋กœ ๋œ syslog ๊ธฐ๋Šฅ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

fdnum ๋ถ€ํ˜ธ ์—†๋Š” int ์œ ํ˜•, UN*X ํŒŒ์ผ ์„ค๋ช…์ž๋ฅผ ์ง€์ •ํ•˜์—ฌ strtoul() ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ์ด๋ฆ„
์ผ๋ฐ˜์ ์ธ UN*X ํŒŒ์ผ ์ด๋ฆ„ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

group ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ ์‹ญ์ง„์ˆ˜์ด๋ฉด strtoul()์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ฝ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฃน ID๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ธฐ์กด ๊ทธ๋ฃน์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

int "0"์„ ๋ฐ‘์œผ๋กœ ํ•˜๋Š” strtol() ํ•จ์ˆ˜์˜ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ์ˆซ์ž, ์ฆ‰ XNUMX์ง„์ˆ˜
์ˆซ์ž, ์•ž์— "0"์ด ์žˆ๋Š” 0์ง„์ˆ˜ ๋˜๋Š” ์•ž์— "XNUMXx"๊ฐ€ ์žˆ๋Š” XNUMX์ง„์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ
๊ฐ’์€ C int์— ๋งž์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค
ifconfig ๋˜๋Š”์— ์˜ํ•ด ํ‘œ์‹œ๋œ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์žฅ์น˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๋ฌธ์ž์—ด
ํ”„๋กœ์นธ(์˜ˆ: "eth0").

IP ์ฃผ์†Œ
์ˆซ์ž์™€ ์  ํ‘œ๊ธฐ๋ฒ•์˜ IPv4 ์ฃผ์†Œ, 6์ง„์ˆ˜ ํ‘œ๊ธฐ๋ฒ•์˜ IPvXNUMX ์ฃผ์†Œ
๋Œ€๊ด„ํ˜ธ๋กœ ๋ฌถ์ธ ์ด๋ฆ„์ด๊ฑฐ๋‚˜ IPv4 ๋˜๋Š” IPv6 ์ฃผ์†Œ๋กœ ํ™•์ธ๋˜๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
์˜ˆ: 127.0.0.1, [::1], www.dest-unreach.org, dns1

IPv4 ์ฃผ์†Œ
์ˆซ์ž์™€ ์  ํ‘œ๊ธฐ๋ฒ•์˜ IPv4 ์ฃผ์†Œ ๋˜๋Š” IPv4๋กœ ํ™•์ธ๋˜๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
์ฃผ์†Œ.
์˜ˆ: 127.0.0.1, www.dest-unreach.org, dns2

IPv6 ์ฃผ์†Œ
๋Œ€๊ด„ํ˜ธ๋กœ ๋ฌถ์ธ 6์ง„์ˆ˜ ๋ฐ ์ฝœ๋ก  ํ‘œ๊ธฐ๋ฒ•์˜ iPvXNUMX ์ฃผ์†Œ ๋˜๋Š”
IPv6 ์ฃผ์†Œ๋กœ ํ™•์ธ๋˜๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
Examples: [::1], [1234:5678:9abc:def0:1234:5678:9abc:def0], ip6name.domain.org

long strtol() ๋กœ ์ฝ์€ ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ C ๊ธธ์ด์— ๋งž์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ž˜ ์˜ค๋ž˜
strtoll() ๋กœ ์ฝ์€ ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ C long long์— ๋งž์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

off_t ๊ตฌํ˜„์— ์ข…์†๋œ ๋ถ€ํ˜ธ ์žˆ๋Š” ์ˆซ์ž(๋ณดํ†ต 32๋น„ํŠธ)๋กœ strtol ๋˜๋Š”
strtoll.

๊บผ์ง64_t
๊ตฌํ˜„ ์ข…์† ๋ถ€ํ˜ธ ์žˆ๋Š” ์ˆซ์ž(์ผ๋ฐ˜์ ์œผ๋กœ 64๋น„ํŠธ)๋Š” strtol ๋˜๋Š”
strtoll.

mode_t ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜, strtoul() ๋กœ ์ฝ๊ณ  ๋ชจ๋“œ(๊ถŒํ•œ) ๋น„ํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

pid_t ํ”„๋กœ์„ธ์Šค ID๋ฅผ ์ง€์ •ํ•˜์—ฌ strtol()๋กœ ์ฝ์€ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.

ํฌํŠธ A uint16_t(16๋น„ํŠธ ๋ถ€ํ˜ธ ์—†๋Š” ์ˆซ์ž) TCP ๋˜๋Š” UDP ํฌํŠธ๋ฅผ ์ง€์ •ํ•˜๊ณ  ๋‹ค์Œ์œผ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.
strtoul() .

ํ”„๋กœํ† ์ฝœ
๋ถ€ํ˜ธ ์—†๋Š” 8๋น„ํŠธ ์ˆซ์ž, strtoul() ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.

size_t size_t ์ œํ•œ์ด ์žˆ๋Š” ๋ถ€ํ˜ธ ์—†๋Š” ์ˆซ์ž, strtoul ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.

์–‘๋ง ์ด๋ฆ„
์†Œ์ผ“ ์ฃผ์†Œ. ์ฃผ์†Œ ์˜ต์…˜ `๋ฐ”์ธ๋“œ'๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

string '\0'์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์ผ๋ จ์˜ ๋ฌธ์ž์ด๋ฉฐ ๋‚ด๋ถ€ ์œ„์น˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
๋ช…๋ น์ค„, ':', ',' ๋˜๋Š” "!!" ์‰˜ ๋ฉ”ํƒ€๋ฅผ ํƒˆ์ถœํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ช…๋ น์ค„์˜ ๋ฌธ์ž.

TCP ์„œ๋น„์Šค
์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  getservbyname() ์œผ๋กœ ํ™•์ธ๋˜๋Š” ์„œ๋น„์Šค ์ด๋ฆ„, ๋˜๋Š”
strtoul() ๋กœ ์ฝ์€ ๋ถ€ํ˜ธ ์—†๋Š” int 16๋น„ํŠธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.

ํƒ€์ž„๋ฐธ
์ดˆ๋ฅผ ์ง€์ •ํ•˜๋Š” ์ด์ค‘ ๋ถ€๋™์†Œ์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ˆซ์ž๋Š” ๊ตฌ์กฐ์ฒด timeval์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
์ดˆ์™€ ๋งˆ์ดํฌ๋กœ์ดˆ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ์ŠคํŽ™
์ดˆ๋ฅผ ์ง€์ •ํ•˜๋Š” ์ด์ค‘ ๋ถ€๋™์†Œ์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ˆซ์ž๋Š” ๊ตฌ์กฐ์ฒด timespec์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
์ดˆ์™€ ๋‚˜๋…ธ์ดˆ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

UDP ์„œ๋น„์Šค
์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  getservbyname() ์œผ๋กœ ํ™•์ธ๋˜๋Š” ์„œ๋น„์Šค ์ด๋ฆ„, ๋˜๋Š”
strtoul() ๋กœ ์ฝ์€ ๋ถ€ํ˜ธ ์—†๋Š” int 16๋น„ํŠธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.

์„œ๋ช…๋˜์ง€ ์•Š์€ ์ •์ˆ˜
strtoul() ๋กœ ์ฝ์€ ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ C unsigned int์— ๋งž์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

user ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ ์‹ญ์ง„์ˆ˜์ด๋ฉด strtoul()์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ฝ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž ID๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ธฐ์กด ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ


์†Œ์บฃ - TCP4:www.domain.org:80

STDIO(-)์™€ ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ 4์— ๋Œ€ํ•œ TCP80 ์—ฐ๊ฒฐ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
www.domain.org. ์ด ์˜ˆ์—์„œ๋Š” ํ…”๋„ท๊ณผ ์œ ์‚ฌํ•œ ๋Œ€ํ™”ํ˜• ์—ฐ๊ฒฐ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
์•„๋‹ˆ๋ฉด ๋„ท์บฃ. stdin ํ„ฐ๋ฏธ๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ซ์•„๋„ ๋ฉ๋‹ˆ๋‹ค.
^D๋กœ ์ค‘๊ณ„ํ•˜๊ฑฐ๋‚˜ ^C๋กœ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

์†Œ์บฃ -d -d READLINE,์—ญ์‚ฌ=$HOME/.http_history \
TCP4:www.domain.org:www,crnl

์ด๋Š” ์ด์ „ ์˜ˆ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ˜„์žฌ ์ค„์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Bash ๋ฐฉ์‹(READLINE)์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ธฐ๋ก ํŒŒ์ผ .http_history๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์†Œ์บฃ ์ธ์‡„๋ฌผ
์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€(-d -d) ํฌํŠธ๋Š” ์„œ๋น„์Šค ์ด๋ฆ„(www)์œผ๋กœ ์ง€์ •๋˜๋ฉฐ,
NL ๋Œ€์‹  ์˜ฌ๋ฐ”๋ฅธ ๋„คํŠธ์›Œํฌ ํšŒ์„  ์ข…๋ฃŒ ๋ฌธ์ž(crnl)๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์†Œ์บฃ TCP4-๋“ฃ๊ธฐ:www TCP4:www.domain.org:www

๊ฐ„๋‹จํ•œ TCP ํฌํŠธ ์ „๋‹ฌ์ž๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. TCP4-LISTEN์„ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ์ปฌ ํฌํŠธ์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค.
์—ฐ๊ฒฐ์ด ๋“ค์–ด์˜ฌ ๋•Œ๊นŒ์ง€ "www"๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ด๋ฅผ ์ˆ˜๋ฝํ•œ ๋‹ค์Œ ์›๊ฒฉ ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
(TCP4) ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์—ฐ๊ฒฐ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์†Œ์บฃ -d -d -lmlocal2 \
TCP4-LISTEN:80,bind=myaddr1,reuseaddr,fork,su=nobody,range=10.0.0.0/8 \
TCP4:www.domain.org:80,bind=myaddr2

TCP ํฌํŠธ ์ „๋‹ฌ์ž, ๊ฐ ์ธก๋ฉด์ด ๋‹ค๋ฅธ ๋กœ์ปฌ IP ์ฃผ์†Œ์— ๋ฐ”์ธ๋”ฉ(๋ฐ”์ธ๋”ฉ)๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ
์˜ˆ์ œ๋Š” ๊ฑฐ์˜ ์ž„์˜์˜ ๊ฐœ์ˆ˜์˜ ๋ณ‘๋ ฌ ๋˜๋Š” ์—ฐ์† ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๊ฐ accept() ํ›„์— ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ถ„๊ธฐํ•˜์—ฌ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ๋ณด์•ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
ํฌํฌํ•œ ํ›„ ์‚ฌ์šฉ์ž none์—๊ฒŒ su'ing; ๊ฐœ์ธ ์—ฐ๊ฒฐ๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
10 ๋„คํŠธ์›Œํฌ(๋ฒ”์œ„); Reuseaddr๋กœ ์ธํ•ด ๋งˆ์Šคํ„ฐ ์ดํ›„ ์ฆ‰์‹œ ์žฌ์‹œ์ž‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์ผ๋ถ€ ํ•˜์œ„ ์†Œ์ผ“์ด ์™„์ „ํžˆ ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
-lmlocal2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด socat๋Š” ์Šน์ธ ๋ฃจํ”„์— ์„ฑ๊ณต์ ์œผ๋กœ ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ stderr์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
์ถ”๊ฐ€ ๋กœ๊น…์€ local2 ์‹œ์„ค์„ ์‚ฌ์šฉํ•˜์—ฌ syslog๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

์†Œ์บฃ TCP4-LISTEN:5555,ํฌํฌ,tcpwrap=์Šคํฌ๋ฆฝํŠธ \
EXEC:/bin/myscript,chroot=/home/sandbox,su-d=sandbox,pty,stderr

์—ฐ๊ฒฐ(TCP4-LISTEN)์„ ๋ฐ›์•„๋“ค์ด๊ณ  ํฌํฌ๋Š” ์ƒˆ๋กœ์šด ์ž์‹์ธ ๊ฐ„๋‹จํ•œ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
๊ฐ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ํ”„๋กœ์„ธ์Šค; ๋ชจ๋“  ์–ด๋ฆฐ์ด๋Š” ๋‹จ์ผ ๋ฆด๋ ˆ์ด ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ˜๋“œ์‹œ
๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค ์ด๋ฆ„ "script"์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค. /etc/hosts.allow ๊ณผ
/etc/hosts.deny๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์•ก์„ธ์Šค๊ฐ€ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค("man 5 ํ˜ธ์ŠคํŠธ_์•ก์„ธ์Šค" ์ฐธ์กฐ). ์„ ์œ„ํ•œ
ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค chroot๊ฐ€ /ํ™ˆ/์ƒŒ๋“œ๋ฐ•์Šค, su๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ
์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. /ํ™ˆ/์ƒŒ๋“œ๋ฐ•์Šค/bin/myscript. ์†Œ์บฃ ๊ทธ๋ฆฌ๊ณ  myscript
์˜์‚ฌ tty(pty)๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. myscript์˜ stderr์€ stdout์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜๋ฏ€๋กœ
์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์Œ์„ ํ†ตํ•ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์†Œ์บฃ ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ์—.

์†Œ์บฃ EXEC:"mail.sh [์ด๋ฉ”์ผ ๋ณดํ˜ธ]",fdin=3,fdout=4 \
TCP4:mail.relay.org:25,crnl,bind=alias1.server.org,mss=512

๋ฉ”์ผ.sh ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐฐํฌ๋˜๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ์†Œ์บฃ, ๊ฐ„๋‹จํ•œ SMTP๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
๊ณ ๊ฐ. FD 3(์ž…๋ ฅ)๊ณผ 4(์ถœ๋ ฅ)์—์„œ SMTP๋ฅผ "๋ง"ํ•˜๋„๋ก ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. fdin
๊ทธ๋ฆฌ๊ณ  fdout ์˜ต์…˜์€ ์†Œ์บฃ ํ”„๋กœ๊ทธ๋žจ๊ณผ์˜ ํ†ต์‹ ์„ ์œ„ํ•ด ์ด๋Ÿฌํ•œ FD๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
mail.sh๋Š” stdin๊ณผ stdout์„ ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์บฃ ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ
stdin์—์„œ ๋ฉ”์ผ ๋ณธ๋ฌธ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์บฃ alias1์„ ๋กœ์ปฌ ์†Œ์Šค ์ฃผ์†Œ๋กœ ์„ค์ •
(๋ฐ”์ธ๋“œ), ์˜ฌ๋ฐ”๋ฅธ ๋„คํŠธ์›Œํฌ ํšŒ์„  ์ข…๋ฃŒ(crnl)๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ตœ๋Œ€ 512๊ฐœ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
ํŒจํ‚ท๋‹น ๋ฐ์ดํ„ฐ ๋ฐ”์ดํŠธ(mss)์ž…๋‹ˆ๋‹ค.

์†Œ์บฃ -,ํƒˆ์ถœ=0x0f /dev/ttyS0,์›์‹œ,crnl

์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋Ž€๊ณผ์˜ ํ†ต์‹ ์„ ์œ„ํ•ด ์ง๋ ฌ ํšŒ์„ ์„ ํ†ตํ•ด ๋Œ€ํ™”ํ˜• ์—ฐ๊ฒฐ์„ ์—ฝ๋‹ˆ๋‹ค.
rawer๋Š” ์ฝ˜์†”๊ณผ ttyS0์˜ ํ„ฐ๋ฏธ๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
crnl์€ ์˜ฌ๋ฐ”๋ฅธ ๊ฐœํ–‰ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. escape๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด socat์„ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ž ์ปจํŠธ๋กค-O๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์†Œ์บฃ UNIX-LISTEN:/tmp/.X11-unix/X1,fork \
SOCKS4:host.victim.org:127.0.0.1:6000,socksuser=nobody,sourceport=20

UNIX-LISTEN์„ ์‚ฌ์šฉํ•˜๋ฉด ์†Œ์บฃ ์ˆ˜์‹  ๋Œ€๊ธฐ UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์„ ์—ฝ๋‹ˆ๋‹ค. /tmp/.X11-unix/X1.
์ด ๊ฒฝ๋กœ๋Š” ์ปดํ“จํ„ฐ์˜ ๋กœ์ปฌ XWindow ๋””์Šคํ”Œ๋ ˆ์ด:1์— ํ•ด๋‹นํ•˜๋ฏ€๋กœ XWindow
DISPLAY=:1์— ๋Œ€ํ•œ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์†Œ์บฃ ๊ทธ๋Ÿฐ ๋‹ค์Œ SOCKS4์™€ ๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
sourceport 20 ๊ธฐ๋ฐ˜ ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ.victim.org
๊ณ ์ • IP ํ•„ํ„ฐ์˜ FTP ๊ด€๋ จ ์•ฝ์ . ์†Œ์บฃ ์— ์˜ํ•ด ํ˜ธ์ถœ๋˜๋Š” ์ฒ™
์–‘๋ง ์‚ฌ์šฉ์ž๋Š” ์•„๋ฌด๋„ ์—†์œผ๋ฉฐ ๋ฃจํ”„๋ฐฑ ํฌํŠธ 6000์— ์—ฐ๊ฒฐํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค(์•ฝํ•œ ํฌํŠธ๋งŒ
sockd ๊ตฌ์„ฑ์ด ์ด๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค). ๊ทธ๋ž˜์„œ ํ”ผํ•ด์ž๋“ค๊ณผ ์—ฐ๊ฒฐ์ด ๋ฉ๋‹ˆ๋‹ค
XWindow ์„œ๋ฒ„ ๋ฐ MIT ์ฟ ํ‚ค๋‚˜ Kerberos ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
์šฐ๋ฆฌ๋Š” ์ผ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
์™œ๋ƒํ•˜๋ฉด TCP๋Š” ์ฃผ์–ด์ง„ ์ฃผ์†Œ์™€ ํฌํŠธ ์„ธํŠธ๋กœ ํ•˜๋‚˜์˜ ์„ธ์…˜๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์†Œ์บฃ -u /tmp/readdata,ํƒ์ƒ‰-๋=0,๋ฌด์‹œ -

์ด๋Š” ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ์ „์†ก(-u)์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์†Œ์บฃ ๋‹ค์Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์ผ /tmp/readdata(์•”์‹œ์  ์ฃผ์†Œ GOPEN), ํ˜„์žฌ ๋์—์„œ ์‹œ์ž‘
(ํƒ์ƒ‰ ๋=0ํ•˜์ž ์†Œ์บฃ ํŒŒ์ผ์˜ ํ˜„์žฌ ๋์—์„œ ์ฝ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํƒ์ƒ‰=0์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํƒ์ƒ‰ํ•˜์ง€ ์•Š์Œ
๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ฝ๋Š” ์˜ต์…˜) "tail -f" ๋ชจ๋“œ(ignoreeof)์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ
"file"์€ ์ˆ˜์‹  UNIX ๋„๋ฉ”์ธ ์†Œ์ผ“์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฒ€์ƒ‰ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค).
๊ทธ๋•Œ).

(์ž  5; ์—์ฝ” ๋น„๋ฐ€๋ฒˆํ˜ธ; ์ž  5; ์—์ฝ” ์ด; ์ž  1) |
์†Œ์บฃ - EXEC:'ssh -l ์‚ฌ์šฉ์ž ์„œ๋ฒ„',pty,setsid,ctty

EXEC'ssh ์„ธ์…˜์„ ์„œ๋ฒ„๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์‚ฌ์ด์˜ ํ†ต์‹ ์„ ์œ„ํ•ด pty๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์†Œ์บฃ ๊ณผ
ssh, ssh๊ฐ€ tty(ctty)๋ฅผ ์ œ์–ดํ•˜๋„๋ก ๋งŒ๋“ค๊ณ  ์ด pty๋ฅผ ์ƒˆ ํ•ญ๋ชฉ์˜ ์†Œ์œ ์ž๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน(setsid)์ด๋ฏ€๋กœ ssh๋Š” ์†Œ์บฃ.

์†Œ์บฃ -u TCP4-LISTEN:3334,์žฌ์‚ฌ์šฉ์ฃผ์†Œ,ํฌํฌ \
OPEN:/tmp/in.log,์ƒ์„ฑ,์ถ”๊ฐ€

๊ฐ„๋‹จํ•œ ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ์ˆ˜์ง‘๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•ด
ํฌํŠธ 3334๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ๋กœ์šด ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(์˜ต์…˜ ํฌํฌ). ์—์„œ ๋ณด๋‚ธ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š”
ํด๋ผ์ด์–ธํŠธ๋Š” /tmp/in.log ํŒŒ์ผ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด socat
์ฐฝ์กฐํ•ด. Reuseaddr ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฆ‰์‹œ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ์บฃ PTY,link=$HOME/dev/vmodem0,rawer,wait-slave \
EXEC:"ssh ๋ชจ๋Ž€์„œ๋ฒ„.us.org ์†Œ์บฃ - /dev/ttyS0,๋น„์ฐจ๋‹จ,์›์‹œ"

ํด๋ผ์ด์–ธํŠธ์—์„œ PTY(์˜์‚ฌ ํ„ฐ๋ฏธ๋„ ์žฅ์น˜)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์‹ฌ๋ณผ๋ฆญ ๋งํฌ $HOME/dev/vmodem0. ์ง๋ ฌ ํšŒ์„  ๋˜๋Š”
๋ชจ๋Ž€์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. $HOME/dev/vmodem0; ํŠธ๋ž˜ํ”ฝ์€ ๋‹ค์Œ์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ socat ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฐ๊ฒฐ๋˜๋Š” ssh๋ฅผ ํ†ตํ•œ ๋ชจ๋Ž€ ์„œ๋ฒ„ /dev/ttyS0.

์†Œ์บฃ TCP4-LISTEN:2022,์žฌ์‚ฌ์šฉ์ฃผ์†Œ,ํฌํฌ \
ํ”„๋ก์‹œ:ํ”„๋ก์‹œ:www.domain.org:22,ํ”„๋ก์‹œํฌํŠธ=3128,ํ”„๋ก์‹œ์ธ์ฆ=์‚ฌ์šฉ์ž:ํŒจ์Šค

ํฌํŠธ 2022์—์„œ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•˜๋Š” ์ „๋‹ฌ์ž๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ํฌํŠธ XNUMX๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
ํ˜ธ์ŠคํŠธ ํ”„๋ก์‹œ์˜ ํฌํŠธ 3128(ํ”„๋ก์‹œํฌํŠธ)์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋ก์‹œ ๋ฐ๋ชฌ
"pass"(proxyauth)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "์‚ฌ์šฉ์ž"๋กœ ์ธ์ฆ๋˜๋Š” CONNECT ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ
๊ทธ๋Ÿฌ๋ฉด ํ”„๋ก์‹œ๋Š” ํฌํŠธ 22์—์„œ www.domain.org๋ฅผ ํ˜ธ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์†Œ์บฃ - OPENSSL:์„œ๋ฒ„:4443,cafile=server.crt,cert=client.pem

SSL ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ณด์•ˆ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” OpenSSL ํด๋ผ์ด์–ธํŠธ์ž…๋‹ˆ๋‹ค.
์˜ต์…˜ cafile์€ ์‹ ๋ขฐ ์ธ์ฆ์„œ๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
์„œ๋ฒ„๊ฐ€ ์ด๋Ÿฌํ•œ ์ธ์ฆ์„œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ œ์‹œํ•˜๊ณ  ํ•ด๋‹น ์„œ๋ฒ„๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ์Œ์„ ์ฆ๋ช…ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ
๊ด€๋ จ ๊ฐœ์ธ ํ‚ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ
ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ ๋ฐ ๊ด€๋ จ ๊ฐœ์ธ ํ‚ค๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ
์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์ธํ„ฐ๋„ท
์„œ๋ฒ„๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ('-')๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๋‹ค๋ฅธ socat ์ฃผ์†Œ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ์บฃ OPENSSL-LISTEN:4443,reuseaddr,pf=ip4,fork,cert=server.pem,cafile=client.crt ํŒŒ์ดํ”„

TCP ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๊ณ  ๋‹ค์Œ์—์„œ ์ธ์ฆ์„œ๋ฅผ ์ œ๊ณตํ•˜๋Š” OpenSSL ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
server.pem ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ™•์ธ๋œ ์ธ์ฆ์„œ๋ฅผ ์ œ์‹œํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.
cafile.crt์— ๋Œ€ํ•ด.
๋‘ ๋ฒˆ์งธ ์ฃผ์†Œ('PIPE')๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๋‹ค๋ฅธ socat ์ฃผ์†Œ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
OpenSSL ํ‚ค์™€ ์ธ์ฆ์„œ ์ƒ์„ฑ ๋ฐ ๋ฐฐํฌ์— ๋Œ€ํ•œ ์ง€์นจ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
์ถ”๊ฐ€ socat ๋ฌธ์„œ socat-openssl.txt.

์—์ฝ” |์†Œ์บฃ -u - ํŒŒ์ผ:/tmp/bigfile,์ƒ์„ฑ,๋Œ€ํ˜• ํŒŒ์ผ,ํƒ์ƒ‰=100000000000

100GB์˜ ์ŠคํŒŒ์Šค ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ ํ˜•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
(ext2, ext3, reiserfs, jfs; minix, vfat ์•„๋‹˜). 1๋ฐ”์ดํŠธ๋ฅผ ์“ฐ๋Š” ์ž‘์—…์€
์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉฐ(reiserfs: ๋ช‡ ๋ถ„, ext2: "์—†์Œ" ์‹œ๊ฐ„) ๊ฒฐ๊ณผ ํŒŒ์ผ์€
inode๋งŒ์œผ๋กœ ์ผ๋ถ€ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค(reiserfs: 2MB, ext2: 16KB).

์†Œ์บฃ tcp-l:7777,์žฌ์‚ฌ์šฉ์ฃผ์†Œ,ํฌํฌ ์‹œ์Šคํ…œ:'ํ•„๋ž€ -i 0 -s >&2',๋…ธํฌํฌ

ํฌํŠธ 7777์—์„œ ๋“ค์–ด์˜ค๋Š” TCP ์—ฐ๊ฒฐ์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. ํ—ˆ์šฉ๋œ ๊ฐ ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด
์‰˜์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด ์‰˜์—๋Š” TCP์— ์ง์ ‘ ์—ฐ๊ฒฐ๋œ stdin ๋ฐ stdout์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์†Œ์ผ“(๋…ธํฌํฌ). ์‰˜์€ filan์„ ์‹œ์ž‘ํ•˜๊ณ  ์†Œ์ผ“ ์ฃผ์†Œ๋ฅผ ์ธ์‡„ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
stderr (ํ„ฐ๋ฏธ๋„ ์ฐฝ).

์—์ฝ” - ์—” "\0\14\0\0\c" |์†Œ์บฃ -u - ํŒŒ์ผ:/usr/bin/squid.exe,seek=0x00074420

๊ธฐ๋ณธ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŽธ์ง‘๊ธฐ ๊ธฐ๋Šฅ: 4๋ฐ”์ดํŠธ 000 014 000 000์„
์‹คํ–‰ ๊ฐ€๋Šฅํ•œ /usr/bin/squid ์˜คํ”„์…‹ 0x00074420(์ด๊ฒƒ์€ ์‹ค์ œ ํŒจ์น˜์ž…๋‹ˆ๋‹ค.
Cygwin์˜ ์˜ค์ง•์–ด ์‹คํ–‰ ํŒŒ์ผ์€ Windows์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์‹ค์ œ 2004๋…„ XNUMX์›” ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.

์†Œ์บฃ - tcp:www.blackhat.org:31337,readbytes=1000

์•Œ ์ˆ˜ ์—†๋Š” ์„œ๋น„์Šค์— ์ ‘์†ํ•˜์—ฌ ์นจ์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์†Œ์บฃ -U TCP:๋Œ€์ƒ:9999,๋-๋‹ซ๊ธฐ TCP-L:8888,์žฌ์‚ฌ์šฉ์ฃผ์†Œ,ํฌํฌ

ํฌํŠธ 8888์˜ ๋‹ค๋ฅธ TCP ์ŠคํŠธ๋ฆผ์—์„œ ๋„์ฐฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ‘ํ•ฉํ•˜์—ฌ
๋ชฉํ‘œ:9999. ์ข…๋ฃŒ-๋‹ซ๊ธฐ ์˜ต์…˜์€ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ถ„๊ธฐ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
๊ณต์œ  ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ์ฃผ์†Œ๋Š” 9999(close\(2) just
์ƒ์œ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง€์†๋˜๋Š” ๋™์•ˆ ํ™œ์„ฑ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” inode์˜ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
shutdown\(2)์€ ์—ฐ๊ฒฐ์„ ์ ๊ทน์ ์œผ๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์†Œ์บฃ - UDP4-DATAGRAM:192.168.1.0:123,sp=123,broadcast,range=192.168.1.0/24

192.168.1.0/24 ๋„คํŠธ์›Œํฌ๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋ฅผ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
๊ฑฐ๊ธฐ์— ํƒ€์ž„์„œ๋ฒ„๊ฐ€ ์žˆ์–ด์š”. ์ด ๋„คํŠธ์›Œํฌ ์™ธ๋ถ€ ํ˜ธ์ŠคํŠธ์˜ NTP ํŒจํ‚ท์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

์†Œ์บฃ - SOCKET-DATAGRAM:2:2:17:x007bxc0a80100x0000000000000000,bโ€
ind=x007bx00000000x0000000000000000,setsockopt-int=1:6:1,rโ€
ange=x0000xc0a80100x0000000000000000:x0000xffffff00x0000000000000000

์˜๋ฏธ์ƒ ์ด์ „ ์˜ˆ์™€ ๋™์ผํ•˜์ง€๋งŒ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋Š”
์ผ๋ฐ˜์ ์ธ ํ˜•์‹์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. setockopt-int์˜ ๊ฐ’ 6์€ Linux ๊ฐ’์ž…๋‹ˆ๋‹ค.
SO_BROADCAST.

์†Œ์บฃ - IP4-DATAGRAM:255.255.255.255:44,broadcast,range=10.0.0.0/8

ํ”„๋กœํ† ์ฝœ 44๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
๊ฐœ์ธ ์ฃผ์†Œ ๋ฒ”์œ„๋งŒ.

์†Œ์บฃ - UDP4-DATAGRAM:224.255.0.1:6666,bind=:6666,ip-add-membership=224.255.0.1:eth0

UDP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ stdin์—์„œ ์ง€์ •๋œ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ์ฃผ์†Œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ํ˜„์ง€
์›๊ฒฉ ํฌํŠธ๋Š” 6666์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค eth0์— ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ๋„ ํ—ˆ์šฉํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์–ด์ง„ ๊ทธ๋ฃน์˜ ํŒจํ‚ท. ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์˜ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์—์„œ ์ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ํ˜ธ์ŠคํŠธ ์ค‘ ํ•˜๋‚˜์—์„œ ๋ณด๋‚ธ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ๋ชจ๋“  ํ˜ธ์ŠคํŠธ์—์„œ ์ˆ˜์‹ ๋ฉ๋‹ˆ๋‹ค.
๊ฒƒ๋“ค. IP ํ•„ํ„ฐ,
๋ผ์šฐํŒ… ๋ฌธ์ œ, ์šด์˜ ์ฒด์ œ, ๋ธŒ๋ฆฌ์ง€ ๋˜๋Š”
์Šค์œ„์น˜๊ฐ€ ์ž˜๋ชป ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์†Œ์บฃ TCP:ํ˜ธ์ŠคํŠธ2:4443 TUN:192.168.255.1/24,์œ„๋กœ

ํ˜ธ์ŠคํŠธ2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ(๊ฐœ์ธ์€ ์•„๋‹˜!) ๋„คํŠธ์›Œํฌ์˜ ํ•œ์ชฝ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
UDP-L ๋ฐ tun ์ฃผ์†Œ 192.168.255.2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์‚ฌํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์ฃผ์†Œ 192.168.255.1 ๋ฐ 192.168.255.2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ. ์ŠคํŠธ๋ฆฌ๋ฐ ์ฐธ๊ณ ํ•˜์„ธ์š”
์˜ˆ. TCP ๋˜๋Š” SSL์„ ํ†ตํ•œ ์ „์†ก์€ ํŒจํ‚ท ๊ฒฝ๊ณ„ ์œ ์ง€๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ
ํŒจํ‚ท ์†์‹ค์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

์†Œ์บฃ PTY,๋งํฌ=/var/run/ppp,rawer ์ธํ„ฐํŽ˜์ด์Šค:hdlc0

pppd์— ์ง๋ ฌ ์žฅ์น˜๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ ์ง๋ ฌ ์žฅ์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํšŒํ”ผํ•ฉ๋‹ˆ๋‹ค.
๋„คํŠธ์›Œํฌ ์žฅ์น˜๋กœ ํ‘œ์‹œ๋˜๋Š” ๋™๊ธฐ ํšŒ์„ ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์บฃ
pppd๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด PTY๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค hdlc0์— ๋ฐ”์ธ๋”ฉํ•˜๋ฉฐ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‘ ์žฅ์น˜ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ /var/run/ppp ์žฅ์น˜์—์„œ pppd๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์†Œ์บฃ -T 1 -d -d TCP-L:10081,์žฌ์‚ฌ์šฉ์ฃผ์†Œ,ํฌํฌ,crlf ์‹œ์Šคํ…œ:"์—์ฝ” -e \"\\\"HTTP/1.0 200
ํ™•์ธ\\\n๋ฌธ์„œ ์œ ํ˜•: text/plain\\\n\\\n๋‚ ์งœ:
\$\(๋‚ ์งœ\)\\\n์„œ๋ฒ„:\$SOCAT_SOCKADDR:\$SOCAT_SOCKPORT\\\nํด๋ผ์ด์–ธํŠธ:
\$SOCAT_PEERADDR:\$SOCAT_PEERPORT\\n\\\"\"; ๊ณ ์–‘์ด; ์—์ฝ” -e \"\\\"\\\N\\\"\""

๊ฐ„๋‹จํ•œ HTTP ์—์ฝ” ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ HTTP ํด๋ผ์ด์–ธํŠธ๋Š” ์œ ํšจํ•œ HTTP๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ ์ฃผ์†Œ์™€ ํฌํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์‘๋‹ต
์„œ๋ฒ„ ํ˜ธ์ŠคํŠธ, ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ(๋ฉ€ํ‹ฐํ™ˆ ์„œ๋ฒ„์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ) ๋ฐ
์›๋ž˜ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ.

์†Œ์บฃ -d -d
UDP4-RECVFROM:9999, so-broadcast, so-timestamp, ip-pktinfo, ip-recverr, ip-recvopts, ip-recvtos, ip-recvttl!!-
์‹œ์Šคํ…œ:'๋‚ด๋ณด๋‚ด๊ธฐ; ์ž  1 ' |๊ทธ๋ ™ ์†Œ์บฃ

ํฌํŠธ 9999์—์„œ ๋“ค์–ด์˜ค๋Š” UDP ํŒจํ‚ท์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.
socat์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. BSD ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ip-pktinfo๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ip-recvdstaddr, ip-recvif. ํŠนํžˆ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์€ SOCAT_IP_DSTADDR์ž…๋‹ˆ๋‹ค.
์œ ๋‹ˆ์บ์ŠคํŠธ, ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ ๋˜๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ์ผ ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ท์˜ ๋Œ€์ƒ ์ฃผ์†Œ
์ฃผ์†Œ.

์ง„๋‹จ


์†Œ์บฃ ์‹ฌ๊ฐ๋„๋ณ„๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ๊น… ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‹ฌ๊ฐ๋„
์ œ๊ณต๋œ syslog ์šฐ์„ ์ˆœ์œ„์™€ ์–ด๋Š ์ •๋„ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜ ๋˜๋Š” ์ตœ๋Œ€
-d ๋ช…๋ น์ค„ ์˜ต์…˜์ด XNUMXํšŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”์‹œ์ง€์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์Šต๋‹ˆ๋‹ค.
๋ฐœ๊ธ‰์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฉ”์‹œ์ง€์—๋Š” ๋‹ค์Œ์„ ์ง€์ •ํ•˜๋Š” ๋‹จ์ผ ๋Œ€๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉ”์‹œ์ง€ ์‹ฌ๊ฐ๋„(F, E, W, N, I ๋˜๋Š” D ์ค‘ ํ•˜๋‚˜)

์น˜๋ช…์ : ๋ฌด์กฐ๊ฑด์ ์ด๊ณ  ์ฆ‰๊ฐ์ ์ธ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ๊ฐ€ ํ•„์š”ํ•œ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.

์˜ค๋ฅ˜: ์ ์ ˆํ•œ ํ”„๋กœ๊ทธ๋žจ ์ฒ˜๋ฆฌ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์€
์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ต์…˜ -s ์ฐธ์กฐ).

๊ฒฝ๊ณ  :
๋ญ”๊ฐ€๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ถ”๊ฐ€๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒ˜๋ฆฌ๊ฐ€ ๋ณด์žฅ๋  ์ˆ˜๋Š” ์—†์ง€๋งŒ ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์˜ ์‚ฌํ•ญ :
ํ”„๋กœ๊ทธ๋žจ์˜ ํฅ๋ฏธ๋กœ์šด ํ™œ๋™(์˜ˆ: ๊ฐ๋…) ์†Œ์บฃ ์–ด๋–ค ์ข…๋ฅ˜์˜
์„œ๋ฒ„ ๋ชจ๋“œ.

์ •๋ณด: ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ
ํŒŒ์ผ ์„ค๋ช…์ž์˜ ์ˆ˜๋ช…์ฃผ๊ธฐ.

DEBUG: ํ”„๋กœ๊ทธ๋žจ ์ž‘๋™ ๋ฐฉ์‹, ๋ชจ๋“  ์‹œ์Šคํ…œ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜ธ์ถœ ๋ฐ ๊ทธ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์„ค๋ช…
๊ฒฐ๊ณผ.

๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋Š” stderr, ํŒŒ์ผ ๋˜๋Š” syslog์— ๊ธฐ๋ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ๊ตฌ์—์„œ, ์†Œ์บฃ EOF ๋˜๋Š” ๋น„ํ™œ์„ฑ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ธํ•ด ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ ์ƒํƒœ 0์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์–‘์ˆ˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์Œ์ˆ˜ ๊ฐ’์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

onworks.net ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜จ๋ผ์ธ์œผ๋กœ filan์„ ์‚ฌ์šฉํ•˜์„ธ์š”.


๋ฌด๋ฃŒ ์„œ๋ฒ„ ๋ฐ ์›Œํฌ์Šคํ…Œ์ด์…˜

Windows ๋ฐ Linux ์•ฑ ๋‹ค์šด๋กœ๋“œ

Linux ๋ช…๋ น

  • 1
    aa-ํด๋ฆญ ์ฟผ๋ฆฌ
    aa-ํด๋ฆญ ์ฟผ๋ฆฌ
    aa-clickquery - ์ฟผ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ
    click-apparmor ์„ค๋ช…: ์ด ํ”„๋กœ๊ทธ๋žจ
    click-apparmor๋ฅผ ์ฟผ๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    ์ •๋ณด. ์‚ฌ์šฉ๋ฒ•: aa-clickquery
    --ํด๋ฆญ-ํ”„๋ผ...
    aa-clickquery ์‹คํ–‰
  • 2
    aa-exec-ํด๋ฆญ
    aa-exec-ํด๋ฆญ
    aa-exec-click - ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ
    ๊ฐ๊ธˆ๋œ ํŒจํ‚ค์ง€ ํด๋ฆญ
    ์„ค๋ช…: ์ด ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    AppArmor์—์„œ ํด๋ฆญ ํŒจํ‚ค์ง€ ์‹คํ–‰
    ์ œํ•œ. ๋‚˜...
    aa-exec-click ์‹คํ–‰
  • 3
    ์ฝ”์–ด์„ผ๋“œmsg
    ์ฝ”์–ด์„ผ๋“œmsg
    coresendmsg - CORE API ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ
    ์ฝ”์–ด ๋ฐ๋ชฌ ๋ฐ๋ชฌ์œผ๋กœ ...
    coresendmsg ์‹คํ–‰
  • 4
    core_server
    core_server
    core_server - ๊ธฐ๋ณธ ์„œ๋ฒ„
    SpamBayes. ์„ค๋ช…: ํ˜„์žฌ ์„œ๋น„์Šค ์ค‘
    ์›น ์ธํ„ฐํŽ˜์ด์Šค๋งŒ. ์—ฐ๊ฒฐ
    ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ๋ฆฌ์Šค๋„ˆ๋Š” ๋ฏธ์ •์ž…๋‹ˆ๋‹ค.
    ์ด๊ฑด ...
    core_server ์‹คํ–‰
  • 5
    Gappletviewer-4.8
    Gappletviewer-4.8
    gappletviewer - ์• ํ”Œ๋ฆฟ ๋กœ๋“œ ๋ฐ ์‹คํ–‰
    ...
    gappletviewer-4.8 ์‹คํ–‰
  • 6
    Gappletviewer-4.9
    Gappletviewer-4.9
    gappletviewer - ์• ํ”Œ๋ฆฟ ๋กœ๋“œ ๋ฐ ์‹คํ–‰
    ...
    gappletviewer-4.9 ์‹คํ–‰
  • ๋”ยป

Ad