๐Ÿ“‘ ๋ฉด์ ‘ CS ์งˆ๋ฌธ ๋ชจ์Œ

Jennyยท2023๋…„ 6์›” 23์ผ
0
post-thumbnail
์—…๋ฐ์ดํŠธ ๋กœ๊ทธ
2023.06.24
2023.07.01
2023.08.21

OS

์šด์˜์ฒด์ œ์˜ ์ •์˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž์›๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ์ž„

์šด์˜์ฒด์ œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์œ ์ €์˜์—ญ, ์ปค๋„์˜์—ญ 2๊ฐ€์ง€๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค.
์œ ์ €์˜์—ญ: ์Šคํƒ, ํž™, ๋ฐ์ดํ„ฐ, ์ฝ”๋“œ๋กœ ๋‚˜๋‰จ
์ปค๋„์˜์—ญ: ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜๋Š” ์ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ค‘์—์„œ ์œ ์ € ์˜์—ญ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์˜์—ญ, ์ปค๋„์ด ์œ„์น˜ํ•˜๊ณ  ์žˆ์Œ (์ปค๋„: ์šด์˜์ฒด์ œ๋ผ๋Š” ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„)

โญ ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ๋ฅผ ๋น„๊ต ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํ”„๋กœ์„ธ์Šค: ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์ž์›์„ ํ• ๋‹น๋ฐ›์€ ์ž‘์—…์˜ ๋‹จ์œ„
์Šค๋ ˆ๋“œ: ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ๋‹จ์œ„, ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
ํ”„๋กœ์„ธ์Šค๋Š” ์™„๋ฒฝํžˆ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(Code, Data, Heap, Stack)์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ ๋ฅผ ํ•˜์ง€ ์•Š์ง€๋งŒ, ์“ฐ๋ ˆ๋“œ๋Š” ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ๋ฅผ ์œ„ํ•œ ์Šคํƒ์„ ์ƒ์„ฑํ•  ๋ฟ ๊ทธ ์ด์™ธ์˜ Code, Data, Heap์˜์—ญ์„ ๊ณต์œ ํ•œ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ > ํ”„๋กœ์„ธ์Šค > ์Šค๋ ˆ๋“œ

  • ํ”„๋กœ๊ทธ๋žจ: ํŒŒ์ผ์ด ์ €์žฅ ์žฅ์น˜์— ์ €์žฅ๋˜์–ด ์žˆ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์˜ฌ๋ผ๊ฐ€ ์žˆ์ง€ ์•Š์€(์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์—๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์ฃผ์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธ) ์ •์ ์ธ ์ƒํƒœ(์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ๊ฐ€๋งŒํžˆ ์žˆ๋‹ค๋Š” ๋œป) ์ฆ‰ ์‹คํ–‰๋˜์ง€ ์•Š์€ ํŒŒ์ผ ๊ทธ ์ž์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ง

์ฐธ๊ณ 

์Šค๋ ˆ๋“œ์—์„œ ๋…๋ฆฝ์ ์ธ Stack ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์Šคํƒ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ „๋‹ฌ๋˜๋Š” ์ธ์ž, ๋ฐ˜ํ™˜ ์ฃผ์†Œ๊ฐ’, ํ•จ์ˆ˜ ๋‚ด ๋ณ€์ˆ˜ ๋“ฑ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„
์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋…๋ฆฝ์ ์ด๋ผ๋Š” ๊ฒƒ์€ ๋…๋ฆฝ์ ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๊ณ  ์ด๋Š” ๋…๋ฆฝ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค์™€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ๋น„๊ต ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋กœ ํ˜‘๋ ฅ์ ์œผ๋กœ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ
๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ : ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋กœ ์ž์›์„ ๊ณต์œ ํ•˜๋ฉฐ ์ž‘์—…์„ ๋‚˜๋ˆ  ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ
๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋Š” ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  Context Switching์ด ๋น ๋ฅด๋‚˜, ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ ์žฅ์• ๋กœ ์ „์ฒด ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ์œ„ํ—˜์„ ๊ฐ–๊ณ  ์žˆ์Œ
๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃฝ๋”๋ผ๋„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์•„ ์•ˆ์ •์„ฑ์ด ๋†’์ง€๋งŒ, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๊ณผ cpu์‹œ๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Œ

์ฐธ๊ณ 

๋ฌธ๋งฅ ์ „ํ™˜ (Context Switching)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” Task(Process,Thread)์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ์ง„ํ–‰ํ•  Task์˜ ์ƒํƒœ ๊ฐ’์„ ์ฝ์–ด ๋ณต์›(restore)ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.

  • Context
    CPU๊ฐ€ ํ•ด๋‹น Process(or Thread)๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ •๋ณด๋กœ์„œ, PCB(Process Contol Block)์— ์ €์žฅ๋œ๋‹ค.

๊ต์ฐฉ์ƒํƒœ (Deadlock)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ž์›์„ ์„œ๋กœ ๊ธฐ๋‹ค๋ฆด ๋•Œ ๋ฌดํ•œ ๋Œ€๊ธฐ์— ๋น ์ง€๋Š” ์ƒํ™ฉ

๊ต์ฐฉ์ƒํƒœ์˜ ๋ฐœ์ƒ ์กฐ๊ฑด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํฌ๊ฒŒ 4๊ฐ€์ง€
์ƒํ˜ธ ๋ฐฐ์ œ: ํ•œ ๋ฒˆ์— ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋งŒ ํ•ด๋‹น ์ž์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ์‚ฌ์šฉ ์ค‘์ธ ์ž์›์„ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์š”์ฒญํ•œ ์ž์›์ด ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•จ
์ ์œ  ๋Œ€๊ธฐ: ์ž์›์„ ์ตœ์†Œํ•œ ํ•˜๋‚˜ ๋ณด์œ ํ•˜๊ณ , ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ์ž์›์„ ์ ์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•จ
๋น„์„ ์ : ์ด๋ฏธ ํ• ๋‹น๋œ ์ž์›์„ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์—†์Œ(๋น„์„ ์ )
์ˆœํ™˜ ๋Œ€๊ธฐ: ๋Œ€๊ธฐ ํ”„๋กœ์„ธ์Šค์˜ ์ง‘ํ•ฉ์ด ์ˆœํ™˜ ํ˜•ํƒœ๋กœ ์ž์›์„ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•จ

์ฐธ๊ณ 

ํŽ˜์ด์ง•๊ณผ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํŽ˜์ด์ง•: ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ณ ์ •๋œ ์‚ฌ์ด์ฆˆ์˜ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์— ๋ถˆ์—ฐ์†์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜: ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ๊ฐ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ์ ์ธ ๋ธ”๋ก ๋‹จ์œ„ ์„ธ๊ทธ๋จผํŠธ(Segment)๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น

๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

RAM์—์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต๊ฐ„์ด ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์กด์žฌํ•˜์ง€๋งŒ ํ• ๋‹น(์‚ฌ์šฉ)์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ, ์‹ค์ œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์ด ์ค„์–ด๋“ค์–ด swapping, ์žฆ์€ ํŽ˜์ด์ง€ ๊ต์ฒด ๋“ฑ์œผ๋กœ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Œ

  • RAM(Random Access Memory)
    ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋‚ด๋Š” ๊ธฐ์–ต ์žฅ์น˜, ๋””์Šคํฌ์™€ ๋‹ฌ๋ฆฌ ์ „์›์ด ๊บผ์ง€๋ฉด ๋ฐ์ดํ„ฐ๋Š” ์ง€์›Œ์ง

๊ธฐ์•„ ์ƒํƒœ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๊ฒฝ์Ÿ ์ƒํƒœ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋ฎคํ…์Šค์™€ ์„ธ๋งˆํฌ์–ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ธฐ์ˆ , ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•„๋Š”๋Œ€๋กœ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์š”๊ตฌ ํŽ˜์ด์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ค‘ ํ•˜๋‚˜, ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ณ , ํ•„์š”ํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋Š” ๋””์Šคํฌ์— ์ €์žฅํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•˜๋Š” ๋ฐฉ๋ฒ•. ์ด๋ฅผ ์œ„ํ•ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ํŽ˜์ด์ง€์˜ ์œ„์น˜ ์ •๋ณด์™€ ํ•จ๊ป˜ ๊ฐ ํŽ˜์ด์ง€์˜ ์ ‘๊ทผ ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•˜์—ฌ ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

์ฐธ๊ณ 

Network

์›น ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์›น์—์„œ ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ†ต์‹  ๊ทœ์•ฝ

  • ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ณธ ์š”์†Œ
    1) ๊ตฌ๋ฌธ: ์ „์†กํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹, ๋ถ€ํ˜ธํ™”, ์‹ ํ˜ธ ๋ ˆ๋ฒจ ๋“ฑ์„ ๊ทœ์ •
    2) ์˜๋ฏธ: ๋‘ ๊ธฐ๊ธฐ ๊ฐ„์˜ ํšจ์œจ์ ์ด๊ณ  ์ •ํ™•ํ•œ ์ •๋ณด ์ „์†ก์„ ์œ„ํ•œ ํ˜‘์กฐ ์‚ฌํ•ญ๊ณผ ์˜ค๋ฅ˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ œ์–ด ์ •๋ณด๋ฅผ ๊ทœ์ •
    3) ์‹œ๊ฐ„: ๋‘ ๊ธฐ๊ธฐ ๊ฐ„์˜ ํ†ต์‹  ์†๋„, ๋ฉ”์‹œ์ง€์˜ ์ˆœ์„œ ์ œ์–ด ๋“ฑ์„ ๊ทœ์ •

  • ํ”„๋กœํ† ์ฝœ์˜ ๊ธฐ๋Šฅ ์ข…๋ฅ˜
    1) ์บก์Šํ™”
    2) ํ๋ฆ„์ œ์–ด
    3) ์—ฐ๊ฒฐ์ œ์–ด
    4) ์˜ค๋ฅ˜์ œ์–ด
    5) ์ฃผ์†Œ์„ค์ •
    6) ์ˆœ์„œ์„ค์ •
    7) ๋™๊ธฐํ™”
    8) ์„ธ๋ถ„ํ™”์™€ ์žฌํ•ฉ์„ฑ
    9) ๋‹ค์ค‘ํ™”

HTTP์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

Hyper Text Transfer Protocol์˜ ์•ฝ์ž, ์›น ์ƒ์—์„œ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๊ทœ์น™์ด๋ฉฐ, ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋ฉฐ, '๋น„์—ฐ๊ฒฐ์„ฑ'๊ณผ '๋ฌด์ƒํƒœ' ๋ผ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ (Stateless)
    ์›น ์„œ๋ฒ„๊ฐ€ ์›น ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ. HTTP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒํƒœ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ƒํƒœ ์ •๋ณด ์œ ์ง€๊ฐ€ ํ•„์š”ํ•œ ์ž‘์—…์€ ์ฟ ํ‚ค๋‚˜ ์„ธ์…˜์„ ์ด์šฉํ•œ๋‹ค.
    ์ƒํƒœ์ •๋ณด: ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๋ฉด์„œ ํ•จ๊ป˜ ์ „๋‹ฌํ•œ ๋ฐ์ดํ„ฐ

  • ๋น„์—ฐ๊ฒฐ์„ฑ(Connectionless)
    ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š” ์ˆœ๊ฐ„ ์ž ๊น ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ๋๋‹ค๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์ด ์ „์†ก๋œ ํ›„ ๊ณง๋ฐ”๋กœ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๋Š” ๊ฒƒ์„ ์˜๋ฏธ

HTTP์˜ GET, POST๋ฅผ ๋น„๊ต ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

Get method๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ, POST๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑ ๋˜๋Š” ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š”๋ฐ ์‚ฌ์šฉ๋จ, GET๊ณผ ๋‹ฌ๋ฆฌ ์ „์†กํ•  ๋ฐ์ดํ„ฐ๋ฅผ HTTP ๋ฉ”์‹œ์ง€์˜ Body์— ๋‹ด์•„์„œ ์ „์†กํ•จ

์ฐธ๊ณ 

HTTP์˜ PUT, PATCH๋ฅผ ๋น„๊ต ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

PUT์€ ๋ฆฌ์†Œ์Šค์˜ ๋ชจ๋“  ๊ฒƒ์„ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค. PATCH๋Š” ๋ฆฌ์†Œ์Šค์˜ ์ผ๋ถ€๋ฅผ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.

HTTP์˜ Status Code์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์ •๋ฆฌํ•ด๋†“์€ ๊ธ€

https://velog.io/@w0_0727/HTTP-status-code

HTTP์™€ HTTPS์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์ด HTTPS(Hypertext Transfer Protocol Secure)๋Š” HTTP์˜ ํ™•์žฅ ๋ฒ„์ „ ๋˜๋Š” ๋” ์•ˆ์ „ํ•œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. HTTPS์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์ „์— ์•ˆ์ „ํ•˜๊ณ  ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. HTTP๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ „์†ก๋œ ์ •๋ณด๋ฅผ ์ œ3์ž๊ฐ€ ๊ฐ€๋กœ์ฑ„๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด์ƒ์ ์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ†ต์‹ ์— ๋˜ ๋‹ค๋ฅธ ๋ณด์•ˆ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด HTTPS๋กœ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HTTPS๋Š” HTTP ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ SSL ๋ฐ TLS ๊ธฐ์ˆ ์— ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. - aws

HTTPS์˜ ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

1) ๐Ÿ™‹โ€โ™€๏ธserver "hello": ํด๋ผ์ด์–ธํŠธ hello ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ์„œ๋ฒ„์˜ SSL ์ธ์ฆ์„œ, ์„œ๋ฒ„์—์„œ ์„ ํƒํ•œ ์•”ํ˜ธ ์ œํ’ˆ๊ตฐ, ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•œ ๋˜ ๋‹ค๋ฅธ ๋ฌด์ž‘์œ„ ๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด์ธ "server random"๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

2) โœ…Verify server certificate : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ SSL ์ธ์ฆ์„œ๋ฅผ ์ธ์ฆ์„œ ๋ฐœํ–‰ ๊ธฐ๊ด€(CA)์„ ํ†ตํ•ด ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๊ฐ€ ์ธ์ฆ์„œ์— ๋ช…์‹œ๋œ ์„œ๋ฒ„์ธ์ง€, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉ ์ค‘์ธ ์„œ๋ฒ„๊ฐ€ ์‹ค์ œ ํ•ด๋‹น ๋„๋ฉ”์ธ์˜ ์†Œ์œ ์ž์ธ์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

3) ๐Ÿ” Client key exchange : ํ™•์ธ์ด ์™„๋ฃŒ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” "The premaster secret"๋ผ๊ณ  ํ•˜๋Š” ๋ฌด์ž‘์œ„ ๋ฐ”์ดํŠธ ๋ฌธ์ž์—ด์„ ๊ณต๊ฐœ ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. (ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ SSL ์ธ์ฆ์„œ์—์„œ ๊ณต๊ฐœ ํ‚ค๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.)

4) ๐Ÿ’ณ Send client certificate : ๋งŒ์•ฝ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ธ์ฆ์„œ๋ฅผ ์š”๊ตฌํ•œ๋‹ค๋ฉด ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์•”ํ˜ธํ™”๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ํ•จ๊ป˜ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

5) ๐Ÿง Verify client certificate : ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ The premaster secret์„ ๊ฐœ์ธํ‚ค๋ฅผ ํ†ตํ•ด ํ•ด๋…ํ•ฉ๋‹ˆ๋‹ค.

6) ๐Ÿ Client "finished" : ํด๋ผ์ด์–ธํŠธ๊ฐ€ "client random", "server random", "The premaster secret"๋ฅผ ์ด์šฉํ•ด ๋Œ€์นญํ‚ค๋กœ ํ™œ์šฉํ•  "์„ธ์…˜ ํ‚ค"๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ธ์…˜ ํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ "finished" ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

7) ๐Ÿ Server "finished" : ์„œ๋ฒ„๊ฐ€ "client random", "server random", "The premaster secret"๋ฅผ ์ด์šฉํ•ด ๋Œ€์นญํ‚ค๋กœ ํ™œ์šฉํ•  ์„ธ์…˜ํ‚ค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜ ํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ "finished" ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

8) ๐Ÿค Exchange messages : ํ•ธ๋“œ์…ฐ์ดํฌ๊ฐ€ ์™„๋ฃŒ๋˜๊ณ , ์„ธ์…˜ ํ‚ค๋ฅผ ์ด์šฉํ•ด ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

TCP์™€ UDP๋ฅผ ๋น„๊ต ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

TCP๋Š” ์—ฐ์†์„ฑ๋ณด๋‹ค ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์ „์†ก์ด ์ค‘์š”ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ,UDP๋Š” TCP๋ณด๋‹ค ๋น ๋ฅด๊ณ  ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ์ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์‹ ๋ขฐ์„ฑ๋ณด๋‹ค๋Š” ์—ฐ์†์„ฑ์ด ์ค‘์š”ํ•œ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

์ฐธ๊ณ 

TCP๊ฐ€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋กœ ๊ฐ€์ƒ ํšŒ์„  ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค. 3-way handshaking ๊ณผ์ •์„ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ , 4-way handshaking ๊ณผ์ •์„ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋†’์€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

TCP์˜ 3-Way-Handshake์™€ 4-Way-Handshake์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

3-Way-Handshake

1. ๋จผ์ € Open ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ SYN(๋‚ด ๋ง ๋“ค๋ ค?)๋ฅผ ๋ณด๋‚ด๊ณ  SYN_SENT ์ƒํƒœ๋กœ ๋Œ€๊ธฐํ•œ๋‹ค.
2. ์„œ๋ฒ„๋Š” SYN-RECEIVED ์ƒํƒœ๋กœ ๋ฐ”๊พธ๊ณ  SYN๊ณผ ์‘๋‹ต ACK(์–ด ์ž˜ ๋“ค๋ ค! ๋‚ด ๋ง์€ ๋“ค๋ ค?)๋ฅผ ๋ณด๋‚ธ๋‹ค.
3. SYN๊ณผ ์‘๋‹ต ACK๋ฅผ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ESTABLISHED ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์„œ๋ฒ„์—๊ฒŒ ์‘๋‹ต ACK(์ž˜ ๋“ค๋ ค!)๋ฅผ ๋ณด๋‚ธ๋‹ค.
4. ์‘๋‹ต ACK๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๋Š” ESTABLISHED ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

4-Way-Handshake

1. ๋จผ์ € close๋ฅผ ์‹คํ–‰ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ FIN(์—ฐ๊ฒฐ ๋Š์ž!)์„ ๋ณด๋‚ด๊ณ  FIN-WAIT-1 ์ƒํƒœ๋กœ ๋Œ€๊ธฐํ•œ๋‹ค.
2. ์„œ๋ฒ„๋Š” CLOSE-WAIT์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์‘๋‹ต ACK(์•Œ๊ฒ ์–ด! ์ž ์‹œ๋งŒ~)๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ๋™์‹œ์— ํ•ด๋‹น ํฌํŠธ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ close๋ฅผ ์š”์ฒญํ•œ๋‹ค.
3. ACK๋ฅผ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒํƒœ๋ฅผ FIN-WAIT-2๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
4. close ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ข…๋ฃŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  FIN(๋‚˜๋„ ๋Š์„๊ฒŒ!)์„ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ด LAST_ACK ์ƒํƒœ๋กœ ๋ฐ”๊พผ๋‹ค.
5. FIN์„ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ACK(์•Œ๊ฒ ์–ด!)๋ฅผ ์„œ๋ฒ„์— ๋‹ค์‹œ ์ „์†กํ•˜๊ณ  TIME-WAIT์œผ๋กœ ์ƒํƒœ๋ฅผ ๋ฐ”๊พผ๋‹ค. TIME-WAIT์—์„œ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด CLOSE ๋œ๋‹ค. ACK๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๋„ ํฌํŠธ๋ฅผ CLOSED๋กœ ๋‹ซ๋Š”๋‹ค.

TIME-WAIT : ๋จผ์ € ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ชฝ์—์„œ ์ƒ์„ฑ๋˜๋Š” ์†Œ์ผ“์œผ๋กœ, ํ˜น์‹œ ๋ชจ๋ฅผ ์ „์†ก ์‹คํŒจ์— ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ์†Œ์ผ“์ด๋ฉฐ, TIME-WAIT์ด ์—†๋‹ค๋ฉด, ํŒจํ‚ท์˜ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ํ†ต์‹ ์ž ๊ฐ„ ์—ฐ๊ฒฐ ํ•ด์ œ๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

profile
Developer๋กœ์˜ ์—ฌ์ •

0๊ฐœ์˜ ๋Œ“๊ธ€