HTTP #2 ์ธํฐ๋ท ๋คํธ์ํฌ์ ์ดํด
by JiwonDev
# ๋คํธ์ํฌ, ๋ฏธ๊ตญ๊ณผ ํ๊ตญ์ ์ด๋ป๊ฒ ์ฐ๊ฒฐํ์๊น?
๊ฐ๋ฐํ๋ฉด์ ์ฌ๊ธฐ๊น์ง๋ ๋ชฐ๋ผ๋ ๋๊ธดํ์ง๋ง, ๊ถ๊ธํ๋ค๋ฉด ์๋ ๋งํฌ๋ฅผ ์ฝ์ด๋ณด์.
2021.01.04 - [๊ธฐ๋ณธ ์ง์/์น ๊ธฐ๋ณธ์ง์] - ๋คํธ์ํฌ์ ๋์์๋ฆฌ
# ๊ธฐ์ด์ง์
๋ง์ฝ ๋ ์ปดํจํฐ, ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ ์ผ๋ก ์ง์ ์ฐ๊ฒฐ๋์ด์๋ค๋ฉด ์ธํฐ๋ท์ด๋ผ๋ ๊ฐ๋ ์ ํ์์์ ๊ฒ์ด๋ค. ์ค์ ๋ก ๋คํธ์ํฌ๊ฐ ๋ณด๊ธ๋์ง์์๋ ์๋ ์๋ ํ ๊ฑด๋ฌผ ๋ด์ ์๋ฒ ์ปดํจํฐ์ ํด๋ผ์ด์ธํธ ์ปดํจํฐ๋ฅผ ์ ์ผ๋ก ์ฐ๊ฒฐํ์๋ค.
# 1. ํ๋กํ ์ฝ (Protocol)
๊ธฐ์กด์ ๊ตฐ์ด๋ ์ธ๊ต์์ ๋ง์ด ์ฌ์ฉ๋์๋ ๋จ์ด๋ก, ์ผ์ข ์ ํต์ ๊ท์น (ํต์ ๊ท์ฝ)์ ์๋ฏธํ๋ค. ์ฌ๊ธฐ์์๋ ์ก์ ์์ ์์ ์์ ์ปดํจํฐ๊ฐ ํต์ ์ ํ๊ธฐ ์ํด ์๋ก ๋ฐ๋ ๋ฉ์์ง์ ๊ท์น, ์ธ์ฆ, ์ค๋ฅ ๊ฐ์ง๋ฑ์ ์ง์ ํ ๊ท์ฝ์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค.
2. IP (Internet Protocol)
๋ ์ปดํจํฐ๊ฐ ํต์ ํ๊ธฐ ์ํด์๋ ์ ๋ง์ ํต์ ๋ง(๋ ธ๋)๋ค์ ๊ฑฐ์ณ์ผํ๋ค. ๊ทธ ์ ๋ง์ ์ปดํจํฐ์ค ๋ด๊ฐ ์ํ๋ ๋ชฉ์ ์ง๋ฅผ ์ด๋ป๊ฒ ์ฐพ์ ์ ์์๊น? ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ์ํด ๋คํธ์ํฌ๋ง๋ค ์ฃผ์(IP)๋ฅผ ๋ถ์ฌํ ๊ฒ์ด ๋ฐ๋ก ์ธํฐ๋ท ํ๋กํ ์ฝ, IP์ฒด๊ณ์ด๋ค.
IP์๋ ๊ธฐ๋ณธ์ ์ผ๋ก [์ถ๋ฐ์ง IP]์ [๋ชฉ์ ์ง IP]์ ๊ธฐํ ํ์ํ ์ ๋ณด๋ฅผ ๋ด์ ๋คํธ์ํฌ์ ์ ์กํ๋ค.
์ง์ ์ ์ ์ฐ๊ฒฐํ ๊ฒ์ด ์๋๊ธฐ์ ๋คํธ์ํฌ ๋ง์์ ๋ด๊ฐ ์ํ๋ ๋ชฉ์ ์ง๊ฐ ์ด๋์ธ์ง๋ ๋ชจ๋ฅด๊ณ ์ด๋ป๊ฒ ๊ฐ์ผํ๋์ง๋ ๋ชจ๋ฅธ๋ค. ๊ทธ๋์ IP(์ธํฐ๋ท ํ๋กํ ์ฝ)์ ์ด์ฉํด์ ๊ฐ๊ฐ์ ๋ ธ๋๋ผ๋ฆฌ ์ ํด์ง ๊ท์น์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ๋ชฉ์ ์ง๊น์ง ์ ์กํ๋ค.
# 2-1 IP ํ๋กํ ์ฝ์ ํ๊ณ
๋ํ์ ์ผ๋ก 1. ๋น์ฐ๊ฒฐ์ฑ(connectionlessness)๊ณผ 2. ๋น์ ๋ขฐ์ฑ(unreliability)์ ๋ฌธ์ ๊ฐ ์๋ค.
- ํจํท์ ๋ฐ์ ๋์์ด ์๊ฑฐ๋, ์๋ฒ(=์๋น์ค)๊ฐ ๋ถ๋ฅ ์ํ์ฌ๋ ์ ์กํ๋ค. ์ฆ ์๋ก ์ฐ๊ฒฐ์ ๋ณด์ฅํ์ง ์๋๋ค.
- ์ค๊ฐ์ ํจํท์ ํ์ทจํ๊ธฐ ์ฝ๋ค. ๋ํ ์ ์ก๋ ํจํท์ด ์์๋๋ก ์ฌ๊ฑฐ๋ผ๋ ๋ณด์ฅ์ด ์๋ค.
โก ๋ณด๋ด๋ ๋ฐ์ดํฐ๊ฐ ํฌ๋ค๋ฉด ํจํท(๋ฐ์ดํฐ๋ฐ์ค)๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ๋๋ ์์๋๋ก ๋ณด๋ผ ์๋ ์๋ค๋ ๊ฑธ ์ธ์งํ์. - ํ ์ปดํจํฐ์๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ค. IP ์ฃผ์๊ฐ ๊ฐ๋ค๋ฉด ๊ฐ๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ๊ตฌ๋ถํ ๊น?
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํด, IP ์ ๋ณด๋ฅผ ๊ฐ์ธ์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ฃ๋ TCP/UDP ํ๋กํ ์ฝ์ด ๋์ค๊ฒ ๋๋ค.
# 3. TCP, UDP ( Transmission Control Protocol, User Data Protocol )
์์ 3๊ฐ์ง ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ์์ ํ๋กํ ์ฝ์ด TCP/UDP (์ ์ก์ ์ด ํ๋กํ ์ฝ/ ์ ์ ๋ฐ์ดํฐ ํ๋กํ ์ฝ)์ด๋ค.
๋จ์ ๋ฐ์ดํฐ๋ง ๋ณด๋ด๋ ๊ฒ์ด ์๋๋ผ ์ ์ก ์์, ๊ฒ์ฆ ์ ๋ณด๋ฑ์ ํฌํจํ์ฌ ์ ๋ขฐ์ฑ๊ณผ ์ฐ๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ค. ๋ง์ฝ ํจํท์ด ์์๋๋ก ์ค์ง ์๋๋ผ๋, TCP๊ณ์ธต์ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ์์๋ ํ์ธํ์ฌ ์ ์ ํ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
๋ํ TCP ๊ณ์ธต์์ ๊ฐ ์ปดํจํฐ์ ํฌํธ(port)๋ผ๋ ๊ฐ๋ ์ ๋์ ํ์ฌ, ํ IP์์๋ ํฌํธ๋ฒํธ๋ก ํ๋ก๊ทธ๋จ๋ค์ ๊ตฌ๋ถ์ง์ด ์ฌ๋ฌ ํ๋ก๊ทธ๋จ๋ค์ ๊ตฌ๋ถ์ง์ด ํต์ ํ ์ ์๊ฒ ๋์๋ค.
# 3-1 TCP์ ์ฐ๊ฒฐ์งํฅ, 3 Way Handshake
์ค์ ๋ ์ปดํจํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ค์๊ฐ ์ฐ๊ฒฐํ๋๊ฑด ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋์ ์ฐ๊ฒฐ์ ์์ํ ๋ [SYN, SYN+ACK, ACK] ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ์ธ์ฆ ๊ณผ์ ์ ๊ฑฐ์ณ ์๋ก ์ ์ ์ฐ๊ฒฐ๋์์์ ํ์ธํ๋ค. ์งง๊ฒ๋งํ๋ฉด '๋ ์ปดํจํฐ์ ๋ ผ๋ฆฌ์ ์ธ ์ฐ๊ฒฐ์ํ'๋ฅผ ๋ง๋ ๋ค.
# 3-2 ์ ๋ขฐ์ฑ์ด ํ์์๋ ๋ฐ์ดํฐ, UDP
TCP๋ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํด์ฃผ๋ ์ฅ์ ์ ์์ง๋ง, ์ฐ๊ฒฐ์ด ๋ณต์กํด์ ธ ์ ์ก ์๋๊ฐ ๋๋ ค์ง๋ค. ๊ทธ๋์ ๊ทธ๋ฐ ๋ณต์กํ ๊ณผ์ ์ด ํ์์๊ณ ์์๋๋๋ผ๋ ๋ค์ ๊ทธ๋ฅ ๋ณด๋ด๋ฉด ๋๋ ๋ฐ์ดํฐ๋ค(์์, ์ด๋ฏธ์ง, ํ ์คํธ๊ฐ์ ๋จ์ ๋ฆฌ์์ค๋ค)์ ์ํด UDP, ์ ์ ๋ฐ์ดํฐ ํ๋กํ ์ฝ๋ ์ ๊ณตํ๋ค.
UDP๋ ํน๋ณํ ๊ธฐ๋ฅ์ด ์์ง์๊ณ IP ํ๋กํ ์ฝ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋, port์ ์ฒดํฌ์ฌ(CheckSum,๋ฐ์ดํฐ ์์ ๊ฒ์ฆ, ๊ฒ์ฆ๊ฐ์ ๋ํด์ 0์ด๋๋์ง ํ์ธ) ์ ๋๋ง ์ถ๊ฐํ์ฌ ์ฌ์ฉํ๊ธฐ์ ๊ธฐ์กด์ IP ์ฒด๊ณ์ฒ๋ผ ์ฐ๊ฒฐ์ฑ, ์ ๋ขฐ์ฑ๋ฑ์ ๋ณด์ฅํ์ง ์๋๋ค.
HTTP์ ์ญ์ฌ (TCP/IP ์ฒด๊ณ๋ HTTP 1.1์ ํ๋ฆฝ๋์๋ค.)
์น์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ์ TCP์ ์ฌ๋ฌ ๋จ์ ๋ค(์ฑ๋ฅ, 1:1 ํต์ ๋ง ๊ฐ๋ฅ, DDOS์ ์ทจ์ฝ๋ฑ)์ ๊ฐ์ ํ๊ธฐ์ํด HTTP/2๊ฐ ๋ฑ์ฅํ์๊ณ , ์ต๊ทผ(2021๋ )์๋ ์์ TCP๋ฅผ ๋ฒ๋ฆฌ๊ณ ์๋ก์ด ์ฒด๊ณ๋ฅผ ๋ง๋ค๊ธฐ์ํด ๊ธฐ์กด์ ๊ฑฐ์ ๋ฐฑ์ง์ํ์๋ UDP๋ฅผ ์ด์ฉํ์ฌ ํธ๋์์ดํฌ ๊ฐ๋ ์์ฒด๋ฅผ ๋ฒ๋ฆฌ๊ณ ์๋ก ์ค๊ณํ HTTP/3๊ฐ ๋จ๊ณ ์๋ค.
4. Port
์์ TCP/UDP ๊ณ์ธต์์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ด๋ค. ์์๋ ์ค๋ช ํ์ง๋ง, ํ ์ปดํจํฐ ์์๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์์ ์คํ๋๋๋ฐ ์ด๋ฅผ ๊ตฌ๋ถํ๊ณ ํ IP์ ์ฌ๋ฌ๊ฐ์ง ๋คํธ์ํฌ ์๋น์ค๋ฅผ ์ด์ฉํ๊ธฐ ์ํด ํฌํธ๋ฅผ ์ด์ฉํ๋ค.
ํฌํธ๋ 2๋ฐ์ดํธ ์ซ์(0~65535)๋ก ์ง์ ํ ์ ์์ผ๋ฉฐ ํฌํธ๋ฅผ ๊ฐ์ ํ๋ ๊ท์ ์ ์์ง๋ง, ๊ด๋ก์์ผ๋ก ์ฌ์ฉ๋๋ ํฌํธ๋ฒํธ(0~1023)๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค. ๋ณดํต ์ด ํฌํธ๋ค์ ์ด์์ฒด์ ์์ root๊ถํ์ด ์์ผ๋ฉด ์ฌ์ฉํ ์ ์๊ฒ ๋งํ์ ธ์๋ค.
5. DNS (Domain Name Service)
์ฃผ์์ฒด๊ณ๋ฅผ IP๋ก ํ๋ ๊ฑด ์ข์๋๋ฐ, ์ฐ๋ฆฌ๊ฐ ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด์ IP์ ํฌํธ๋ฒํธ๋ฅผ ์ธ์ฐ๊ณ ๋ค๋๊ธฐ๋ ๋งค์ฐ ์ด๋ ต๋ค.
๋ํ ํ ์๋ฒ์์ ์ฌ๋ฌ IP๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์ํฉ์ ๋ฐ๋ผ IP๋ฒํธ๊ฐ ๋ณ๊ฒฝ๋ ์๋ ์๋๋ฐ ์ด๋ฐ ๋ถํธํจ์ ํด์ํ๊ธฐ ์ํด์ ๋ณดํต DNS ์๋ฒ๋ฅผ ์ด์ฉํ๋ค.
DNS ํธ์คํ ์ ์ฒด์ ๋๋ฉ์ธ ์ด๋ฆ(ex google.com)์ ๊ตฌ๋งคํด์ ์ผ์ ๋น์ฉ์ ์ง๋ถํ๋ฉด ์ฐ๋ฆฌ๊ฐ ํด๋น ๋๋ฉ์ธ๋ช ์ ๊ฒ์ํ์ ๋, IP๋ฅผ ์ฐพ์์ ์ ๋ฌํด์ค๋ค. DNS ์๋ฒ๋ ์ปดํจํฐ์์ ์ง์ ์ง์ ํ ์๋์๊ณ , ISP(์ธํฐ๋ท ์๋น์ค ์ ๊ณต์ ์ฒด)์์ ์๋์ผ๋ก ์ง์ ๋ฐ์ ์์๋ค.
6. ์ธํฐ๋ท ํ๋กํ ์ฝ 4๊ณ์ธต
์์ ๊ฐ๋ ๋ค์ ํ๋๋ก ์ ๋ฆฌํ ๊ฒ์ด TCP/IP 4๊ณ์ธต์ด๋ค. ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ ๋์นด๋, Mac์ฃผ์ ๊ฐ์ ์์๋ค์ด ์๋ค๊ณ ์ดํดํ๋ฉด ๋๋ค. (๋คํธ์ํฌ์ ๋ํด ๊น๊ฒ ๊ณต๋ถํ๋ฉด ๋ฐฐ์ฐ๊ฒ ๋๋ค.)
์ฐธ๊ณ ๋ก ํ ํ๋ก๊ทธ๋จ์์ ๋คํธ์ํฌ ํต์ ์ ํ ๋, ๋ชจ๋ ๊ณผ์ ์ ๋ง์น๊ณ ๋คํธ์ํฌ์ ์ ์กํ๋ ์ง์ ์ (End-Point)๋ฅผ Socket์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ Socket ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ด๋ถ์ ์ผ๋ก ์๋์ ๊ฐ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์ ์ก๋๊ฒ ๋๋ค.
'๐๊ธฐ๋ณธ ์ง์ > ์น ๊ธฐ๋ณธ์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP #5 ์์ฒญ ๋ฉ์๋ (0) | 2021.09.06 |
---|---|
HTTP #4 ํน์ง๊ณผ ๋ฉ์์ง ๊ตฌ์กฐ (0) | 2021.07.18 |
HTTP #3 URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญํ๋ฆ (0) | 2021.07.17 |
์น ํ๋ก ํธ์๋์ ๋ฐฑ์๋ (0) | 2021.03.22 |
HTTP #1 ๋คํธ์ํฌ์ ๋์์๋ฆฌ (0) | 2021.01.04 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev