๐ ๋คํธ์ํฌ ํ๋กํ ์ฝ
1. TCP, HTTP, HTTPS, WebSocket์ ์ค๋ช ํด์ฃผ์ธ์โ
-
TCP (์ ์ก ์ ์ด ํ๋กํ ์ฝ): TCP๋ ์ธํฐ๋ท์์ ๋ ์ปดํจํฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ์ ์กํ๊ธฐ ์ํ ์ ๋ขฐํ ์ ์๋ ์ฐ๊ฒฐ ์งํฅ ํ๋กํ ์ฝ์ ๋๋ค. ๋ฐ์ดํฐ ํจํท์ ์์์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ฉฐ, ์ด๋ ๋คํธ์ํฌ ์ํ์ ๊ด๊ณ์์ด ๋ฐ์ดํฐ๊ฐ ์์ ํ๊ฒ ๋ชฉ์ ์ง์ ๋๋ฌํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
-
HTTP (ํ์ดํผํ ์คํธ ์ ์ก ํ๋กํ ์ฝ): HTTP๋ ํ์ดํผํ ์คํธ(์ฆ, ์น ํ์ด์ง)๋ฅผ ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ์ ๋๋ค. TCP ํ๋กํ ์ฝ ์์ ๊ตฌ์ถ๋์ด ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๊ฐ์ ํต์ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. HTTP๋ ๋ฌด์ํ(stateless)์ด๋ฉฐ, ์ด๋ ์๋ฒ๊ฐ ์ฌ์ฉ์์ ๊ดํ ์ด๋ค ์ ๋ณด๋ ์ ์ฅํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
-
HTTPS (๋ณด์ ํ์ดํผํ ์คํธ ์ ์ก ํ๋กํ ์ฝ): HTTPS๋ HTTP์ ๋ณด์ ๋ฒ์ ์ ๋๋ค. SSL/TLS ํ๋กํ ์ฝ์ ํตํด HTTP ๋ฐ์ดํฐ ์ ์ก์ ์ํธํํ์ฌ ๊ตํ๋๋ ๋ฐ์ดํฐ์ ๋ณด์์ ๋ณดํธํ๊ณ , ์ค๊ฐ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๋ฉฐ, ๋ฐ์ดํฐ์ ๊ธฐ๋ฐ์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
-
WebSocket: WebSocket ํ๋กํ ์ฝ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ง์์ ์ธ ์ฐ๊ฒฐ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ฉฐ, ์ฐ๊ฒฐ์ด ์ค์ ๋ ํ ์๋ฐฉํฅ์ผ๋ก ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ ๋งค ์ ์ก๋ง๋ค ์๋ก์ด ์ฐ๊ฒฐ์ ์ค์ ํด์ผ ํ๋ ์ ํต์ ์ธ HTTP ์์ฒญ๊ณผ ๋ค๋ฆ ๋๋ค. WebSocket์ ์ธ์คํดํธ ๋ฉ์์ง๊ณผ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ ํฉํฉ๋๋ค.
2. Three Way Handshake๋ ๋ฌด์์ธ๊ฐ์?โ
3๋ฐฉํฅ ํธ๋์
ฐ์ดํฌ๋ TCP/IP ๋คํธ์ํฌ์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ฐ๊ฒฐ์ ์ค์ ํ๋ ๊ณผ์ ์ ๋งํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์ธ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์์ธก์ ์์ ๋ฐ ์ก์ ๋ฅ๋ ฅ์ด ์ ์์ธ์ง ํ์ธํ๊ณ , ์ด๊ธฐ ์ํ์ค ๋ฒํธ(ISN)๋ฅผ ํตํด ๋ฐ์ดํฐ์ ๋๊ธฐํ์ ๋ณด์์ ๋ณด์ฅํฉ๋๋ค.
TCP Message Typeโ
๋จ๊ณ๋ฅผ ์ดํดํ๊ธฐ ์ ์, ๊ฐ ์ ํ์ ๋ฉ์์ง๊ฐ ์ด๋ค ์ฃผ์ ๊ธฐ๋ฅ์ ํ๋์ง ์์์ผ ํฉ๋๋ค.
| Message | Description |
|---|---|
| SYN | ์ฐ๊ฒฐ์ ์์ํ๊ณ ์ค์ ํ๋ฉฐ, ์ฅ์น ๊ฐ ์ํ์ค ๋ฒํธ ๋๊ธฐํ์ ๋์ |
| ACK | ์๋๋ฐฉ์๊ฒ SYN์ ์์ ํ์์ ํ์ธ |
| SYN-ACK | ๋๊ธฐํ ํ์ธ, ์์ ์ SYN์ ๋ณด๋ด๋ฉด์ ACK๋ ์ ์ก |
| FIN | ์ฐ๊ฒฐ ์ข ๋ฃ |
Stepsโ
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ฐ๊ฒฐ์ ์์ํ๊ณ SYN ๋ฉ์์ง๋ฅผ ๋ณด๋ด, ์๋ฒ์ ํต์ ์ ์์ํ ์ค๋น๊ฐ ๋์์๊ณผ ์์ ์ด ๋ณด๋ธ ์ํ์ค ๋ฒํธ๋ฅผ ์๋ฆฝ๋๋ค.
- ์๋ฒ๊ฐ SYN ๋ฉ์์ง๋ฅผ ์์ ํ ํ, ํด๋ผ์ด์ธํธ์ ์๋ต์ ์ค๋นํฉ๋๋ค. ์์ ํ SYN ์ํ์ค ๋ฒํธ์ +1์ ํ์ฌ ACK๋ก ๋ฐํํ๊ณ , ๋์์ ์๋ฒ ์์ฒด์ SYN ๋ฉ์์ง๋ ๋ณด๋ ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์๋ต์ ํ์ธํ๊ณ , ์์ธก ๋ชจ๋ ์์ ์ ์ธ ์ฐ๊ฒฐ์ด ์ค์ ๋์ด ๋ฐ์ดํฐ ์ ์ก์ ์์ํฉ๋๋ค.
Exampleโ
Host A๊ฐ ์๋ฒ์ TCP SYN ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉฐ, ์ฌ๊ธฐ์๋ ์์์ ์ํ์ค ๋ฒํธ๊ฐ ํฌํจ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ 1000์ผ๋ก ๊ฐ์ ํฉ๋๋ค.
Host A ===(SYN=1000)===> Server
Server๋ Host A๊ฐ ๋ณด๋ธ ์ํ์ค ๋ฒํธ์ ๋ํด ์๋ตํด์ผ ํ๋ฏ๋ก, ์ํ์ค ๋ฒํธ์ +1์ ํ๊ณ ์์ฒด SYN๋ ๋ณด๋ ๋๋ค.
Host A <===(SYN=2000 ACK=1001)=== Server
Host A๊ฐ Server์ SYN์ ์์ ํ ํ, ํ์ธ ์ํ์ค ๋ฒํธ๋ฅผ ๋ณด๋ด ์๋ตํฉ๋๋ค. Server๊ฐ ๋ณด๋ธ ์ํ์ค ๋ฒํธ์ +1์ ํฉ๋๋ค.
Host A ===(ACK=2001)===> Server
2๋ฒ์ ํธ๋์ ฐ์ดํฌ๋ง์ผ๋ก๋ ๊ฐ๋ฅํ๊ฐ์?โ
- 3๋ฐฉํฅ ํธ๋์ ฐ์ดํฌ์ ๋ชฉ์ ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์์ธก์ ์ก์์ ๋ฅ๋ ฅ์ด ์ ์์ธ์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. 2๋ฒ์ ํธ๋์ ฐ์ดํฌ๋ง์ผ๋ก๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ ๋ฅ๋ ฅ์ ํ๋จํ ์ ์์ต๋๋ค.
- ์ธ ๋ฒ์งธ ํธ๋์ ฐ์ดํฌ๊ฐ ์์ผ๋ฉด, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ํ์ค ๋ฒํธ๋ฅผ ์์ ํ ์ ์์ผ๋ฏ๋ก ํ์ธ์ ๋ณด๋ผ ์๋ ์์ด, ๋ฐ์ดํฐ์ ๋ณด์์ฑ์ ์๋ฌธ์ด ์๊ธธ ์ ์์ต๋๋ค.
- ์ฝํ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ๋ฐ์ดํฐ ๋์ฐฉ ์๊ฐ์ ์ฐจ์ด๊ฐ ์์ ์ ์์ต๋๋ค. ์ ๊ตฌ ๋ฐ์ดํฐ์ ๋์ฐฉ ์์๊ฐ ๋ค๋ฐ๋๋ฉด, ์ธ ๋ฒ์งธ ํธ๋์ ฐ์ดํฌ์ SYN ํ์ธ ์์ด ์ฐ๊ฒฐ์ด ์ค์ ๋๋ฉด ๋คํธ์ํฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
ISN์ด๋ ๋ฌด์์ธ๊ฐ์?โ
ISN์ Initial Sequence Number์ ์ฝ์๋ก, ์์ ์ธก์ ๋ฐ์ ์ธก์ด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋์ ์ํ์ค ๋ฒํธ๋ฅผ ์๋ ค์ค๋๋ค. ์ด๊ฒ์ ๋ฌด์์๋ก ๋์ ์์ฑ๋๋ ์ํ์ค ๋ฒํธ๋ก, ์ 3์์ ์นจ์ ์ ์ํ์ค ๋ฒํธ๋ฅผ ์ถ์ธกํ์ฌ ๋ฉ์์ง๋ฅผ ์์กฐํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
3๋ฐฉํฅ ํธ๋์ ฐ์ดํฌ์์ ๋ฐ์ดํฐ ์ ์ก์ ์ธ์ ์์๋๋์?โ
์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ํธ๋์ ฐ์ดํฌ์ ๋ชฉ์ ์ ์์ธก์ ์ก์์ ๋ฅ๋ ฅ์ ํ์ธํ๋ ๊ฒ์ด๋ฏ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ํธ๋์ ฐ์ดํฌ์์ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค๋ฉด, ์ ์์ ์ธ ์ 3์๊ฐ ๋๋์ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ฌ ์๋ฒ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์บ์ฑ์ ์๋นํ๊ฒ ๋ง๋ค์ด ๊ณต๊ฒฉ์ ๊ธฐํ๋ฅผ ์ค ์ ์์ต๋๋ค.
์ธ ๋ฒ์งธ ํธ๋์ ฐ์ดํฌ์์๋ง, ์์ธก์ด ๋๊ธฐํ ํ์ธ์ ์๋ฃํ๊ณ ์ฐ๊ฒฐ ์ํ์ ์์ผ๋ฏ๋ก ๋ฐ์ดํฐ ์ ์ก์ด ํ์ฉ๋ฉ๋๋ค.
Referenceโ
3. HTTP ์บ์ฑ ๋ฉ์ปค๋์ฆ์ ์ค๋ช ํด์ฃผ์ธ์โ
HTTP ์บ์ฑ ๋ฉ์ปค๋์ฆ์ HTTP ํ๋กํ ์ฝ์์ ์น ํ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ฅ(๋๋ "์บ์")ํ๋ ๊ธฐ์ ๋ก, ์๋ฒ ๋ถ๋ด์ ์ค์ด๊ณ ์ง์ฐ์ ๋ฎ์ถ๋ฉฐ ์น ํ์ด์ง ๋ก๋ฉ ์๋๋ฅผ ๋์ด๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํฉ๋๋ค. ์ฃผ์ ์บ์ฑ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
-
๊ฐ๋ ฅํ ์บ์(Freshness):
Expires๋๋Cache-Control: max-age์๋ต ํค๋๋ฅผ ์ค์ ํ์ฌ, ํน์ ์๊ฐ ๋ด์ ๋ฐ์ดํฐ๋ฅผ ์ต์ ์ํ๋ก ๊ฐ์ฃผํ ์ ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ํ์ธํ์ง ์๊ณ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. -
๊ฒ์ฆ ์บ์(Validation):
Last-Modified์ETag์๋ต ํค๋๋ฅผ ์ฌ์ฉํ์ฌ, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์กฐ๊ฑด๋ถ ์์ฒญ์ ๋ณด๋ผ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์์ ๋์ง ์์์ผ๋ฉด 304(Not Modified) ์ํ ์ฝ๋๋ฅผ ๋ฐํํ์ฌ ๋ก์ปฌ ์บ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์์์ ๋ํ๋ ๋๋ค. -
ํ์ ์บ์(Negotiation): ์ด ๋ฐฉ์์
Vary์๋ต ํค๋์ ์์กดํ๋ฉฐ, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ(์:Accept-Language)์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฒ์ ์ ์บ์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ ์ง ๊ฒฐ์ ํฉ๋๋ค. -
์บ์ ์ ํจ(No-store):
Cache-Control: no-store๊ฐ ์ค์ ๋ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๊ฐ ์บ์๋์ด์๋ ์ ๋๋ฉฐ, ๋งค๋ฒ ์์ฒญ ์ ์๋ฒ์์ ์ต์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
์บ์ฑ ์ ๋ต์ ์ ํ์ ๋ฐ์ดํฐ ์ ํ๊ณผ ์ ๋ฐ์ดํธ ๋น๋ ๋ฑ์ ์์์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ฉฐ, ํจ๊ณผ์ ์ธ ์บ์ฑ ์ ๋ต์ ๋คํธ์ํฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
Service Workerโ
๊ฐ์ธ์ ์ธ ๊ฒฝํ์ผ๋ก, Web App์ PWA๋ฅผ ์ค์ ํ ํ, ๊ธฐ๋ณธ ์คํ์ผ์ด๋ ๋ก๊ณ , ์ฌ์ง์ด ์คํ๋ผ์ธ์ฉ offline.html์ service-worker.js์ ๋ฑ๋กํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ณ ๊ฐ์ด ์คํ๋ผ์ธ ์ํ์์๋, ์ด ์บ์ ๋ฉ์ปค๋์ฆ์ ํตํด ํ์ฌ ์น์ฌ์ดํธ๋ ๋คํธ์ํฌ ์ํ๋ฅผ ์ ์ ์์ผ๋ฉฐ, ์ผ์ ์์ค์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ์งํ ์ ์์ต๋๋ค.