[Linux Socket] Server - Listen() ํ•จ์ˆ˜/ Accept() ํ•จ์ˆ˜[3]

[Linux Socket] Server - Listen() ํ•จ์ˆ˜/ Accept() ํ•จ์ˆ˜[3]

LISTEN() ํ•จ์ˆ˜๋ฐ”๋กœ ๋“ค์–ด์˜ค์ง€ ๋งˆ์‹œ๊ณ  ๋Œ€๊ธฐํ‘œ ๋ฝ‘๊ณ  ๊ธฐ๋‹ค๋ฆฌ์„ธ์š”ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ›๊ธฐ ์œ„ํ•œ ์ˆ˜์‹  ๋Œ€๊ธฐ Queue ์ƒ์„ฑ- ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ”๋กœ ๋ฐ›์ง€ ์•Š๊ณ  ์ˆ˜์‹  ๋Œ€๊ธฐ ํ์— PUSH- ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์ฒดํฌ ํ›„ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ”๋กœ ์—ฐ๊ฒฐ X- ๋Œ€๊ธฐ ํ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ํด๋ผ์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ํ•  ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒ #include int listen(int sockfd, int backlog) 1) sockfd์ฃผ์†Œ ์ •๋ณด๋ฅผ ํ• ๋‹นํ•  ์†Œ์ผ“์˜ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐโ€ป ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ: Linux๊ฐ€ ํŒŒ์ผ์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐ์ •ํ•œ ๋ฒˆํ˜ธ 2) backlog๋Œ€๊ธฐ ํ์˜ ํฌ๊ธฐ์ ‘์† ๊ฐ€๋Šฅํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ๊ฐœ์ˆ˜( = ์—ฐ๊ฒฐ ํ์˜ ๊ธธ์ด ) TCP๋Š” 1:1๋ฐ–์— ์•ˆ๋˜๋Š”๋ฐ ํ•œ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ํ•˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ์—ฐ๊ฒฐ ํ๊ฐ€..

  • textsms
๐Ÿ”–IP ์ฃผ์†Œ ๋ณ€ํ™˜ ํ•จ์ˆ˜

๐Ÿ”–IP ์ฃผ์†Œ ๋ณ€ํ™˜ ํ•จ์ˆ˜

IP ์ฃผ์†Œ ๋ณ€ํ™˜ ํ•จ์ˆ˜ ์„ค๋ช… ์ „ ์ดํ•ดํ•˜์ž!์˜ˆ) 0x12345678 4๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค.์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋  ๋•Œ ํ•˜์œ„ ๋ฐ”์ดํŠธ/ ์ƒ์œ„ ๋ฐ”์ดํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?1. ๋น… ์—๋””์•ˆ(Big-Endian)- ํ•˜์œ„ ๋ฐ”์ดํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ์ฃผ์†Œ๊ฐ€ ์ƒ์œ„ ๋ฐ”์ดํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ์ฃผ์†Œ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ 0x12 - 1๋ฐ”์ดํŠธ โžก๏ธ 0x107๋ฒˆ์ง€0x34 - 1๋ฐ”์ดํŠธ โžก๏ธ 0x108๋ฒˆ์ง€0x56 - 1๋ฐ”์ดํŠธ โžก๏ธ 0x109๋ฒˆ์ง€0x78 - 1๋ฐ”์ดํŠธ โžก๏ธ 0x110๋ฒˆ์ง€2. ๋ฆฌํ‹€ ์—”๋””์•ˆ(Little-endian)- ํ•˜์œ„ ๋ฐ”์ดํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ์ฃผ์†Œ๊ฐ€ ์ƒ์œ„ ๋ฐ”์ดํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ์ฃผ์†Œ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ0x12 - 1๋ฐ”์ดํŠธ โžก๏ธ 0x110๋ฒˆ์ง€0x34 - 1๋ฐ”์ดํŠธ โžก๏ธ 0x109๋ฒˆ์ง€0x56 - 1๋ฐ”์ดํŠธ โžก๏ธ 0x108๋ฒˆ์ง€0x78 - 1๋ฐ”์ดํŠธ โžก..

  • textsms
๐Ÿ”–SOCKADDR VS SOCKADDR_IN

๐Ÿ”–SOCKADDR VS SOCKADDR_IN

๐Ÿ  ์ฃผ์†Œ ์ •๋ณด 1. ํ”„๋กœํ† ์ฝœ(IPv4, IPv6) 2. IP ์ฃผ์†Œ 3. ํฌํŠธ ๋ฒˆํ˜ธ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ 2๊ฐ€์ง€์˜ ๊ตฌ์กฐ์ฒด๊ฐ€ ์žˆ๋‹ค. SOCKADDR_IN ๊ตฌ์กฐ์ฒด: ๊ฐœ๋ฐœ์ž๋Š” SOCKADDR_IN ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์†Œ ์ •๋ณด ์ €์žฅ SOCKADDR ๊ตฌ์กฐ์ฒด: ์†Œ์ผ“์— ์ฃผ์†Œ ์ •๋ณด๋ฅผ ์—ฐ๊ฒฐํ•  ๋• SOCKADDR ๊ตฌ์กฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์šฉ โ—SOCKADDR ๊ตฌ์กฐ์ฒด๋Š” ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๊ธฐ์— ๋ถˆํŽธํ•œ ํ˜•์‹์ด๋ผ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•œ SOCKADDR_IN ๊ตฌ์กฐ์ฒด๋กœ ์ฃผ์†Œ ์ €์žฅ ์ฃผ์†Œ ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•˜๋Š” ์ˆœ์„œ 1. sockaddr_in ๊ตฌ์กฐ์ฒด๋ฅผ ๋ชจ๋‘ 0์œผ๋กœ ์ดˆ๊ธฐํ™” โžก๏ธ 0์œผ๋กœ ์ดˆ๊ธฐํ™” ์‹œํ‚ค์ง€ ์•Š์„ ๊ฒฝ์šฐ sockaddr ๊ตฌ์กฐ์ฒด ๋ณ€ํ™˜ํ•  ๋•Œ ์˜ค๋ฅ˜ 2. sockaddr_in ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์— ๊ฐ’๋“ค์„ ์ €์žฅ 3. sockaddr_in ๊ตฌ์กฐ์ฒด๋ฅผ sockaddr ๊ตฌ์กฐ์ฒด๋กœ ๋ณ€ํ™˜ ..

  • textsms
๐Ÿ”– SOCK_STREAM VS SOCK_DGAM

๐Ÿ”– SOCK_STREAM VS SOCK_DGAM

๐Ÿ“–๋‹จ์–ด ์‚ฌ์ „ํŒจํ‚ท: ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‚˜๋ˆˆ ๋ธ”๋ก์˜ค๋ฅ˜ ์ œ์–ด: ์ „์†กํ•  ๋•Œ ๋‚˜๋Š” ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜ ์ฐพ๊ธฐ & ํ•ด๊ฒฐํ˜ธ๋ฆ„ ์ œ์–ด: ์ˆ˜์‹  ์ธก์ด ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ์ „๋‹ฌ ๋˜๋„๋ก ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์†๋„ ์กฐ์ ˆ SOCK_STREAM- TCP์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ = ์—ฐ๊ฒฐ์ง€ํ–ฅํ˜• ์†Œ์ผ“- Segment ์ „์†ก ๋ฐฉ์‹ = ๋ฐ์ดํ„ฐ ๋ถ„ํ•ด ํ›„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ „๋‹ฌ / ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ์กฐ๋ฆฝ100๋ช… ์‚ฌ์šฉ โžก๏ธ 100๊ฐ€๋‹ฅ ์ „์„  ์„ค์น˜ X โžก๏ธ 1,2๊ฐœ ์„ ๋งŒ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฐ๋‚ด์„œ ์ „๋‹ฌ OํŠน์ง•1) ์†ก์‹ ์ธก์—์„œ ์ „์†กํ•˜๋Š” ํŒจํ‚ท์€ ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜์‹ ์ธก์— ์ „๋‹ฌ๋œ๋‹ค.2) ๋งŒ์ผ์— ์ „๋‹ฌ๋œ ํŒจํ‚ท์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์žฌ์ „์†ก์„ ํ†ตํ•ด์„œ ๋‹ค์‹œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.3) ์˜ค๋ฅ˜์ œ์–ด ๋ฐ ํ๋ฆ„์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.4) ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.5) 1: 1 ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.6) ์ „๋‹ฌ๋˜๋Š” ๋ฐ..

  • textsms