LINUX/ABOUT LINUX

[Linux] IPC ์˜ˆ์ œ โ‘ข Soket Model (fork ๋ฐฉ์‹)

์˜์˜๋ฃจ 2022. 11. 24. 15:44

์ถœ์ฒ˜ : ๋ณธ์ธ PPT

[ CLIENT ]

1. socket() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์†Œ์ผ“ ์˜คํ”ˆ

2. ์„œ๋ฒ„์— connect request ์ „์†ก

3. ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›์Œ

4. ์†Œ์ผ“ ํด๋กœ์ฆˆ 

 

[ SERVER ]

1. socket() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์†Œ์ผ“ ์˜คํ”ˆ

2. ์—ด์–ด๋†“์€ ์†Œ์ผ“์— ์„œ๋ฒ„์˜ ip, port ๋ฐ”์ธ๋”ฉ

3. listen() ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ ์ „ํ™˜

4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณด๋‚ธ request ๋ฐ›๊ณ , ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ์ƒ์„ฑ

5. send()๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€ ์ฃผ๊ฑฐ๋‚˜ recv() ํ†ตํ•ด ๋ฐ›์Œ

6. ์—ด์–ด๋†“์€ ์†Œ์ผ“ ํด๋กœ์ฆˆ 

 

์†Œ์ผ“์€ fork์˜ ๋ฐฉ์‹๊ณผ thread์˜ ๋ฐฉ์‹์ด ์กด์žฌ. ์‹ค๋ฌด์—์„œ๋Š” thread๋ฅผ ๋” ๋งŽ์ด ์“ฐ๊ณ  ์„ ํ˜ธํ•จ 

 



Socket fork ๋ž€?

๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์—์„œ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜ ๋ณต์ œ ์ƒ์„ฑ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค

์ด๋•Œ ๋ณต์ œ ์ƒ์„ฑ์‹œ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ง

๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์—๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ PID๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  ์ž์‹ ํ”„๋กœ์„ธ์Šค์—์„œ๋Š” fork()์˜ ๋ฆฌํ„ด๊ฐ’์ด 0์ด ๋“ค์–ด๊ฐ€๊ฒŒ๋จ 

 

1. talk_s/ ํŒŒ์ผ ์ƒ์„ฑ [์ƒ์„ฑ ํ›„ gcc ๋ช…๋ น์–ด๋กœ ์ปดํŒŒ์ผ ํ•ด์ฃผ๊ธฐ]  -- server๊ด€๋ จ ํŒŒ์ผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ 

 

2.  talk_s/ ํŒŒ์ผ ์ƒ์„ฑ [์ƒ์„ฑ ํ›„ gcc ๋ช…๋ น์–ด๋กœ ์ปดํŒŒ์ผ ํ•ด์ฃผ๊ธฐ]  -- client ๋ถ€๋ถ„ ํŒŒ์ผ ์ƒ์„ฑํ•ด์ฃผ๊ธฐ

 

 

ํ„ฐ๋ฏธ๋„์„ 2๊ฐœ ์—ด์€ ํ›„ ํ•œ์ชฝ์—์„œ๋Š” ./talk_s [ํฌํŠธ๋ฒˆํ˜ธ] , ๋‹ค๋ฅธ ํ•œ์ชฝ์—๋Š” ./talk_c [์•„์ดํ”ผ][ํฌํŠธ๋ฒˆํ˜ธ]๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์„œ๋กœ ์ฑ„ํŒ…ํ•˜๋“ฏ์ด ๋™์‹œ์— ์“ด ๋‚ด์šฉ์ด ์˜ฌ๋ผ์˜ค๊ฒŒ ๋จ 

 

์„œ๋ฒ„
ํด๋ผ์ด์–ธํŠธ

* ์„œ๋ฒ„์—์„œ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „์†ก

* ํด๋ผ์ด์–ธํŠธ์—์„œ๋„ ๋ฉ”์‹œ์ง€๋ฅผ ๋™์ผํ•˜๊ฒŒ sendํ•  ์ˆ˜ ์žˆ์Œ 

 

 

๋ฐ˜์‘ํ˜•