๋ชจ๋ ๊ฒ์ HTTP ๊ธฐ๋ฐ ์์์ ๋์ํ๋ค.
html ์ด๋ฏธ์ง ์์ ํ์ผ ๋ฟ๋ง ์๋๋ผ ์ฑ๊ณผ ์๋ฒ๊ฐ ํต์ ํ ๋์ ์๋ฒ์ ์๋ฒ๋ผ๋ฆฌ ํต์ ํ ๋๋ HTTPํ๋กํ ์ฝ ์์์
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
ํนํ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ SpringMVC๋ JSP PHP, ํ์ด์ฌ ์ฅ๊ณ ๋ฃจ๋น์จ๋ ์ผ์ฆ๊ฐ์ ์น ๊ธฐ์ ์ด๋ ์นํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉ
ํ๊ฒ ๋จ ์ด๋ฐ ์น ๊ธฐ์ ๋ค์ด ๋ชจ๋ HTTP ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด์์.
์ธํฐ๋ท ๋คํธ์ํฌ
1. ์ธํฐ๋ท ํต์
์ปดํจํฐ ๋์ด ๋ถ์ด์์ผ๋ฉด ๋จ์ํ ์ผ์ด๋ธ์ ์ฐ๊ฒฐํด์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค ํ์ง๋ง ํ๋์๋ ์ปดํจํฐ๊ฐ์ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ฆฌ๋จ์ด์ ธ
์๊ธฐ ๋๋ฌธ์ ํต์ ์ ์ด๋ ค์์ด ์กด์ฌํ๋ค. ์ด๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ๊ฒ์ด ์ธํฐ๋ท ํต์ ์ด๋ค. ๋ฉ๋ฆฌ์๋ ์ปดํจํฐ์์
ํต์ ์ ํด์ ์ผ์ด๋ธ์ด ๋ ์๋์๊ณ ์ธ๊ณต์์ฑ์ ํตํด ๋ด๋ ค์ฌ ์๋ ์๋ค. ์๋ง์ ์ค๊ฐ ๋
ธ๋๋ผ๋ ์๋ฒ๋ฅผ ๊ฑฐ์ณ์ ๋ฉ์์ง๊ฐ
์์ ํ๊ฒ ๋์ด๊ฐ์ผํ๋ค. ์ด๋ ํ ๊ท์น์ผ๋ก ์์ ํ๊ฒ ๊ฑฐ์ณ์ ๋์ด๊ฐ๋์ง๋ IP๋ฅผ ํตํด ์ ์ ์๋ค.
2. IP(Internet Protocol) (IP์ฃผ์๋ฅผ ๋ถ์ฌํ๊ณ ์ฐพ์๊ฐ๋ ๋ฐฉ์์ IP๋ผ ๋ถ๋ฅธ๋ค.)
๋ณต์กํ ์ธํฐ๋ท๋ง์์ ๋ค๋ฅธ ์ปดํจํฐ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ผ๋๋ ๊ท์น์ด ํ์ํ๋ค. ๊ทธ๊ฒ์ด IP ์ฃผ์์ด๋ค.
IP ์ฆ, ์ธํฐ๋ท ํ๋กํ ์ฝ์ ์ญํ ์
์ง์ ํ IP์ฃผ์(IP Address)์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค. ํจํท์ด๋ผ๋ ํต์ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
IP ํจํท ์ ๋ณด์๋ ๋ด ์์ดํผ์ ๋ฉ์์ง๋ฅผ ๋ฐ์ ์๋ ์์ดํผ์ ์ ์กํ ๋ฐ์ดํฐ ์ฆ ๋ฉ์์ง๋ฅผ ๋ฃ์ด์ค ์ ์๋ค.
์ธํฐ๋ท๋ง์ IPํจํท์ ์ฃผ๊ฒ๋๋ฉด ์ด๋ฌํ ํจํท์ ๋
ธ๋๋ผ๋ฆฌ ๋ฐ์์ ์ ๋ฌ์ ๋ฌ์ ๋ฌ์ ํตํด ์ต์ข
์ผ๋ก ์ ๋ฌ์ด ๋๊ฒ๋๋ค.
์ด๋ฌํ๊ณผ์ ์ด ๊ฐ๋ฅํ ์ด์ ๋ IPํต์ ํ๋กํ ์ฝ์ ํต์ ๊ท์ฝ ๋๋ถ์ ๊ฐ๋ฅํ๋ค.
๋ฐ์ ์๋ฒ๋ ์ ์ ๋ฌ์ด ๋์๋ค๊ณ ๋ณด๋ด์ค ๋ ๋ค์ ๋
ธ๋๋ค์ ์๋ณตํด์ ๋ค์ ๋์๊ฒ ์ ๋ฌ์ด ๋๋ค.
์ธํฐ๋ท๋ง์ด ์๋ ๋ณต์กํ๊ธฐ์ ๋ด๊ฐ ์ ๋ฌํ ๋ ์ด์ฉํ ๋
ธ๋๋ค์ ๋ค์ ๋ฐ์๋๋ ์ด์ฉ์ํ๊ณ ๋ค๋ฅธ ๋
ธ๋๋ค์ ํตํด
์ฌ ์๋ ์๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ฌํ IPํ๋กํ ์ฝ์ ๋ฐฉ์์๋ ํ๊ณ๊ฐ ์กด์ฌํ๋ค.
( IP์ฃผ์๋ฅผ ๋ถ์ฌํ๊ณ ์ฐพ์๊ฐ๊ณ , IPํจํท์ ๋ด์์ฃผ๋ ์ด๋ฌํ ๋ฐฉ์์ ํ๊ณ )
IP ํ๋กํ ์ฝ์ ํ๊ณ
1. ๋น์ฐ๊ฒฐ์ฑ
ํจํท์ ๋ฐ์ ๋์์ด ์๊ฑฐ๋ ์๋น์ค ๋ถ๋ฅ ์ํ์ฌ๋ ํจํท ์ ์ก
( ํด๋ผ์ด์ธํธ๋ ๋์ ์๋ฒ๊ฐ ํจํท์ ๋ฐ์ ์ ์๋ ์ํ์ธ์ง ์๋์ง ๋ชจ๋ฅธ๋ค. )
2. ๋น์ ๋ขฐ์ฑ
์ค๊ฐ์ ํจํท์ด ์ฌ๋ผ์ง๋ฉด?
๋
ธ๋๋ ๊ฒฐ๊ตญ ์๋ฒ์ด๋ค. ํจํท์ ๋ณด๋ผ๋ ์ค๊ฐ ๋
ธ๋๊ฐ ๊บผ์ ธ๋ฒ๋ฆฌ๊ฑฐ๋ ์ฌ๋ผ์ง ๊ฒฝ์ฐ์๋ ๋ด๊ฐ ๋ณด๋ด๋ ํจํท์ด ์ ์ค๋ ์ ์๋ค.
( ์๋ฅผ ๋ค๋ฉด ๊ด์ผ์ด๋ธ์ด ๋ง๊ฐ์ง๋ ๊ฒฝ์ฐ ํจํท์ ์ ์ค์ด ๋ฐ์ํ ์ฐ๋ ค๊ฐ ์กด์ฌํ๋ค. )
ํจํท์ด ์์๋๋ก ์์ค๋ฉด? ( ํจํท ์ฌ๋ฌ๊ฐ ๋ณด๋์๋ ์์? )
ํจํท์ ๋ค์ด๊ฐ๋ ๋ฉ์์ง๊ฐ ๋๋ฌด ๋ง์์ง๋ฉด ํ๋ฒ์ ๋ณด๋ด๊ธฐ๊ฐ ๋ถ๋ด์ค๋ฌ์์ ธ ํจํท์ ๋์ด์ ๋ณด๋ด๊ฒ ๋๋ค. ๋ณดํต (1500๋ฐ์ดํธ)
ํจํท๋ค์ ์ค๊ฐ์ ๋ค๋ฅธ ๋
ธ๋๋ฅผ ํ ์๊ฐ ์๋ค. ์ด๋ฌํ ๊ณผ์ ๋๋ฌธ์ ๋ณด๋ด๋ ์์๊ฐ ๋ณด์ฅ์ด ๋์ง ์๋๋ค. ์๋๊ฐ ์ ํ ๋ฌ๋ผ์ง.
3. ํ๋ก๊ทธ๋จ ๊ตฌ๋ถ
๊ฐ์ IP๋ฅผ ์ฌ์ฉํ๋ ์๋ฒ์์ ํต์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ ์ด์์ด๋ฉด?
์จ๋ผ์ธ ๊ฒ์์ ํตํด ๊ฐ์ IP๊ฐ ์ค๋ณต๋๋ ๊ฒฝ์ฐ? ๋ฌธ์ ? ์ด๋ฐ๊ฑธ ๊ตฌ๋ถ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ?
์ด๋ฌํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํด ์ฃผ๊ธฐ ์ํด ๋์จ ๋ฐฉ๋ฒ์ด TCPํ๋กํ ์ฝ์ด๋ค.
3. TCP, UDP
์ธํฐ๋ท ํ๋กํ ์ฝ ์คํ์ 4๊ณ์ธต
1. ์ ํ๋ฆฌ์ผ์ด์
- HTTP, FTP ( ์ ค์ )
2. ์ ์ก ๊ณ์ธต - TCP, UDP
3. ์ธํฐ๋ท ๊ณ์ธต - IP
4. ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๊ณ์ธต
์ด๊ณณ์ IP๊ณ์ธต์ TCP๋ฅผ ๊ณ์ธต์ ์ฌ๋ ค ๋ณด์์ ํด์ค๋ค.
ํ๋กํ ์ฝ ๊ณ์ธต
์ ํ๋ฆฌ์ผ์ด์
-> ์น ๋ธ๋ผ์ฐ์ , ๋คํธ์ํฌ ๊ฒ์, ์ฑํ
ํ๋ก๊ทธ๋จ ๋ฑ๋ฑ ( SOCKET ๋ผ์ด๋ธ๋ฌ๋ฆฌ )
OS -> TCP, UDP, IP(Internet Protocol)
๋คํธ์ํฌ ์ธํฐํ์ด์ค -> LAN๋๋ผ์ด๋ฒ LAN์ฅ๋น -->> LAN์นด๋
๊ณ์ธต์ ํตํด ์ ๋ฌ์ด ๋๋ ๊ณผ์
1. ํ๋ก๊ทธ๋จ์ด Hello, world ๋ฉ์์ง ์์ฑ ํ ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต์ SOCKET๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด OS๊ณ์ธต์ ์ ๋ฌ
2. OS ๊ณ์ธต์ TCP๊ฐ HelloWorld๋ผ๋ ๋ฉ์์ง์ TCP์ ๋ณด๋ฅผ ์์ด๋ค.
3. TCP ๋ฐ์ IP๊ณ์ธต์ IP์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์์ด๋ค. ์ด๋ ๊ฒํด์ IPํจํท์ด ์์ฑ์ด๋๋ค.
4. IPํจํท์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ํตํด์ LAN์นด๋๋ฅผ ํตํด์ ๋๊ฐ๋ ์ด๋๋ท ํ๋ ์์ด ์์์ ธ์ ๋๊ฐ๊ฒ๋๋ค.
์ฆ , ์ด๋ฌํ ๊ณผ์ ์ ํตํด ๋ด๊ฐ ์ ๋ณด๋ฅผ ์ ๋ฌํ ์ ์๊ฒ ๋๋ค.
IP ํจํท ์์๋ TCP์ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ
TCP์ ์ ๋ณด๋ ์ถ๋ฐ์ง PORT, ๋ชฉ์ ์ง PORT, ์ ์ก ์ ์ด, ์์, ๊ฒ์ฆ ์ ๋ณด...๋ฑ์ด ๋ค์ด๊ฐ๋ค.
IP๋ง์ผ๋ก๋ ํด๊ฒฐ์ด ์๋ผ๋ ์ ๋ณด๋ค์ ์
๋ ฅํด์ค์ผ๋ก์จ IP์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค๋ค.
TCPํน์ง
์ ์ก ์ ์ด ํ๋กํ ์ฝ(Transmission Control Protocol)
1. ์ฐ๊ฒฐ์งํฅ - TCP 3 way handshake(๊ฐ์ ์ฐ๊ฒฐ)
์ปดํจํฐ๊ฐ์ ์ฐ๊ฒฐ์ฌ๋ถ๋ฅผ ํ์ธ ํ ์ฐ๊ฒฐ์ ํด์ฃผ๊ณ ํจํท์ ๋ณด๋ด์ฃผ๋ ๋ฐฉ์(์ฐ๊ฒฐ ์งํฅ)
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ SYN์ด๋ผ๋ ์ ์ ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์๋ฒ์ ์ปดํจํฐ๊ฐ ์ผ์ ธ์์ผ๋ฉด
SYN(์ ์ ์์ฒญ) + ACK(์ ์ ์๋ฝ)๋ฅผ ๋ณด๋ด๊ฒ ๋๋ค ๋ค์ ์์๋๋ ํด๋ผ์ด์ธํธ๋ ACK(์์ฒญ ์๋ฝ)์ ๋ณด๋ด๋ฉฐ ํต์ ์ด
์ด๋ฃจ์ด์ง๋ค. ( ์ด๋ ๊ฒ 3๋ฒ ์ฃผ๊ณ ๋ฐ๊ธฐ๋๋ฌธ์ 3 way handshake๋ผ๊ณ ๋ถ๋ฅธ๋ค. ) ์๋ต์ด ์์ผ๋ฉด ์๋ณด๋ด๊ฒ ๋๋ค.
SYN : ์ ์ ์์ฒญ
ACK : ์์ฒญ ์๋ฝ
2. ๋ฐ์ดํฐ ์ ๋ฌ ๋ณด์ฆ
ํจํท์ด ์ค๊ฐ์ ๋๋ฝ์ด ๋๋ฉด ๋ฉ์์ง๋ฅผ ๋ชป๋ฐ์๋ค๋๊ฑธ ์ ์๊ฐ์๊ฒ๋๋ค.
3. ์์ ๋ณด์ฅ
์์๋ฅผ ๋ณด์ฅํด์ค.
์ ๋ขฐํ ์ ์๋ ํ๋กํ ์ฝ / ํ์ฌ๋ ๋๋ถ๋ถ TCP๋ฅผ ์ฌ์ฉํ๋ค.
์์๊ฐ ์๋ชป๋ ๊ณณ๋ถํฐ ๋ค์ ๋ณด๋ด๋ฌ๋ผ๊ณ ์์ฒญ์ ํ๊ฒ๋จ.
TCP์๋ ์ ์ก์ ๋ณด ๋ฐ ์์์ ๋ณด๋ ํฌํจ์ด ๋์ด์๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ์ ์ ์๊ฒ๋จ.
UDP ํน์ง
์ฌ์ฉ์ ๋ฐ์ดํฐ๊ทธ๋จ ํ๋กํ ์ฝ(User Datagram Protocol)
1 ํ์ ๋ํ์ง์ ๋น์ (๊ธฐ๋ฅ์ด ๊ฑฐ์ ์์)
2 ์ฐ๊ฒฐ์งํฅ - TCP 3 way handshake X
3 ๋ฐ์ดํฐ ์ ๋ฌ ๋ณด์ฆ X
4 ์์ ๋ณด์ฅ X
5 ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐ ์์๊ฐ ๋ณด์ฅ๋์ง ์์ง๋ง, ๋จ์ํ๊ณ ๋น ๋ฆ
์ ๋ฆฌ
IP์ ๊ฑฐ์ ๊ฐ๋ค. +PORT+์ฒดํฌ์ฌ ์ ๋๋ง ์ถ๊ฐ
์ ํ๋ฆฌ์ผ์ด์
์์ ์ถ๊ฐ ์์
ํ์
์ฒดํฌ์ฌ : ๋ฉ์์ง์ ๋ํด ๋ง๋์ง ๊ฒ์ฆ ๋ฐ์ดํฐ ์ ๋๊ฐ ์ถ๊ฐ๊ฐ ๋์ด์์.
TCP์ ์ต์ ํ๋ฅผ ์ํด ์ฌ์ฉ์ ํ๋ ๊ฒ์ UDP์ด๋ค.
4. PORT ( ์์ด ๋ป์ ๋ฐฐ๊ฐ ๋์ฐฉํ๋ ํญ๊ตฌ๋ผ๋ ๋ป์ )
ํ๋์ ์์ดํผ์์ ์ฌ๋ฌ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฒญ์ ํ๋ฉด ์ฌ๋ฌ๊ฐ์ง ํจํท์ด ๋ค์ด์ค๊ฒ๋จ. ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์
์
๊ตฌ๋ณ์ด ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋์จ ๋ฐฉ๋ฒ์ด๋ค. ex) ๊ฒ์์ฉ์ธ์ง, ์์
์ฉ์ธ์ง ๋ฑ๋ฑ
ํ๋ฒ์ ๋ ์ด์ ์ฐ๊ฒฐํด์ผ ํ ๋ ์ฌ์ฉํ๋ค.
๊ฒ์๊ณผ ํ์ํตํ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ๋ฑ ํ๋ฒ์ ์์ฒญ์ ํ๊ฒ ๋๋ฉด ํจํท์ ๊ตฌ๋ถ์ ์ํด ๋์จ ๋ฐฉ๋ฒ์ด๋ค.
๊ฐ์ ์์ดํผ ๋ด์์ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถํ๋๊ฒ์ ํฌํธ๋ฒํธ์ด๋ค.
TCP/IP ์ฆ, IP์์ TCP์์ ํด๋ผ์ด์ธํธ์ PORT๋ํ ๊ฐ์ด ๋ณด๋ด๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋๋ฐฉ์ PORT๋ฅผ ๋ณด๊ณ
์์ ์ PORT๋ํ ๊ฐ์ด ๋ณด๋ด์ฃผ๋ฉด์ ํต์ ์ด ๋๋ค. PORT๋ ๊ฒ์ ํ์ํตํ ๋ฐ ์น ๋ธ๋ผ์ฐ์ ๋ฑ๋ฑ์ด ๋ค ๋ค๋ฅด๋ค.
PORT๋ 0 ~ 65535 ๊น์ง ํ ๋น์ด ๊ฐ๋ฅํ๋ค. 0 ~ 1023์ ์ ์๋ ค์ง ํฌํธ๋ผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
HTTP : 80 ํฌํธ์ด๋ค.
HTTPS : 443 ํฌํธ์ด๋ค.
5. DNS(Domain Name System) ๋๋ฉ์ธ ๋ค์ ์์คํ
// ์๋ฒ์ ์ด๊ฑฐ
๊ธฐ์กด์๋ IP๋ฅผ ํตํด ํต์ ์ ํด๋ดค๋๋ฐ ์ด ์์ดํผ๋ฅผ ๊ธฐ์ตํ๊ธฐ๊ฐ ์ด๋ ต๋ค. ๋ ์์ดํผ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ์์.
์ด๋ ๊ฒ ๋๋ฉด ๋ณ๊ฒฝ๋ ์์ดํผ๋ฅผ ์ ๋ฐฉ๋ฒ์ด ์์ด์ง๋ค. ํญ์ ๋ณด๋ด๋ ๊ณณ์๋ง ๋ณด๋ด๋ฉฐ ๊ธฐ์ต์ ํ๊ธฐ์ ๋ฌธ์ ๊ฐ ์๊น.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ DNS๊ฐ ๋์์.( ์ค๊ฐ์ ์ ํ๋ฒํธ๋ถ ๊ฐ์ ์๋ฒ๋ฅผ ์ ๊ณต์ ํด์ค๋ค.)
DNS์๋ฒ์ ๋๋ฉ์ธ์ ๋ฑ๋กํ ์ ์์. ๋๋ฉ์ธ์ google.com๊ฐ์ ์ด๋ฆ์ผ๋ก ๋ฑ๋ก์ด ๊ฐ๋ฅํ๋ค!
ํด๋ผ์ด์ธํธ๊ฐ ๋๋ฉ์ธ์ ํตํด ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง. ๋๋ฉ์ธ ์๋ฒ ์ฆ DNS์๋ฒ์ ๋๋ฉ์ธ ๋ช
์ ํตํด ํด๋น ๋๋ฉ์ธ์
IP์ฃผ์๋ฅผ ์์ฒญํ๊ฒ๋จ. DNS์๋ฒ๊ฐ IP์ฃผ์๋ฅผ ์๋ต์ ํด์ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ IP์ฃผ์๋ฅผ ํตํด ์ ์์ ํ๊ฒ ๋๋ค.
IP๋ฅผ ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด DNS์๋ฒ์ IP์ฃผ์๋ฅผ ๋ฐ๊พธ๊ณ ๋ณธ์ธ์ IP์ฃผ์๋ฅผ ๋ฐ๊พธ๊ฒ ๋จ. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋จ.
(๋ณ๊ฒฝ ๋ฐ ๊ธฐ์ต์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ ) ๋ง์น ์ ํ๋ฒํธ ๋ถ ๋ง๋ฅ ํด๊ฒฐ
URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ
URI(Uniform Resource Identifier) ( ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ํตํฉ๋ ๋ฐฉ๋ฒ? ์ด๋ฐ ๋ป์ )
URI ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ค. ํฐ๋ฒ์ ์์ URL , URN์ด ๋ค์ด๊ฐ์๋ค.
URL(Resource Locator) , URN(Resource Name) ์ด๋ฆ
Uniform : ๋ฆฌ์์ค ์๋ณํ๋ ํต์ผ๋ ๋ฐฉ์
Resource : ์์, URI๋ก ์๋ณํ ์ ์๋ ๋ชจ๋ ๊ฒ(์ ํ ์์)
Identifier : ๋ค๋ฅธ ํญ๋ชฉ๊ณผ ๊ตฌ๋ถํ๋๋ฐ ํ์ํ ์ ๋ณด
URL - Locator : ๋ฆฌ์์ค๊ฐ ์๋ ์์น๋ฅผ ์ง์
URN - Name : ๋ฆฌ์์ค์ ์ด๋ฆ์ ๋ถ์ฌ
์์น๋ ๋ณํ ์ ์์ง๋ง, ์ด๋ฆ์ ๋ณํ์ง ์๋๋ค.
์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ
[userinfo@] : URL์ ์ฌ์ฉ์์ ๋ณด๋ฅผ ํฌํจํด์ ์ธ์ฆ / ๊ฑฐ์ ์ฌ์ฉํ์ง ์์
host : ํธ์คํธ๋ช
/ ๋๋ฉ์ธ ๋ช
์ด๋ IP์ฃผ์๋ฅผ ์ง์ ์ฌ์ฉ์ด ๊ฐ๋ฅํจ.
port : ํฌํธ๋ ์๋ต์ด ๊ฐ๋ฅํ๋ฉฐ http๋ 80 https๋ 443 ( ํฌํธ๋ ์ด์ฐจํผ ๋จ์ํ ๊ตฌ๋ถ์ ์ํ UDP์ ๊ธฐ๋ฅ์ )
path : ๋ฆฌ์์ค ๊ฒฝ๋ก(path), ๊ณ์ธต์ ๊ตฌ์กฐ
URL์ ๊ฒฝ๋ก๋ฅผ ์
๋ ฅ์ ํ๋ฉด ์น ๋ธ๋ผ์ฐ์ ๋ DNS์๋ฒ๋ฅผ ์กฐํ ํ IP์ฃผ์๋ฅผ ๋ฐ์์จ๋ค. port๋ฅผ ์๋ต ํ๋ฉด
http๋ 80 , https๋ 443์ผ๋ก port๊ฐ ์
๋ ฅ์ด ๋๋ค. ip์ฃผ์์ ํฌํธ์ ๋ณด๋ฅผ ์ฐพ์๋ธ๋ค.
HTTP์์ฒญ ๋ฉ์์ง๋ฅผ ์์ฑํ๋ค.
์น ๋ธ๋ผ์ฐ์ ๊ฐ HTTP ๋ฉ์์ง ์์ฑ ์์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด OS์ TCP/IP๊ณ์ธต์ ์ ๋ฌ์ ํ๋ค.
(์ด ๊ณผ์ ์ ์ฐ๊ฒฐ์ ์ํค๋ ๊ณผ์ ์ด๋ค. TCP 3way handshake์ ๊ฐ์์ฐ๊ฒฐ์ ํตํด ํ์ธ ํ๋ ๊ณผ์ ์ด๋ค.)
TCP/IP ๋ก ๊ตฌ๊ธ ์๋ฒ ์ฐ๊ฒฐ(IP, PORT) ํ ๋ฐ์ดํฐ ์ ๋ฌ
TCP/IP ํจํท ์์ฑ, HTTP ๋ฉ์์ง ํฌํจ LAN์ ํตํด ์ธํฐ๋ท -> ์๋ฒ๋ก ๊ฐ๋ค.
์ธํฐ๋ท๋ง์ ๋์ง๋ฉด ์๋ง์ ๋
ธ๋๋ฅผํตํด ์ ๋ฌ์ด ๋๊ฒ ๋๋ค.
์์ฒญ์ด ๊ฐ๋ฉด TCP/IPํจํท์ ๊น๊ณ HTTP๋ฉ์์ง๋ฅผ ๋ฝ๊ฒ๋๋ค. HTTP๋ฉ์์ง๋ฅผ ํด์์ ํ ํ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์
HTTP ์๋ต ๋ฉ์์ง๋ฅผ ์์ฑํด์ ๋ณด๋ด์ค๋ค.
Content-Type: text/html;charset=UTF-8 ==> ์๋ตํ๋ ๋ฐ์ดํฐ ํ์์ ์ปจํ
ํธํ์
์ ์๋ ค์ฃผ๋๊ฒ์ด๋ค.
์๋ตํ๋ ํํ๋ text/htmlํ์์ด๊ตฌ๋. ์ธ์ด๋ UTF-8๋ก ์
์ด ๋์ด์๊ตฌ๋. ๋ฅผ ์๋ ค์ค๋ค.
Content-Length : 3423 ==> ์ค์ ์ปจํ
ํธํ์
์ html ๊ธธ์ด๋ฅผ ์๋ ค์ฃผ๋ ๋ฌธ์ฅ์ด๋ค.
๊ตฌ๊ธ์๋ฒ๋ง์ ๋๊ฐ์ ์๋ต ํจํท์ ๋ง๋ค๊ณ ๊ทธ ์์ TCP/IPํจํท์ ์์์ ๋ณด๋ด๊ฒ ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํ์ฌ๋
๋ชจ๋ ์น์ด ํต์ ์ ํ๋ค.
์๋ต์ด์จ html ๋ฐ์ดํฐ๋ฅผ ๊น๋ด์ html๋ ๋๋ง์ ํ ํ ๊ฒฐ๊ณผ์ ๋ณด๊ฒ๋๋ค. ์ด๋ฌํ ์ ์ฒด์ ์ธ ๋์์ด ์๋ค.
http(ํ๋กํ ์ฝ์)๋ tcp/ip๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ํ๋กํ ์ฝ์ด๋ค.
์ฆ, TCP๊ธฐ๋ฐ์ผ๋ก HTTPํ๋กํ ์ฝ์ด ์ฌ์ฉ์ด ๋๋ค. HTTP๋ TCP/IP์คํ์ ์์กดํ์ฌ ์ฌ์ฉํ๋ค.
๋ฐ๋ผ์ HTTP๋ TCP์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง๋ง, ์ ์๋ ํ๋กํ ์ฝ ์์ฒด๊ฐ ๋ค๋ฆ์ผ๋ก ๊ฐ๊ฒ ๋ณด๋ฉด ์๋๋ค.
ํ์ง๋ง HTTP๊ฐ TCP๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์, HTTP๋ TCP์ ์ฌ๋ฌ ํน์ฑ
(์ฐ๊ฒฐ ์งํฅ์ฑ, ์ ๋ขฐ์ฑ, ํ๋ฆ ์ ์ด ๋ฑ) ์ ๊ฐ๊ฒ ๋๋ค.
HTTP๋ TCP/IP ์์์ ๋์ํ๋ฉฐ, HTTP ์์ฒญ๊ณผ ์๋ต์ TCP/IP๋ฅผ ํตํด ์ ์ก๋ฉ๋๋ค.
HTTP์ ์ค์ํ ํน์ง ์ค ํ๋๋ก๋ Stateless(๋ฌด์ํ) ํ๋กํ ์ฝ์ ์งํฅํ๋ค๋ ์ ์ด๋ค.
์ด Stateless๋ฅผ ์๊ธฐ ์ ์ ๋ฐ๋๋๋ Stateful(์ํ์ ์ง)๋ฅผ ์์์ผ ํ๋ค.
Stateful : ์ํ์ ์ง ํ๋กํ ์ฝ ๋ฐฉ์
Stateful์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํด์ฃผ๋ ํ๋กํ ์ฝ ๋ฐฉ์์ด๋ค.
Stateful(์ํ์ ์ง) ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ฐ๊ฒฐ์ด ์ ์ง๊ฐ ๋๋ค. ์์๋ก ๋ค๋ฉด
์น์ฌ์ดํธ์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ๊ฐ์ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ์ ๊ฒฝ์ฐ์๋ ๋ก๊ทธ์ธ์ด ์ ์ง๊ฐ๋๋ค.
์ด๊ฑด ๊ณ์ ์ฐ๊ฒฐ์ด ๋์ด์๋ ๊ฒฝ์ฐ์ด๋ค. ์ฆ, ์ํ์ ์ง๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ํ์ ์ง๊ฐ ๋์ผ์ง
๋ฌผ๊ฑด์ ๊ตฌ๋งคํ์ ๋ ํด๋น ๋ก๊ทธ์ธ๋ ์ ๋ณด๋ฅผ ํ ๋๋ก ๊ฒฐ์ ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ ์๋ฒ์์ ํ์์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์ํ๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ ์ง์์ ์ธ ์ฐ๊ฒฐ์ด ๋์ด์๋ ์ํ์ด๋ค.
Stateless : ๋ฌด์ํ ํ๋กํ ์ฝ ๋ฐฉ์
Stateless๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋ ํ๋กํ ์ฝ ๋ฐฉ์์ด๋ค.
์ฆ, ์ฐ๊ฒฐ์ ์ง์์ ์ผ๋ก ํ์ง ์๊ณ ํ์ํ ๋ฐ์ดํฐ๋ง ์ฃผ๊ณ ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฐ๋ค๋ ์๋ฏธ์ด๋ค.
๋ฐ๋ฉด์ Stateless(๋ฌด์ํ)์ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์์ด ๊ฐ์ง๊ณ ์๋ค๊ฐ ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค. ์ฆ, ๋ก๊ทธ์ธ ๊ฐ์
์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค๋ฅผ ํตํด ์ ์ฅ์ ํด๋๋๋ค๋์ง ๋ฐฉ์์ ์ด์ฉํด ํด๋ผ์ด์ธํธ๊ฐ ์ฆ๊ฐ์ ์ผ๋ก
ํ์ํ ๋ ์๊ธฐ ์ ๋ณด๋ฅผ ๊ฐ์ด ๋๊น์ผ๋ก์จ ์๋ฒ๋ ๋ฐ๊ณ ์์ฒญ์ ํ์ํ ๋ฐ์ดํฐ๋ง ์๋ตํ๊ณ ์ฐ๊ฒฐ์ ๋์ผ๋ฉด
ํด๋น ์๋ฒ๋ ๋ค๋ฅธ ์์ฒญ์๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ์ ์์ผ๋ฉฐ ์ํ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๊ธฐ๋๋ฌธ์ ์ ์ฐํ๊ฒ ๋ค๋ฅธ ์๋ฒ์ ์์ฒญ์
๋ณด๋ด๋ ๋ฐ์ ์ ์๊ฒ ๋๋ค. ์ ๋ฆฌํ๋ฉด ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค๋ ๋ง์ด ์ด๋ฐ๋ง์ด๋ค.
์ด๋ ๊ฒ Stateless(๋ฌด์ํ)์ ์ฅ์ ์ ๊ฐ์๊ธฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ฆ๊ฐํด๋ ์๋ฒ๋ฅผ ๋๊ฑฐ
ํฌ์
์ด ๊ฐ๋ฅํ๋ฉฐ ์๋ต์๋ฒ์ ๋ํ ์์ฒญ์ ๋ค๋ฅธ ์๋ฒ์์๋ ๋๊ฐ์ด ๋ฐ์ ์ ์์ด์ ์๋ฒ์
์ฆ์ค์ด ์ฝ๊ณ ์ค์ผ์ผ ์์์ด๋ผ๊ณ ์ํ ํ์ฅ์ ๋งค์ฐ ์ ๋ฆฌํ ์กฐ๊ฑด์ด ๋๋ค.
ํ์ง๋ง Stateless์๋ ํ๊ณ๊ฐ ์กด์ฌํ๋ค.
๋ชจ๋ ๊ฒ์ ๋ฌด์ํ๋ก ์ค๊ณ ํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
๋จ์ํ ์๊ฐํ์ด์ง์ผ๊ฒฝ์ฐ์๋ ์ํ๋ฅผ ์ ์งํ ํ์๊ฐ ์๊ธฐ์ ๋ฌด์ํ๋ก ์ค๊ณํ๊ธฐ๊ฐ ์ฌ์
์ํ๋ฅผ ์ ์งํด์ผํ๋๊ฒฝ์ฐ => ๋ก๊ทธ์ธ ์๋ฒ์์ ์ ์ง๋ฅผ ํด์ค์ผํ๋ค.
์ผ๋ฐ์ ์ผ๋ก๋ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค์ ์๋ฒ์ ์ธ์
์ ์ ์กฐํฉํด์ ์ํ๋ฅผ ์ ์งํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๊ฒ ๊ฐ๋ฅํ๋ค.
์ด๋ฐ์์ผ๋ก ์ด์ฉ์์์ด ์ํ์ ์ง๊ฐ ํ์ํด์ง๋ ๊ฒฝ์ฐ๊ฐ์๋ค. ํ์ง๋ง ์ํ์ ์ง๋ ์ต์ํ์ผ๋ก ์ฌ์ฉ์ ํด์ค์ผํ๋ค.
(๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ด์ฉ์์์ด ์ฌ์ฉํด์ผํ๋ค.)
Stateless์๋ ๋จ์ ์ด ํ๋ ๋ ์กด์ฌํ๋ค.
๋ฐ์ดํฐ๋ฅผ ๋๋ฌด ๋ง์ด ๋ณด๋ธ๋ค๋ ์ ์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ๋ ์์์ ๋ดค๋ฏ์ด Stateless๋ ๋ณด๋ด๊ณ ์ฐ๊ฒฐ์ ๋๋ ๋ฐฉ์์ด๋ผ ์์์ ๋ด๊ฐ ์ ํํ
์ ๋ณด๋ค์ ์๋ฒ์์ ์ ์ฅ์ ํด์ฃผ์ง์์์ผ๋ก ์ง์์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ง๊ณ ์๋ค๊ฐ ๋ณด๋ด๊ธฐ๋๋ฌธ์ ์ค๋ณต๋๋
๋ฐ์ดํฐ๋ํ ๋ง์ด ์กด์ฌํ๊ฒ ๋๋ค.( ์ ์ด๋ถ๋ถ์ ์ค๋ช
์ด ์ข ์ด๋ ค์ด๊ฑฐ๊ฐ๊ตฐ.. )
๋น์ฐ๊ฒฐ์ฑ
TCP/IP ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํด์ค๋ค. TCP/IP ์์ผ์ ์ฐ๊ฒฐ ํ ํ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์
ํ๋ฉด ์๋ต์ด ์จ๋ค.( ์ด ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์คฌ์์๋ ๊ณ์ ์ฐ๊ฒฐ์ด ๋์ด์๋ค. ) ์ด๋ฐ๊ฒ ์ง์์ด ๋๋ฉด ์๋ฒ์
์์๋ญ๋น๊ฐ ๋งค์ฐ ์ฌํด์ง๋ค. ์ด๋ฐ๊ฑธ ๋ณด์ํ๊ธฐ ์ํด ๋์จ ๋น์ฐ๊ฒฐ์ฑ์ด๋ ๊ฐ๋
์ด ์๋ค.
๋น์ฐ๊ฒฐ์ฑ์ ์์ฒญ์ ํ๊ณ ์๋ต์ด ์ค๋ฉด ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฐ๋ค. ์๋ฒ๊ฐ ์ ์งํ๋ ์์์ ์ต์ํ๋ก ํ ์ ์๋ค.
์๋ฒ๊ฐ ์ ์งํด์ผํ ์์์ ์์ฒญ์ด ์ค๋ฉด ๊ทธ๊ฒ๋ง ์๋ต์ ๋ณด๋ด์ค ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฌ๊ธฐ๋๋ฌธ์ ๋งค์ฐ ์ข์ ์ฅ์ ์ด์๋ค.
HTTP๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ด ๋จ์์ ์ดํ์ ๋น ๋ฅธ ์๋๋ก ์๋ต
1์๊ฐ ๋์ ์์ฒ๋ช
์ด ์๋น์ค๋ฅผ ์ฌ์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฐ ์ดํ๋ก ๋งค์ฐ ์์.
์) ์น ๋ธ๋ผ์ฐ์ ์์ ๊ณ์ ์ฐ์ํด์ ๊ฒ์ ๋ฒํผ์ ๋๋ฅด์ง๋ ์๋๋ค.
์๋ฒ ์์์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์.
๋น์ฐ๊ฒฐ์ฑ์ ๋จ์
TCP/IP์ฐ๊ฒฐ์ ์๋ก ๋งบ์ด์ผ ํจ - 3 way Handshake ์๊ฐ ์ถ๊ฐ๊ฐ ๋๋ค.
์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด HTML๋ฟ๋ง ์๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ, css, ์ถ๊ฐ ์ด๋ฏธ์ง ๋ฑ๋ฑ ์ ๋ง์ ์์์ด ํจ๊ป ๋ค์ด๋๋ค.
์ด ์์๋ค์ ํ๋ํ๋ ๋ฐ์๋๋ง๋ค ์ฐ๊ฒฐํ๊ณ ๋๊ธฐ์๋ ์๊ฐ๋ ์ค๋๊ฑธ๋ฆฌ๊ณ ๋นํจ์จ์ ์ธ๊ฑฐ ๊ฐ๋ค.
ํ์ฌ์ HTTP๋ ์ง์ ์ฐ๊ฒฐ(Persistent Connections)๋ก ๋ฌธ์ ํด๊ฒฐ
HTTP/2, HTTP3์์๋ ํจ์ฌ ์ต์ ํ๊ฐ ๋์ด์์.
์ง์์ฐ๊ฒฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ฐ๊ฒฐ ํ HTML์์ฒญ ์๋ต ์๋ฐ์คํฌ๋ฆฝํธ ์์ฒญ ์๋ต ์ด๋ฏธ์ง ์์ฒญ ์๋ต ํ ์ข
๋ฃ๋ฅผ ํ๋ ๋ฐฉ์์ ์ด์ฉ.
์์ฒญํ๊ณ ๋ค ๋ฐ๊ณ ๋ค์ ์ข
๋ฃ๊ฐ ๋๋ ๋ฐฉ์์ด๋ค.
HTTP ๋ฉ์์ง
HTTP๋ (HyperText Transfer Protocol)
๋ฌธ์๊ฐ์ ๋งํฌ๋ฅผ ํตํด ์ฐ๊ฒฐํ ์ ์๋ html์ด๋ผ๋ ๋ป์ด๋ค. ๊ณผ๊ฑฐ์๋ ์ด๋ฌ์ง๋ง ํ์ฌ์๋ ๋ชจ๋ ๊ณณ์ HTTP๊ฐ ๋ค์ด๊ฐ๋ค
์ฆ, ๊ณผ๊ฑฐ์๋ HTTP๋ฉ์์ง์ ๋ด๋๊ฒ ํ์ ๋์์๋๋ฐ ํ์ฌ์๋ ๋ง์ ๊ฒ์ ๋ด์ ๋ณด๋ด๊ฒ๋๋ค.
HTML, TEXT, image, ์์ฑ, ์์, ํ์ผ ๋ฑ๋ฑ json, xml, (api) ๋ฑ๋ฑ, ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅ
์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋๋ถ๋ถ HTTP ์ฌ์ฉํ๋ค.
HTTP์ ํน์ง์ ์ฒซ๋ฒ์งธ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ตฌ์กฐ๋ก ๋์ด์์.
Request Response ๊ตฌ์กฐ
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ ๋๊ธฐ
์๋ฒ๊ฐ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์ ์๋ต
( ์ด๋ฐ์์ผ๋ก ๊ตฌ์กฐ๋ฅผ ๋๋์ผ๋ก์จ ์๋ก์ ์ญํ ์ ์ ๋๋ก ๋ช
์๊ฐ ๊ฐ๋ฅํด์ง๋ค. )
HTTP์๋( ์์ฒญ๊ณผ ์๋ต ๋ฉ์์ง )
start-line(์์ ๋ผ์ธ), header ํค๋, empty line ๊ณต๋ฐฑ ๋ผ์ธ(CRLF), message body(๋ฉ์์ง ๋ฐ๋) ์์ญ์ด ์กด์ฌํ๋ค.
HTTP(์์ฒญ ๋ฉ์์ง)
1. ์์ ๋ผ์ธ(์์ฒญ ๋ฉ์์ง)
start-line(์์ ๋ผ์ธ)์ ํฌ๊ฒ request-line, status-line์ผ๋ก ๋์ด์์. ( ์์ฒญ ๋ฉ์์ง๋ request-line์ด๋ผํจ )
* request-line - method(get,post๋ฑ๋ฑ) / request-target(์์ฒญํ๋ ๋์) / HTTP ๋ฒ์ ์ด ์กด์ฌํ๋ค.
HTTP ๋ฉ์๋
์ข
๋ฅ : GET, POST, PUT, DELETE
์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์ ์ง์
์์ฒญ ๋์
absolute-path๋ผ๊ณ ์ ๋๊ฒฝ๋ก๋ก ์์์ํ๊ฒ๋จ. ex) GET/search?q=hello&hi=ko HTTP/1.1
์ ๋๊ฒฝ๋ก = "/"๋ก ์์ํ๋ ๊ฒฝ๋ก
๋ฒ์ ์ ๋ณด์๋ HTTP ๋ฒ์ ์ด ๋ค์ด๊ฐ๊ฒ๋๋ค.
HTTP(์๋ต ๋ฉ์์ง)
์์ ๋ผ์ธ
start-line์ request-line, status-line์ค status-line์ด ์๋ต ๋ฉ์์ง๋ ์ฌ์ฉ์ ํ๊ฒ๋๋ค.
status-line์๋ = HTTP-version / status-code / reason-pharse CRLF
HTTP ๋ฒ์
HTTP ์ํ ์ฝ๋ : ์์ฒญ ์ฑ๊ณต, ์คํจ๋ฅผ ๋ํ๋
200 : ์ฑ๊ณต
400 : ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ
500 : ์๋ฒ ๋ด๋ถ ์ค๋ฅ
OK => ์ด์ ๋ฌธ๊ตฌ : ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ์ํ ์ฝ๋ ์ค๋ช
๊ธ(์ํ ์ฝ๋๋ฅผ ๋ํ๋ด๋ ์งง์ ๊ธ)
HTTP ํค๋( ์์ฒญ๊ณผ ์๋ต ) ๋๊ฐ์ ํค๋๊ฐ ์๊ธด๊ฒ ๋ค๋ฆ.
header-field =>> field-name ":" OWS field-value OWS (OWS:๋์ด์ฐ๊ธฐ ํ์ฉ)
์์ฒญ ํค๋
GET/search?q=hello&hi=ko HTTP/1.1
Host: www.google.com ์ด๋ฐ์์ผ๋ก ์์ฑ์ ํจ.
์๋ต ํค๋
Content-Type: text/html; charset=UTF-8
Content-Length: 3423 ๋ฑ๋ฑ
HTTP ํค๋ ๊ฐ์ ๊ฒฝ์ฐ์๋
HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด๋ฅผ ๋ค ๋ด๊ณ ์๋ค.
์) ๋ฉ์์ง ๋ฐ๋์ ์ ๋ณด, ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ) ์ ๋ณด, ์๋ฒ ์ฑ ์ ๋ณด,
์บ์ ๊ด๋ฆฌ ์ ๋ณด ๋ฑ๋ฑ... ๋ฉ์์ง ๋ฐ๋๊ฐ html๋ก ๋์ด์๋๊ฐ ์๋๊ฐ ์๋ ค์ฃผ๋ ๋ถ๊ฐ์ ๋ณด์.
ํ์ค ํค๋๊ฐ ๋๋ฌด ๋ง์, ํ์์ ์์์ ํค๋ ์ถ๊ฐ ๊ฐ๋ฅ, helloworld: hihi ์ด๋ฐ๊ฒ๋ ๊ฐ๋ฅํจ.
HTTP ๋ฉ์์ง ๋ฐ๋
์ค์ ์ ์กํ ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด๋ค.
HTML๋ฌธ์, ์ด๋ฏธ์ง, ์์, JSON ๋ฑ๋ฑ byte๋ก ํํํ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค.
์์ถํด์ ๋ณด๋ด๋ฉด ์์ถ๋ ๋ด์ฉ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
HTTP ๋ฉ์๋ ์ข
๋ฅ
GET : ๋ฆฌ์์ค ์กฐํ
POST : ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ฃผ๋ก ๋ฑ๋ก์ ์ฌ์ฉ( ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ ๋ญ ํ ๋ ์ฃผ๋ก ์ฌ์ฉ )
PUT : ๋ฆฌ์์ค๋ฅผ ๋์ฒด, ํด๋น ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑ ( ๋ง๊ทธ๋๋ก ๋ฎ์ด๋ฒ๋ฆฐ๋ค๋ ์๋ฏธ? )
PATCH : ๋ฆฌ์์ค ๋ถ๋ถ ๋ณ๊ฒฝ ( ํน์ ํ๋ ๋ช๊ฐ๋ฅผ ๋ฐ๊ฟ๋ ์ฌ์ฉ update )
DELETE : ๋ฆฌ์์ค ์ญ์
// ๊ทธ ์ธ
HEAD : GET๊ณผ ๋์ผํ์ง๋ง ๋ฉ์์ง ๋ถ๋ถ์ ์ ์ธํ๊ณ , ์ํ ์ค๊ณผ ํค๋๋ง ๋ฐํ
GET
๋ฆฌ์์ค ์กฐํ , ์๋ฒ์ ์ ๋ฌํ๊ณ ์ถ์ ๋ฐ์ดํฐ๋ query(์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ, ์ฟผ๋ฆฌ ์คํธ๋ง)์ ํตํด์ ์ ๋ฌ
๋ฉ์์ง ๋ฐ๋๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ง๋ง, ์ง์ํ์ง ์๋ ๊ณณ์ด ๋ง์์ ๊ถ์ฅํ์ง ์์.
POST
์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ์๋ฒ๋ก ์์ฒญ ๋ฐ์ดํฐ ์ ๋ฌ / ์๋ฒ๋ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
์ฃผ๋ก ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ก ์ ๊ท ๋ฆฌ์์ค ๋ฑ๋ก, ํ๋ก์ธ์ค ์ฒ๋ฆฌ์ ์ฌ์ฉ
PUT
๋ฆฌ์์ค๋ฅผ ์์ ํ ๋์ฒด
๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ๋์ฒด
๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑ
์ฝ๊ฒ ์ด์ผ๊ธฐํด์ ๋ฎ์ด๋ฒ๋ฆผ
์ค์! ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค๋ฅผ ์๋ณ
ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค ์์น๋ฅผ ์๊ณ URI ์ง์
PATCH
๋ฆฌ์์ค ๋ถ๋ถ ๋ณ๊ฒฝ
DELETE
๋ฆฌ์์ค ์ ๊ฑฐ
HTTP ๋ฉ์๋์ ์์ฑ
์์ (Safe Methods)
ํธ์ถํด๋ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
๋ฉฑ๋ฑ(Idempotent Methods)
ํ ๋ฒ ํธ์ถํ๋ ๋ ๋ฒ ํธ์ถํ๋ 100๋ฒ ํธ์ถํ๋ ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ๋ค ๋ผ๋ ์๋ฏธ์ ๋ฉฑ๋ฑ์
์บ์๊ฐ๋ฅ(Cacheable Methods)
GET, HEAD, POST, PATCH ์บ์๊ฐ๋ฅ
์ค์ ๋ก๋ GET, HEAD์ ๋๋ง ์บ์๋ก ์ฌ์ฉ
POST, PATCH๋ ๋ณธ๋ฌธ ๋ด์ฉ๊น์ง ์บ์ ํค๋ก ๊ณ ๋ คํด์ผ ํ๋๋ฐ, ๊ตฌํ์ด ์ฝ์ง ์์.
์บ์ : ์น๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์์จ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ์์ ์ ์๋๊ฐ
HTTP ๋ฉ์๋ ํ์ฉ
ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก
1. ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก
GET
์ฃผ๋ก ์ ๋ ฌ ํํฐ(๊ฒ์์ด)
2. ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก
POST, PUT, PATCH
ํ์๊ฐ์
, ์ํ ์ฃผ๋ฌธ, ๋ฆฌ์์ค ๋ฑ๋ก, ๋ฆฌ์์ค ๋ณ๊ฒฝ ๋ฑ๋ฑ
HTTP ํค๋
header-field = field-name ":" OWS field-value OWS (OWS: ๋์ด์ฐ๊ธฐ ํ์ฉ)
field-name์ ๋์๋ฌธ์ ๊ตฌ๋ฌธ ์์
GET /search?q=hello&hl=ko HTTP/1.1
Host:www.google.com1
HTTPํค๋์ ์ฉ๋๋ (( ์ค๋ณต ))
HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ์ ๋ณด
์) ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ, ๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ, ์์ถ, ์ธ์ฆ, ์์ฒญ ํด๋ผ์ด์ธํธ, ์๋ฒ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด..๋ฑ๋ฑ
ํ์คํค๋๊ฐ ๋งค์ฐ ๋ง์
ํ์์ ์์์ ํค๋ ์ถ๊ฐ ๊ฐ๋ฅ!
HTTP ํค๋ ๊ณผ๊ฑฐ์๋ ํค๋๋ฅผ ๋ถ๋ฅํ์.
๋ฆฌ์์ค์ ํ์๋ฅผ ๋ถ๋ฆฌ ํด์ผํจ.(์ด๊ฒ์ http ๋ฉ์๋๋ฅผ ํตํด ๊ฐ๋ฅ )
HTTP ์ํ ์ฝ๋
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ ์ฒ๋ฆฌ ์ํ๋ฅผ ์๋ต์์ ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ
1xx (informational) : ์์ฒญ์ด ์์ ๋์ด ์ฒ๋ฆฌ์ค
2xx (Successful) : ์์ฒญ ์ ์ ์ฒ๋ฆฌ
3xx (Redirection) : ์์ฒญ์ ์๋ฃํ๋ ค๋ฉด ์ถ๊ฐ ํ๋์ด ํ์
4xx (Client Error) : ํด๋ผ์ด์ธํธ ์ค๋ฅ, ์๋ชป๋ ๋ฌธ๋ฒ๋ฑ์ผ๋ก ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์์
5xx (Server Error) : ์๋ฒ ์ค๋ฅ, ์๋ฒ๊ฐ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ๋ชปํจ.
ํํ
Content-Type : ํํ ๋ฐ์ดํฐ์ ํ์
Content-Encoding : ํํ ๋ฐ์ดํฐ์ ์์ถ ๋ฐฉ์
Content-Language : ํํ ๋ฐ์ดํฐ์ ์์ฐ ์ธ์ด
Content-Length : ํํ ๋ฐ์ดํฐ์ ๊ธธ์ด
ํํ ํค๋๋ ์ ์ก, ์๋ต ๋๋ค ์ฌ์ฉ
Content-Type( ํํ ๋ฐ์ดํฐ์ ํ์ ์ค๋ช
)
๋ฏธ๋์ด ํ์
, ๋ฌธ์ ์ธ์ฝ๋ฉ
์) text/html; charset=utf-8 , application/json , image/png(์ด๋ฏธ์ง ๊ด๋ จ ์ปจํ
ํธํ์
)
Content-Encoding( ํํ ๋ฐ์ดํฐ ์ธ์ฝ๋ฉ ) ์์ถ์ฉ
ํํ ๋ฐ์ดํฐ๋ฅผ ์์ถํ๊ธฐ ์ํด ์ฌ์ฉ
๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ณณ์์ ์์ถ ํ ์ธ์ฝ๋ฉ ํค๋ ์ถ๊ฐ
๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์ชฝ์์ ์ธ์ฝ๋ฉ ํค๋์ ์ ๋ณด๋ก ์์ถ ํด์
Content-Language(ํํ ๋ฐ์ดํฐ์ ์์ฐ ์ธ์ด)
์) ko, en, en-US
๋ฉ์์ง ๋ณธ๋ฌธ์์ ํํ ๋ณธ๋ฌธ์์ ํํ ๋ฐ์ดํฐ์ ์ธ์ด
Content-Length(ํํ ๋ฐ์ดํฐ์ ๊ธธ์ด)
๋ฐ์ดํธ ๋จ์
ํ์ ํค๋(์ฝํ
์ธ ๋ค๊ณ ์์์ด์
)
ํด๋ผ์ด์ธํธ๊ฐ ์ ํธ๋ ํํ ์์ฒญ
Accept : ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ๋ฏธ๋์ด ํ์
์ ๋ฌ
Accept-Charset : ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ๋ฌธ์ ์ธ์ฝ๋ฉ
Accept-Encoding: ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ์์ถ ์ธ์ฝ๋ฉ
Accept-Language: ํด๋ผ์ด์ธํธ๊ฐ ์ ํธํ๋ ์์ฐ ์ธ์ด
ํ์ ํค๋๋ ์์ฒญ์์๋ง ์ฌ์ฉ!
์ ์ก ๋ฐฉ์ ์ค๋ช
๋จ์ ์ ์ก
ํ๋ฒ์ ์์ฒญํ๊ณ ํ๋ฒ์ ๋ฐ๋ ๋ฐฉ์
์์ถ ์ ์ก
์๋ฒ์์ ์์ถํด์ ๋ณด๋ด์ค ์ฉ๋์ด ์ค์ด๋ค์ด์ ์ข์.
Content-Encoding: gzip ์ด๋ฐ๊ฑธ ์ถ๊ฐํด์ค์ผํจ.
๋ถํ ์ ์ก
Transfer-Encoding : chunked ์ชผ๊ฐ์ ๋ณด๋ด๊ฒ ๋ค๋ ์๋ฏธ์.
๋ฐ์ดํธ ๋จ์๋ก ์ชผ๊ฐ์๋ณด๋ / ๋ถํ ํด์ ์ ์กํ๋ฉด ์ค๋๋๋ก ํํํ ์ ์์.
์ด๊ฑธ ์ฌ์ฉํ ๋๋ ContentLength๋ฅผ ์ฌ์ฉํ๋ฉด ์๋. ๊ธธ์ด๋ฅผ ๋ถํ ํด์ ๋ณด๋ด๊ธฐ๋๋ฌธ์ ๋ชจ๋ฆ
ex) 5 Hello 5 Wolrd
๋ฒ์ ์ ์ก
๋ฒ์๋ฅผ ์ง์ ํด์ ๋ฐ์ ์ ์์.
์ผ๋ฐ ์ ๋ณด
From ( ์ ์ ์์ด์ ํธ์ ์ด๋ฉ์ผ ์ ๋ณด )
์ผ๋ฐ์ ์ผ๋ก ์ ์ฌ์ฉ๋์ง ์์
๊ฒ์ ์์ง ๊ฐ์ ๊ณณ์์, ์ฃผ๋ก ์ฌ์ฉ
์์ฒญ์์ ์ฌ์ฉ
Referrer(์ด์ ์น ํ์ด์ง ์ฃผ์)
ํ์ฌ ์์ฒญ๋ ํ์ด์ง์ ์ด์ ์น ํ์ด์ง ์ฃผ์
A -> B๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ B๋ฅผ ์์ฒญํ ๋ Referrer: A ๋ฅผ ํฌํจํด์ ์์ฒญ
Referrer๋ฅผ ์ฌ์ฉํด์ ์ ์
๊ฒฝ๋ก ๋ถ์ ๊ฐ๋ฅ
์์ฒญ์์ ์ฌ์ฉ
User-Agent(์ ์ ์์ด์ ํธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณด)
ํด๋ผ์ด์ธํธ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณด(์น ๋ธ๋ผ์ฐ์ ์ ๋ณด, ๋ฑ๋ฑ)
ํต๊ณ ์ ๋ณด
์ด๋ค ์ข
๋ฅ์ ๋ธ๋ผ์ฐ์ ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋์ง ํ์
๊ฐ๋ฅ
์์ฒญ์์ ์ฌ์ฉ
Server(์์ฒญ์ ์ฒ๋ฆฌํ๋ Origin์๋ฒ์ ์ํํธ์จ์ด ์ ๋ณด)
์ค์ http์์ฒญ์ ๋ณด๋ด๋ฉด ๋ง์ ์๋ฒ๋ฅผ ๊ฑฐ์ณ์ ๊ฐ๊ฒ๋จ( ๋
ธ๋ )
๋ง์ง๋ง์ ์ค์ ๋์ ์์ฒญ์ ๋ฐ๋ ๋์์๋ http์๋ต์ ํด์ฃผ๋ ์ง์ง ์๋ฒ๋ฅผ Origin์๋ฒ๋ผํจ.
(๋์ ์์ฒญ์ ์๋ตํ๋ ๋ง์ง๋ง ์๋ฒ)
์๋ต์์ ์ฌ์ฉํ๋ค.
Date( ๋ฉ์์ง๊ฐ ๋ฐ์ํ ๋ ์ง์ ์๊ฐ )
์๋ต์์ ์ฌ์ฉ
Host ํค๋ ( ์์ฒญํ ํธ์คํธ ์ ๋ณด(๋๋ฉ์ธ))
์์ฒญ์์ ์ฌ์ฉ
ํ์
ํ๋์ ์๋ฒ๊ฐ ์ฌ๋ฌ ๋๋ฉ์ธ์ ์ฒ๋ฆฌํด์ผ ํ ๋
ํ๋์ IP์ฃผ์์ ์ฌ๋ฌ ๋๋ฉ์ธ์ด ์ ์ฉ๋์ด ์์ ๋
์ด๋ ๊ตฌ๋ถ์ ํด์ค
์ธ์ฆ ๊ด๋ จ ํค๋
(ํด๋ผ์ด์ธํธ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ๋ฌ)
Authorizaion: Basic xxxxxxxxxxxxx
์ฟ ํค
Set-Cookie: ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ฟ ํค ์ ๋ฌ(์๋ต)
Cookie: ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์์ ๋ฐ์ ์ฟ ํค๋ฅผ ์ ์ฅํ๊ณ , HTTP ์์ฒญ์ ์๋ฒ๋ก ์ ๋ฌ
'๐ Network > ๐HTTP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SOP & CORS (1) | 2025.01.23 |
---|---|
[HTTP] ์น ํ์ ๋ฐฐ๊ฒฝ (0) | 2024.12.18 |
[HTTP] HTTP๋? (1) | 2024.12.18 |
[HTTP] WebSocket (1) | 2024.12.08 |
(HTTP) Stateless, Stateful (1) | 2024.04.26 |