๋ฉํ ๋ง 7๋ฒ์งธ(2)
๐ F-lab ๋ฉํ ๋ง ๊ธฐ๋ก
๋ฉํ ๋ง ์ดํ ๋ถ์กฑํ ๋ถ๋ถ์ ์ฑ์ฐ๊ธฐ ์ํ ๊ธฐ๋ก
http๋ ๋ฌด์์ผ๊น? ๊ทธ๋ฆฌ๊ณ https์ ์ฐจ์ด๋?
Hyper Text Transfer Protocol
์ ์ฝ์๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋ธ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํ๋กํ ์ฝ
์ธํฐ๋ท์์ hyper text๋ฅผ ๊ตํํ๊ธฐ ์ํ ํต์ ๊ท์ฝ์ผ๋ก 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ํด๋ผ์ด์ธํธ๋ 80๋ฒ ํฌํธ
๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ฒ๋ 80๋ฒ ํฌํธ์์ ์์ฒญ์ ๋ฐ๋๋ค.
์ฆ, ์ฃผ์์ฐฝ์ www.google.co.kr
์ ๊ฒ์ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ํ์ดํํ์ง ์์๋ ์์ http ๋๋ https๊ฐ ๋ถ๊ฒ ๋๋๋ฐ, ์ด ๋ง์ ์ฆ google ๋๋ฉ์ธ ์ฃผ์์ 80๋ฒ ํฌํธ๋ก ์ ์ํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค.
๊ทธ๋ฌ๋ฉด ๋น๋ก์ html ๋ฌธ์๋ฅผ ์๋ฒ๊ฐ ๋ณด๋ด์ฃผ๊ฒ ๋๋ค.
ํ๋ http๋ ์ํธํ๋์ง ์์
ํ๋ฌธ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์, http๋ฅผ ํตํด ์ค์ํ ๊ฐ์ธ์ ๋ณด(๋น๋ฐ๋ฒํธ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๋ฑ)์ ์ฃผ๊ณ ๋ฐ๊ฒ ๋๋ฉด ์ธ๋ถ์ ๋
ธ์ถ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด Hyper Text Transfer Protocol Secure
, https์ด๋ค.
https๋ ๊ธฐ์กด์ http์ ๋ฐ์ดํฐ ์ํธํ
๊ฐ ์ถ๊ฐ๋ ํ๋กํ ์ฝ์ด๋ค. 443๋ฒ ํฌํธ
๋ฅผ ์ฌ์ฉํ๊ณ ๋คํธ์ํฌ ์, ์ 3์๊ฐ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋๋ก ์ํธํ๋ฅผ ์ง์ํ๊ณ ์๋ค.
https: ๋์นญํค ์ํธํ์ ๋น๋์นญํค ์ํธํ
https๋ ๋์นญํค/๋น๋์นญํค ์ํธํ ๋ฐฉ์์ ๋ชจ๋ ์ฌ์ฉํ๋ค.
-
๋์นญํค ์ํธํ
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋์ผํ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ ๋ฐ ๋ณตํธํ๋ฅผ ์งํํ๋ค.
- ํค๊ฐ ๋ ธ์ถ๋๋ฉด ๋งค์ฐ ์ํํ์ง๋ง, ์ฐ์ฐ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
-
๋น๋์นญํค ์ํธํ
- 1๊ฐ์ ์์ผ๋ก ์ด๋ค์ง ๊ณต๊ฐํค์ ๊ฐ์ธํค๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ ๋ฐ ๋ณตํํ๋ฅผ ์งํํ๋ค.
- ์ฐ์ฐ ์๋๊ฐ ๋ค์ ๋๋ฆฌ์ง๋ง, ํค๊ฐ ๋ ธ์ถ๋์ด๋ ๋น๊ต์ ์์ ํ๋ค๋ ์ฅ์ ์ด ์๋ค.
๋์นญํค/๋น๋์นญํค ์ํธํ๋ ์ถํ ๋ฐ๋ก ๋ค๋ฃจ๋๋ก ํ์!
CORS ์ ์ฑ ์ด๋?
CORS(Cross-Origin Resource Sharing) ์ ์ฑ
์ ๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์
์ ๊ดํ ์ ์ฑ
์ด๋ค. ์ด ๋ ๊ต์ฐจ ์ถ์ฒ๋ ๋ค๋ฅธ ์ถ์ฒ
๋ผ๊ณ ์ดํดํด๋ ๋ฌด๋ฐฉํ๋ค.
์ฆ, ๋ธ๋ผ์ฐ์ ์์ ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
URL์ ๊ตฌ์กฐ
์๋์ ๊ฐ์ ์ฃผ์๊ฐ ์๋ค.
https://jaydenlee1116.github.io:443/tech/react?page=1#Origin์ด๋
- https:// :
Protocol
- jaydenlee1116.github.io :
Host
- :443 :
Port
(์๋ต ๊ฐ๋ฅ) - /tech/react :
Path
- ?page=1 :
Query String
- #Origin์ด๋ :
Fragment
์ถ์ฒ(origin)
URL ๊ตฌ์กฐ์์ Protocol, Host, Port
์ธ ๋ถ๋ถ์ ํฉ์น ๊ฒ์ ์๋ฏธํ๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ์์ location.origin
์ ์คํํ๋ฉด ํ์ธํ ์ ์๋ค.
๋์ผ ์ถ์ฒ ์ ์ฑ (Same-Origin Policy)์ด๋?
๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผ ์ถ์ฒ ์ ์ฑ
(SOP)๋ฅผ ํตํด ๋ค๋ฅธ ์ถ์ฒ์ ๋ฆฌ์์ค ์ ๊ทผ์ ๊ธ์งํ๋ค. ์ฆ, ์์ ์์์์ https://jaydenlee1116.github.io
์๋ ๋ค๋ฅธ ์ถ์ฒ์ ์ฃผ์์์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค๋ฉด ๋์ผ ์ถ์ฒ ์ ์ฑ
์ ์๋ฐํ์ฌ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๋ค๋ ๋ถํธํจ์ด ์์ง๋ง, SOP๋ฅผ ํตํด XSS๋ XSRF ๋ฑ์ ๋ณด์ ์ทจ์ฝ์ ์ ๋
ธ๋ฆฐ ๊ณต๊ฒฉ์ ๋ฐฉ์ดํ ์ ์๋ค.
ํ์ค์ ์ผ๋ก๋ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ์ฐธ๊ณ ํ์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์ ๋ํ ์์ธ ์กฐํญ์ ๋๊ณ ์๋๋ฐ, ๊ทธ๊ฒ ๋ฐ๋ก CORS
์ด๋ค.
CORS์ ๋์์๋ฆฌ, CORS์๋ฌ๋ฅผ ๋ง๋ฌ์ ๋์ ํด๊ฒฐ๋ฒ ๋ฑ์ ์๋ ์ถ์ฒ๋ฅผ ์ฐธ๊ณ ํ๊ณ ์ถํ ๋ ์์ธํ ๊ธฐ๋กํ์
์น ๋ธ๋ผ์ฐ์ ์ ์ฑ๋ฅ์ ์ธก์ ํ๋ ๋ฐฉ๋ฒ - FCP
FCP๋ First Contentful Paint
์ ์ฝ์๋ก ์ฌ์ฉ์๊ฐ ํ๋ฉด์์ ์ปจํ
์ธ ๋ฅผ ๋ณผ ์ ์๋ ํ์ด์ง ๋ก๋ ํ์๋ผ์ธ์ ์ฒซ ์ง์ ์ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ๊ฐ์งํ๋ ์น ํ์ด์ง์ ๋ก๋ ์๋
๋ฅผ ์ธก์ ํ๋ ์ค์ํ ์งํ๊ฐ ๋ ์ ์๋ค.
์ฆ, FCP๋ ํ์ด์ง๊ฐ ๋ก๋๋๊ธฐ ์์ํ ์์ ์์ ํ์ด์ง ์ปจํ
์ธ ์ ์ผ๋ถ๊ฐ ์ ์ ์๊ฒ ์ฒ์ ๋ณด์ฌ์ง๋ ์ง์ ๊น์ง์ ์๊ฐ์ ์๋ฏธํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ข์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํด FCP๋ 1.8์ด ์ดํ
์ฌ์ผํ๋ค๊ณ ํ๋ค.
ํํธ LCP(Large Contentful Paint)์ ์ฃผ์ ์ปจํ
์ธ ์ ๋ก๋๊ฐ ๋ชจ๋ ์๋ฃ๋ ์์ ์ ์ธก์ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
์ถ๊ฐ) Lighthouse: ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ, ์น ํ์ด์ง์ ํ์ง์ ๊ฐ์ ํ ์ ์๋ ์คํ ์์ค ํํ์ ์๋ํ ๋๊ตฌ
Lighthouse๋ฅผ ํตํด FCP๋ฟ ์๋๋ผ ๋ค์ํ ์น์ ์ฑ๋ฅ์ ์ธก์ ํ ์ ์๋ ์งํ๋ฅผ ํ์ธํ ์ ์๋ค.
TCP์ UDP
TCP(Transmission Control Protocol)
- ์ ์ก์ ์ ์ดํ๋ ํ๋กํ ์ฝ
- ์ธํฐ๋ท์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์ธ์ง ํํ๋ก ๋ณด๋ด๊ธฐ ์ํด IP์ ํจ๊ป ์ฌ์ฉํ๋ ํ๋กํ ์ฝ
- ์ฐ๊ฒฐํ ํ๋กํ ์ฝ
- IP๋ ๋ฐ์ดํฐ์ ๋ฐฐ๋ฌ์ ์ฒ๋ฆฌํ๋ค๋ฉด, TCP๋ ํจํฌ์ ์ถ์ ๋ฐ ๊ด๋ฆฌํ๋ค.
- 3-way handshaking์ผ๋ก ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ 4-way handshaking์ผ๋ก ํด์ ํ๋ค.
- ํ๋ฆ ์ ์ด ๋ฐ ํผ์ก ์ ์ด
- ๋์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅ
- UDP๋ณด๋ค๋ ๋๋ฆฐ ์๋
UDP(User Datagram Protocol)
- ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ทธ๋จ ํ๋กํ ์ฝ
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๊ทธ๋จ ๋จ์๋ก ์ฒ๋ฆฌํ๋ ํ๋กํ ์ฝ
- ๋ฐ์ดํฐ๊ทธ๋จ: ๋ ๋ฆฝ์ ์ธ ๊ด๊ณ๋ฅผ ์ง๋๋ ํจํท
- ๋น์ฐ๊ฒฐํ ํ๋กํ ์ฝ
- ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ์ ๋ณด ์ก์ /์์ ์ ๋ํ ์ ํธ์ ์ฐจ๋ฅผ ๊ฑฐ์น์ง ์๋๋ค.
- ๋ฎ์ ์ ๋ขฐ์ฑ
- TCP๋ณด๋ค ๋น ๋ฅธ ์๋
Reference
http์ https
CORS
CORS-2
FCP
TCP-UDP