1 ๋ถ„ ์†Œ์š”

์†Œ์ผ“์˜ ๋‹ค์–‘ํ•œ ์˜ต์…˜

์†Œ์ผ“ ์˜ต์…˜์˜ ์ข…๋ฅ˜

Protocol Level ์˜ˆ์‹œ ์„ค๋ช…
SOL_SOCKET SO_RCVBUF, SO_REUSEADDR ์†Œ์ผ“์˜ ๊ธฐ๋ณธ ์„ค์ • (๋ฒ„ํผ, ์žฌ์‚ฌ์šฉ ๋“ฑ)
IPPROTO_IP IP_TTL ๋“ฑ IP ๊ณ„์ธต ๊ด€๋ จ ์˜ต์…˜
IPPROTO_TCP TCP_NODELAY TCP ์ „์šฉ ์„ค์ • ์˜ต์…˜

์˜ต์…˜์„ ๋‹ค๋ฃจ๋Š” ํ•จ์ˆ˜๋“ค

getsockopt() : ์˜ต์…˜ ์ •๋ณด ์ฐธ์กฐ (์˜ต์…˜ ๊ฐ’ ์ฝ๊ธฐ)

int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);
// Protocol Level, Option Name์ด ํ•ด๋‹น ์˜ต์…˜์˜ ๋“ฑ๋ก ์ •๋ณด๋ฅผ ์–ป์–ด์˜ด

setsockopt() : ์˜ต์…˜ ์ •๋ณด ์„ค์ • (์˜ต์…˜ ๊ฐ’ ์„ค์ •)

int setsockopt(int sock, int level, int optname, const void *optval, socklen_t *optlen);
//  Protocol Level, Option Name์ด ํ•ด๋‹น ์˜ต์…˜์˜ ๋“ฑ๋ก ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝ

์†Œ์ผ“์˜ ํƒ€์ž…์ •๋ณด (TCP or UDP)์˜ ํ™•์ธ

์†Œ์ผ“์˜ ํƒ€์ž…์ •๋ณด๋Š” ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅ -> ์˜ต์…˜ SO_TYPE์€ ํ™•์ธ ๊ฐ€๋Šฅ

์†Œ์ผ“์˜ ์ž…์ถœ๋ ฅ ๋ฒ„ํผ ํฌ๊ธฐ ํ™•์ธ

SO_SNDBUF : ์ž…๋ ฅ๋ฒ„ํผ ํฌ๊ธฐ ํ™•์ธ/๋ณ€๊ฒฝ

SO_RCVBUF : ์ถœ๋ ฅ๋ฒ„ํผ ํฌ๊ธฐ ํ™•์ธ/๋ณ€๊ฒฝ

SO_REUSEADDR (ํฌํŠธ ์žฌํ™œ์šฉ ํ—ˆ์šฉ)

Time-wait TCP ์†Œ์ผ“์—์„œ ์—ฐ๊ฒฐ ์ข…๋ฃŒ๋ฅผ ๋ชฉ์ ์œผ๋กœ Time-wait ์ƒํƒœ๋ฅผ ๊ฑฐ์นจ

Time-wait ์ƒํƒœ๋™์•ˆ ํ•ด๋‹น ์†Œ์ผ“ ์†Œ๋ฉธx -> ํ• ๋‹น๋ฐ›์€ Port๋ฅผ ๋‹ค๋ฅธ ์†Œ์ผ“์— ํ• ๋‹นx

์‹ค ์„œ๋น„์Šค ์ค‘์ธ ๊ฒฝ์šฐ Port ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ฝ”๋“œ ์ˆ˜์ •ํ•ด์•ผํ•จ (setsockopt()์‚ฌ์šฉ)

// Port ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์˜ต์…˜ ๋ณ€๊ฒฝ
optlen = sizeof(option);
option = TRUE;
setsockopt(serv_sock, SOL_SOCK, SO_REUSEADDR, (void*)&option, optlen)

TCP_NODELAY

Nagle ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์ธํ„ฐ๋„ท์˜ ๊ณผ๋„ํ•œ ํŠธ๋ ˆํ”ฝ๊ณผ ๊ทธ๋กœ์ธํ•œ ์ „์†ก์ €ํ•˜๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด ๋””์ž์ธ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๋ชฉ์ ์ด ๋ช…ํ™•ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹์‹œ์—๋Š” ์ค‘๋‹จ x
  • ์†Œ์ผ“์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ๋ฐฉ๋ฒ•
  • ์•ž์„œ ์ „์†กํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ACK๊ฐ€ ์ˆ˜์‹ ๋˜์–ด์•ผ๋งŒ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: