[๐Ÿ‘‘] ๊ธฐ์ˆ ๋ฉด์ ‘ ์˜ˆ์ƒ์งˆ๋ฌธ - ๋„คํŠธ์›Œํฌ

๋˜๋ ยท2023๋…„ 12์›” 4์ผ
0

1. HTTPS์˜ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”?

HTTPS์˜ ์ž‘๋™์›๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋„์ฒญ๊ณผ ๋ณ€์กฐ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•จ์œผ๋กœ์จ ๋ณด์•ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์€ ์›น์‚ฌ์ดํŠธ์—์„œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์ค‘์š”ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž์™€ ์›น ์„œ๋ฒ„ ๊ฐ„์˜ ์•ˆ์ „ํ•œ ํ†ต์‹ ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ•ธ๋“œ์…ฐ์ดํฌ (Handshake)
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ, ๋จผ์ € SSL ํ•ธ๋“œ์…ฐ์ดํฌ๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
์ด ๋‹จ๊ณ„์—์„œ๋Š” ์„œ๋กœ ์–ด๋–ค ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ‚ค๋ฅผ ์‚ฌ์šฉํ• ์ง€ ํ˜‘์ƒ์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„๋Š” ๊ณต๊ฐœํ‚ค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™”
์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ์…˜ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด ์„ธ์…˜ ํ‚ค๋ฅผ ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„์—๊ฒŒ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
์„œ๋ฒ„๋Š” ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค๋กœ ์ด ์•”ํ˜ธ๋ฌธ์„ ํ•ด๋…ํ•˜์—ฌ ์„ธ์…˜ ํ‚ค๋ฅผ ํš๋“ํ•ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”๋œ ํ†ต์‹ 
์ด์ œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ํ•ธ๋“œ์…ฐ์ดํฌ ๋‹จ๊ณ„์—์„œ ํ˜‘์ƒํ•œ ์„ธ์…˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ณ  ํ•ด๋…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•”ํ˜ธํ™”๋œ ์„ธ์…˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†ก๋˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์•ˆ์ „ํ•˜๊ฒŒ ์•”ํ˜ธํ™”๋˜๋ฏ€๋กœ ์ค‘๊ฐ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋กœ์ฑ„๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

SSL ์ธ์ฆ์„œ
๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ SSL ์ธ์ฆ์„œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ ์‹ ์›์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
SSL ์ธ์ฆ์„œ๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ด€(Certificate Authority, CA)์— ์˜ํ•ด ์„œ๋ช…๋˜์–ด ์žˆ์–ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ์‹ ์›์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


2. TCP 3 way handshake๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”?

TCP/IP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์„ ์‹œ์ž‘ํ•  ๋•Œ ์„ธ์…˜์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.
์ด ๊ณผ์ •์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์—ฐ๊ฒฐ์„ ํ™•๋ฆฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

SYN (Synchronize)
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
์ด ๋ฉ”์‹œ์ง€์—๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„ ํƒํ•œ ์ดˆ๊ธฐ ์ˆœ์ฐจ ๋ฒˆํ˜ธ(Initial Sequence Number, ISN)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ISN์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ์ž„์˜์˜ ๊ฐ’์œผ๋กœ, ์—ฐ๊ฒฐ์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

SYN-ACK (Synchronize-Acknowledgment)
์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ , ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์œผ๋กœ SYN๊ณผ ํ•จ๊ป˜ ์ž์ฒด์˜ ISN์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ISN์— 1์„ ๋”ํ•œ ๊ฐ’์„ ์ž์ฒด์˜ ISN์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์„œ๋ฒ„๋Š” ์ด ์‹œ์ ์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์˜€์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ACK(acknowledgment)๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

ACK (Acknowledgment)
ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ SYN-ACK ๋ฉ”์‹œ์ง€์— ์‘๋‹ต์œผ๋กœ ACK๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ISN์— 1์„ ๋”ํ•œ ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


3. TCP ์™€ UDP ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์„ค๋ช…ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”?

TCP ์‚ฌ์šฉ ๐Ÿ‘‰ ํŒŒ์ผ ์ „์†ก, ์ด๋ฉ”์ผ ์ „์†ก, ์›น ๋ธŒ๋ผ์šฐ์ง•๊ณผ ๊ฐ™์ด ์‹ ๋ขฐ์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ.
UDP ์‚ฌ์šฉ ๐Ÿ‘‰ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ, ์Œ์„ฑ ํ†ตํ™”, ์˜จ๋ผ์ธ ๊ฒŒ์ž„๊ณผ ๊ฐ™์ด ์†์‹ค์ด๋‚˜ ์ง€์—ฐ์ด ์ ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ.


TCP (Transmission Control Protocol) ๋ž€?

์—ฐ๊ฒฐ ์ง€ํ–ฅ์„ฑ (Connection-Oriented)
TCP๋Š” ์—ฐ๊ฒฐ์„ ํ™•๋ฆฝํ•œ ํ›„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ ์ง€ํ–ฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 3-way handshake๋ฅผ ํ†ตํ•ด ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์‹ ๋ขฐ์„ฑ ๋ณด์žฅ
๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘ ์†์‹ค, ์ˆœ์„œ ์ „ํ™˜ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ๊ฒ€์ถœํ•˜๊ณ  ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ์‹ ๋ขฐ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

ํ๋ฆ„ ์ œ์–ด ๋ฐ ํ˜ผ์žก ์ œ์–ด
TCP๋Š” ์†ก์‹  ์ธก๊ณผ ์ˆ˜์‹  ์ธก์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„ ์ฐจ์ด๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ ์œ„ํ•œ ํ๋ฆ„ ์ œ์–ด์™€ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ˜ผ์žก ์ œ์–ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ „์†ก ์ˆœ์„œ ๋ณด์žฅ
TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ „์†กํ•˜๋ฉฐ, ์ˆ˜์‹  ์ธก์—์„œ๋Š” ์ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์žฌ์กฐ๋ฆฝํ•˜์—ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.


UDP (User Datagram Protocol) ๋ž€?

๋น„์—ฐ๊ฒฐ์„ฑ (Connectionless)
UDP๋Š” ์—ฐ๊ฒฐ ์„ค์ • ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์—ฐ๊ฒฐ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 3-way handshake์™€ ๊ฐ™์€ ์—ฐ๊ฒฐ ์„ค์ • ์ ˆ์ฐจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์‹ ๋ขฐ์„ฑ์ด ๋‚ฎ์Œ
UDP๋Š” ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์†์‹ค์ด๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ๋ฆ„ ์ œ์–ด ๋ฐ ํ˜ผ์žก ์ œ์–ด ์—†์Œ
UDP๋Š” ํ๋ฆ„ ์ œ์–ด๋‚˜ ํ˜ผ์žก ์ œ์–ด ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ ์ „์†ก ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ „์†ก ์ˆœ์„œ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ
UDP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆ˜์‹  ์ธก์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


4. CORS๋ž€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

CORS๋Š” Cross-Origin Resource Sharing์˜ ์•ฝ์ž๋กœ, ์›น ํŽ˜์ด์ง€์—์„œ ๋กœ๋“œ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ํ—ˆ์šฉํ•˜๋Š” ๋ณด์•ˆ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณด์•ˆ ์ƒ์˜ ์ด์œ ๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…(Same-Origin Policy)์„ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜๋ ค๋ฉด CORS๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„์ธก ์„ค์ • ๋ฐฉ๋ฒ•

  • ์‘๋‹ต ํ—ค๋”์— CORS๊ด€๋ จ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ํ—ˆ์šฉ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„์—์„œ๋Š” Access-Control-Allow-Origin ํ—ค๋”๋ฅผ ํ†ตํ•ด ํ—ˆ์šฉ๋œ ๋„๋ฉ”์ธ์˜ ๋ชฉ๋ก์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋ชจ๋“  ๋„๋ฉ”์ธ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด Access-Control-Allow-Origin: *๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์ธก ์„ค์ • ๋ฐฉ๋ฒ•

  • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋ฆฌ์†Œ์Šค ์š”์ฒญ ์‹œ, ์ ์ ˆํ•œ CORS ํ—ค๋”๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž๋™์œผ๋กœ CORS๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋ณ„๋„์˜ ๊ตฌํ˜„์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
profile
โœจ ๐‘ฌ๐’—๐’†๐’“๐’š๐’•๐’‰๐’Š๐’๐’ˆ ๐’„๐’๐’Ž๐’†๐’” ๐’•๐’ ๐’‰๐’Š๐’Ž ๐’˜๐’‰๐’ ๐’‰๐’–๐’”๐’•๐’๐’†๐’” ๐’˜๐’‰๐’Š๐’๐’† ๐’‰๐’† ๐’˜๐’‚๐’Š๐’•๐’”. โœจ

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