๐Ÿ“ Note

[Note] #1

taeeekki 2023. 6. 20. 00:43

[ ๊ธฐ๋ก ]

๊ฐœ์ธ์ ์œผ๋กœ ํ•™์Šตํ•˜๋ฉด์„œ ๊ธฐ๋กํ•œ ๊ฒƒ์ด๋ผ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โ–ช๏ธ Hash table ๋ณต์Šต

- ํ•ด์‹œ ํ…Œ์ด๋ธ”, ๋ฒ„ํ‚ท, ์Šฌ๋กฏ, ํ•ด์‹œ ํ•จ์ˆ˜, ํ•ด์‹ฑ, ํ•ด์‹œ ์ถฉ๋Œ, ํ•ด์‹œ ์ถฉ๋Œ ํ•ด๊ฒฐ

 

โ–ช๏ธ ๋น„ํŠธ์™€ ๋ฐ”์ดํŠธ

- ๋น„ํŠธ๋ž€ ์ปดํ“จํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ์˜ ์ตœ์†Œ ๋‹จ์œ„

- ์ปดํ“จํ„ฐ๋Š” 2์ง„์ˆ˜(0๊ณผ 1)๋กœ ๋™์ž‘

- ๋ฐ”์ดํŠธ(byte)๋ž€ ๋น„ํŠธ(bit)๊ฐ€ 8๊ฐœ ๋ชจ์—ฌ์„œ ๊ตฌ์„ฑ, ์ผ๋ฐ˜์ ์œผ๋กœ ํ•œ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋‹จ์œ„

 

โ–ช๏ธ ๋ฐ”์ดํŠธ ์ €์žฅ ์ˆœ์„œ

์ปดํ“จํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•  ๋•Œ ๋ฐ”์ดํŠธ(byte) ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•œ๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋Œ€๊ฐœ 32bit, 64bit๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์—ฐ์†๋˜๋Š” ๋ฐ”์ดํŠธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์„ ๋ฐ”์ดํŠธ ์ €์žฅ ์ˆœ์„œ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ”์ดํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.

 

1. ๋น… ์—”๋””์•ˆ(Big Endian)

2. ๋ฆฌํ‹€ ์—”๋””์•ˆ(Little Endian)

- Mac OS X on x86, x64๋Š” ๋ฆฌํ‹€ ์—”๋””์•ˆ

 

โ–ช๏ธ ๋น… ์—”๋””์•ˆ(big endian)

๋น… ์—”๋””์•ˆ ๋ฐฉ์‹์€ ๋‚ฎ์€ ์ฃผ์†Œ์— ๋ฐ์ดํ„ฐ์˜ ๋†’์€ ๋ฐ”์ดํŠธ(MSB, Most Significant Bit)๋ถ€ํ„ฐ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ์ˆœ์„œ ๊ทธ๋Œ€๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ , ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. (๋Œ€๋ถ€๋ถ„์˜ RISC CPU ๊ณ„์—ด์—์„œ ํ•ด๋‹น ๋ฐฉ์‹ ์‚ฌ์šฉ)

- ๋‚ฎ์€ ์ฃผ์†Œ์— ๋†’์€ ๋น„ํŠธ(MSB)๋ถ€ํ„ฐ ์ €์žฅ

- MSB๋Š” ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๋น„ํŠธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

- ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ์—๋Š” ๋น… ์—”๋””์•ˆ ๋ฐฉ์‹์ด ์‚ฌ์šฉ๋œ๋‹ค.

 

โ–ช๏ธ ๋ฆฌํ‹€ ์—”๋””์•ˆ(little endian)

- ๋‚ฎ์€ ์ฃผ์†Œ์— ๋ฐ์ดํ„ฐ์˜ ๋‚ฎ์€ ๋น„ํŠธ(LSB)๋ถ€ํ„ฐ ์ €์žฅ

LSB(์ตœํ•˜์œ„ ๋น„ํŠธ)๋ผ๊ณ  ํ•จ์€ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋น„ํŠธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

LSB๋Š” ํ•ญ์ƒ 0๋ฒˆ ๋น„ํŠธ์ด๋‹ค.

์ธํ…” ๊ธฐ๋ฐ˜์˜ ์œˆ๋„์šฐ๋Š” ๋ฆฌํ‹€ ์—”๋””์•ˆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

โ–ช๏ธ x86, x64

- x86 : 32๋น„ํŠธ → ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 4GB๊นŒ์ง€๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

- x64 : 64๋น„ํŠธ → ์šด์˜์ฒด์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋‹จ์œ„๊ฐ€ 64๋น„ํŠธ(8๋ฐ”์ดํŠธ)

- ๋ช…์นญ์˜ ์˜๋ฏธ๋Š” ์นฉ์…‹์˜ ๊ตฌ๋ถ„๊ธฐํ˜ธ๋ฅผ ๋œปํ•œ๋‹ค.

- ์‹ค์งˆ์ ์ธ ์ฐจ์ด๋Š” ๋žจ(RAM)์˜ ์ธ์‹ ์ฐจ์ด์ด๋‹ค.

 

โ–ช๏ธ์šด์˜์ฒด์ œ์™€ ํฌ์ธํ„ฐ์˜ ๊ด€๊ณ„

- ํฌ์ธํ„ฐ๋ž€ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๋‹ด๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

- ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

 

- 32๋น„ํŠธ ์šด์˜์ฒด์ œ   32๋น„ํŠธ(4๋ฐ”์ดํŠธ)   2^32์˜ ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋ฒ”์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค. (4096MB → ์•ฝ 4GB์— ํ•ด๋‹น → 4GB์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.)

- 64๋น„ํŠธ ์šด์˜์ฒด์ œ → 64๋น„ํŠธ(8๋ฐ”์ดํŠธ) → 32๋น„ํŠธ ์šด์˜์ฒด์ œ๋ณด๋‹ค 2^32๋ฐฐ ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

- ๋ฉ”๋ชจ๋ฆฌ ํ•œ ์นธ์€ 1๋ฐ”์ดํŠธ(8๋น„ํŠธ)์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.

- 32๋น„ํŠธ ์šด์˜์ฒด์ œ์—์„œ๋Š” 4๋ฐ”์ดํŠธ ๊ธธ์ด์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ–๋Š”๋‹ค.

- ์ง‘ ํ‰์ˆ˜๋Š” 1ํ‰, ์ด ์ง‘์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋ฅผ 32์ž๋ฆฌ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

- ์ฆ‰ 32๋น„ํŠธ ์šด์˜์ฒด์ œ๋Š” 2^32(์•ฝ 43์–ต)๊ฐœ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

- ์ด ๋ง์€ ๋‹ค์‹œ ๋ฐ”๊ฟ”์„œ 1๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 43์–ต ๊ฐœ๊นŒ์ง€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง๊ณผ ๋™์ผํ•˜๋‹ค. (์•ฝ 43์–ต Byte = ์•ฝ 4GB์ด๋‹ค.)

 

- ์ฃผ์†Œ์˜ ๋ฒ”์œ„๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹ฌ๋ผ์ง„๋‹ค. == ์šด์˜์ฒด์ œ ๋น„ํŠธ์— ๋”ฐ๋ผ ํฌ์ธํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค

- 32bit์—์„œ๋Š” 0x00000000 ~ 0xFFFFFFFF

- 64bit์—์„œ๋Š” 0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF

 

โ–ช๏ธ TCP/IP ์†ก์ˆ˜์‹  ์›๋ฆฌ

- ์†Œ์ผ“ ์—ญ์‹œ ํŒŒ์ผ์ด๋‹ค.

- Process(์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ)๊ณผ TCP/IP ํ”„๋กœํ† ์ฝœ์ด ํ†ต์‹ ํ•˜๋Š” ์ฐฝ๊ตฌ๋ฅผ ์†Œ์ผ“ ์ธํ„ฐํŽ˜์ด์Šค๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

- ์†Œ์ผ“๊ณผ TCP๋Š” ๊ฐ๊ฐ buffer๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

- ์†ก์‹  ์ธก์—์„œ ํฐ ํฌ๊ธฐ์˜ ํŒŒ์ผ์„ ์ „์†ก(send)ํ•  ๋•Œ์—๋Š” ์ž‘์€ ํฌ๊ธฐ(ex. 64KB)๋กœ ๋‚˜๋ˆ„์–ด ์ „์†กํ•œ๋‹ค.

- TCP๋กœ ์ „๋‹ฌ๋  ๋•Œ์—๋Š” buffer์— ๋˜‘๊ฐ™์ด copy๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.

- ์ˆœ์ฐจ์ ์œผ๋กœ Segment → Packet → Frame์œผ๋กœ Wrapping ๋œ๋‹ค.

 

- ๊ทธ๋Ÿฌ๊ณ  ๋‚˜์„œ ์ „์†ก์ด ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ ์ˆ˜์‹  ์ธก์—์„œ๋Š” ์—ญ์ˆœ์œผ๋กœ ํ๋ฆ„์ด ์ง„ํ–‰๋œ๋‹ค.

- ์ˆ˜์‹  ์ธก์˜ tcp๋ฒ„ํผ์— segment๊ฐ€ ์Œ“์ด๊ณ  ๋‚œ ๋’ค์—๋Š” ์†ก์‹  ์ธก์—๊ฒŒ ACK๋ฅผ ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค.

- ACK์—๋Š” ๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ์š”์ฒญ๊ณผ ํ•จ๊ป˜ window size๋ฅผ ํ•จ๊ป˜ ๋‹ด๋Š”๋‹ค.

- window size๋Š” ์ˆ˜์‹  ์ธก์˜ tcp buffer size๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

- ๋‚จ์€ tcp buffer size๋ณด๋‹ค ๋‹ค์Œ segment size(or Maximum Segment Size) ๋ณด๋‹ค ์ปค์•ผ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์›ํ™œํ•  ๊ฒƒ์ด๋‹ค.

- ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋” ์ด์ƒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ์—†์œผ๋‹ˆ Wait๊ฐ€ ์ผ์–ด๋‚˜๊ณ  ์ฒ˜๋ฆฌ์ง€์—ฐ์ด ๋ฐœ์ƒํ•œ๋‹ค.

- ์ˆ˜์‹  ์ธก์˜ Read(Receive) ์†๋„๊ฐ€ ๋„คํŠธ์›Œํฌ ์†๋„๋ณด๋‹ค ๋นจ๋ผ์•ผ ์ฒ˜๋ฆฌ์ง€์—ฐ ๋ฌธ์ œ๋ฅผ ํ•ด์†Œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


 

[ ์ƒ๊ฐ ]

- ๊ธฐ๋ก์„ ์•ˆ ํ•˜๋‹ค ๋ณด๋‹ˆ๊นŒ ์ด๊ณณ์ €๊ณณ์— ์ง€์‹, ์ƒ๊ฐ์ด ํฉ์–ด์ ธ๋ฒ„๋ฆฌ๋Š” ๋А๋‚Œ์ด ๋“ ๋‹ค. ์•Œ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ๋„ ๋ง‰์ƒ ๋งํ•˜๋ ค๊ณ  ํ•˜๊ณ , ์ ์œผ๋ ค๊ณ  ํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋˜์ง€ ์•Š๋”๋ผ. ๊ทธ๋ž˜์„œ ๋‹ค์‹œ ์ฐพ์€ ๋ฐฉ๋ฒ•์ด ๊ธฐ๋ก์ด๋‹ค.  ๊ฐ€๋ณ๊ฒŒ ํ•˜๋ฃจํ•˜๋ฃจ ๊ธฐ๋กํ•˜๋ฉด์„œ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ž. ์•„์ง ๊ธ€์˜ ์–‘์‹์„ ์ƒ๊ฐํ•ด๋ณด์ง€๋„, ์–ด๋–ค ๋‚ด์šฉ์„ ๊ธฐ๋กํ• ์ง€๋„ ์ „ํ˜€ ์ •ํ•ด์ง€๊ณ  ๋‹ค๋“ฌ์–ด์ง€์ง€ ์•Š์•˜์ง€๋งŒ ๊ทธ๋ƒฅ ์ผ๋‹จ ์‹œ์ž‘ํ•ด๋ณด๋Š”๊ฑฐ๋‹ค.

- ๊ฐ€๋ณ๊ฒŒ ์ด๋Ÿฐ์ €๋Ÿฐ cs ๊ณต๋ถ€ํ•จ → ์ตœ๊ทผ์— ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋А๋‚€ ๊ฑฐ์ง€๋งŒ ์ง„์งœ ํŒŒํŽธํ™”๋œ ์ง€์‹์ด ๋„ˆ๋ฌด ๋งŽ๊ณ , ์˜ค๋ž˜์ „์— ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์ด๋ผ ํ•˜๋‚˜๋„ ๊ธฐ์–ต์ด ์•ˆ๋‚œ๋‹ค. (์ฐจ๊ทผ์ฐจ๊ทผ ๋ณต์Šตํ•˜์ž)

- ๋ถ€์ŠคํŠธ์บ ํ”„ 1์ฐจ ํ…Œ์ŠคํŠธ ๋ด„ → ์˜ฌํ•ด ๋ช‡ ๋ฒˆ์˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ๋ณด๋ฉด์„œ ํ•ญ์ƒ ๋“  ์ƒ๊ฐ์€ ๊ตฌํ˜„ ์—ฐ์Šต์„ ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด๋‹ค. ๊ทผ๋ฐ ๊ทธ๊ฒŒ ๋ง์ฒ˜๋Ÿผ ์‰ฝ์ง€ ์•Š๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ‘ธ๋Š”๊ฒŒ ํ•œ๋™์•ˆ์€ ์žฌ๋ฏธ์žˆ๋‹ค๊ฐ€ ์š”์ƒˆ ๋„ˆ๋ฌด ํ•˜๊ธฐ ์‹ซ๋‹ค! ... ๋งˆ์Œ์„ ์ข€ ๋‹ค์žก์„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค๋ฉด์„œ๋„ ๋งˆ์Œ์ด ์‹ฑ์ˆญ์ƒ์ˆญํ•˜๋Š” ์‹œ๊ธฐ๋‹ค.

- ์–ด์จŒ๋“  ๋‹ค์‹œ ์—ด์‹ฌํžˆ ์‚ด๊ณ  ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ๋งˆ์Œ ๋จน์—ˆ์œผ๋‹ˆ ๋ญ๊ฐ€ ๋๋“  ํ•œ ๋ฒˆ ํ•ด๋ณด๋ จ๋‹ค.