Skip to content

tmdcheol/network

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

reap

multi-process echo server แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-10-13 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 12 19 59

  • tcp socket์„ ์ด์šฉ
  • fork๋กœ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ (์—ฌ๋Ÿฌ client์™€ ๋™์‹œ์— ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด์„œ)
  • client ์ชฝ์—์„œ fin์„ ๋ณด๋‚ด๋Š” ๊ตฌ์กฐ
  • backlog queue size == 5
  • ์„œ๋ฒ„๋Š” while-loop์œผ๋กœ accept์„ ๊ณ„์†ํ•ด์„œ ์ˆ˜ํ–‰
  • signal handling์œผ๋กœ zombie process reap

socket

client : serv_sock (1๊ฐœ) server : serv_sock(listening, 1๊ฐœ), clnt_sock(read write, 1๊ฐœ)

  • ์—ฌ๋Ÿฌ client์™€ ํ†ต์‹ ์„ ์œ„ํ•ด fork๋ฅผ ํ•˜๋ฉด, server์˜ clnt_sock ํ•˜๋‚˜์”ฉ ์ƒ์„ฑ.
  • ๋ถ€๋ชจ์™€์ž์‹ ํ”„๋กœ์„ธ์Šค์—์„œ ๋ชจ๋‘ close ํ•ด์ฃผ์–ด์•ผ fin์ด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰

์‚ฌ์šฉ๋ฒ•

  1. server ๋จผ์ € ์ผœ๋†“๊ธฐ ex) ./server 9190
  2. client๋กœ ์ ‘์† ex) ./client 127.0.0.1 9190
  3. client๊ฐ€ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” ๊ทธ๋Œ€๋กœ ๋ฐ˜์‚ฌํ•ด์„œ ๋ณด๋‚ด์คŒ
  4. client์—์„œ q or Q์„ ๋ˆ„๋ฅด๋ฉด close -> fin
  5. server๋Š” ์—ฌ๋Ÿฌ client๋ฅผ ๋™์‹œ์— ์ˆ˜์šฉ ๊ฐ€๋Šฅ (n:1)

process

  • client's process : 1๊ฐœ
  • server's parent process : while-loop ์ˆ˜ํ–‰ํ•˜๋ฉฐ accept + clnt_sock close
  • server's child process : echo ์ˆ˜ํ–‰ + serv_sock close

flow

  1. client๊ฐ€ connect(syn)์„ ํ•˜๋ฉด, server๋Š” accept ๋ฐ fork๋กœ child process ์ƒ์„ฑ
    • server's child process : file descriptor ๋ณต์‚ฌ๋กœ ์ธํ•ด listening socket ๋ฏธ๋ฆฌ ์ข…๋ฃŒ // server's serv_sock close -1
    • server's parent process : server's clnt_sock close -1 // ๋ณต์ œ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋ฃŒํ•ด์ฃผ๊ธฐ
  2. server's child process๋Š” ๋ณต์ œ๋œ serv_sock file descriptor๋ฅผ close
  3. server's child process๋Š” echo ์—ญํ•  ์ˆ˜ํ–‰
  4. client's process : close : q or Q ๋ฅผ ์ณ์„œ ์ข…๋ฃŒ์š”์ฒญ ์ˆ˜ํ–‰ // client's serv_sock close
  5. server's child process : server๋Š” read์— 0์ด ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์„ ๋ณด๊ณ , fin์„ detect ํ›„, server's clnt_sock close -2, ๊ทธ๋ฆฌ๊ณ  ์ž์‹ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ
  6. server's child process ์ข…๋ฃŒ ์‹œํ‚ค๋ฉด singal handler called
  7. singal handler : zombie process ์ƒ์„ฑ์„ ๋ง‰๊ธฐ ์œ„ํ•ด waitpid๋กœ reap
  8. server๋Š” while-loop ์„ ํ†ตํ•ด ๊ณ„์†ํ•ด์„œ client์˜ ์š”์ฒญ์„ accept (block ํ•จ์ˆ˜)

ํฅ๋ฏธ๋กœ์› ๋˜ ์ 

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-10-12 แ„‹แ…ฉแ„’แ…ฎ 11 39 00 ps al ์ปค๋งจ๋“œ๋กœ ํ™•์ธํ•ด๋ณด๋ฉด multi-process server์—์„œ reaping ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด zombie process๊ฐ€ ๋‚จ๊ฒŒ ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด, ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋Š” wait or waitpid ๊ฐ™์€ ํ•จ์ˆ˜๋กœ ์ž์‹์„ reaping์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด ์ข€๋น„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์† ์Œ“์ด๊ฒŒ ๋œ๋‹ค. ๋ฌผ๋ก  ์„œ๋ฒ„๊ฐ€ down๋˜๋ฉด zombie ํ”„๋กœ์„ธ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œ๋˜์ง€๋งŒ, ์‹ค์ œ ์„œ๋ฒ„๋Š” ์ˆ˜ ๋งŽ์€ client๋ฅผ ์ƒ๋Œ€๋กœ ๊ณ„์†ํ•ด์„œ ๋Œ์•„๊ฐ€์•ผ๋งŒ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ zombie process๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ํ•˜์ง€ ์•Š๋„๋ก reaping ํ•ด์ฃผ๋Š” ๊ฒƒ์€ ๊ผญ ํ•„์š”ํ•˜๋‹ค.

tcp ports

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-10-13 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 12 20 08

์‹ค์ œ 3๊ฐœ์˜ client๋ฅผ ๋™์‹œ์— ์ ‘์†์‹œํ‚จ ํ›„ ํ• ๋‹น๋œ tcp port๋“ค.

server -> 1 : listening socket n : clnt_sock(์ด ์†Œ์ผ“์œผ๋กœ client์™€ ํ†ต์‹ ํ•œ๋‹ค.) client -> n : ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค๋กœ ์„œ๋ฒ„์—๊ฒŒ ์ ‘์†ํ•œ๋‹ค. n๋ช…์ด๋ฉด n๊ฐœ.

์š”์ฆ˜์€ multi-thread ํ™˜๊ฒฝ์˜ ์„œ๋ฒ„๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด์ง€๋งŒ, multi-process ํ™˜๊ฒฝ์—์„œ ์„œ๋ฒ„๊ฐ€ ๋งŽ์€ client๋ฅผ ์ˆ˜์šฉํ•˜๋Š” ๊ณผ์ •์„ ์ƒ๊ฐํ•ด ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์„œ๋ฒ„์˜ ํŠน์„ฑ ์ƒ 24์‹œ๊ฐ„ ๋‚ด๋‚ด ๋Œ์•„๊ฐ€์•ผ ํ•˜๋ฉฐ, zombie process ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๊ด€๋ฆฌ๋ฅผ ์ž˜ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages