ํ ์คํธ ๊ธฐ๋ฐ์ผ๋ก HTTP๋ฅผ ๋ณด๋ด๊ณ ์ฒ๋ฆฌํ๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ง๋๋ ๋ฏธ์
- ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญ์ ๋ณด๋ด๋ ๋์์ ๋จ์ํํด์ ๊ตฌํํ๋ค.
- URL ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก HTTP Request ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , Request ๋ฉ์์ง๋ฅผ TCP ์ธ์ ์ ์ ์ก(send)ํ๋ค.
- ์์ผ์ ์์ฑํด์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์์ ์ฒ๋ฆฌํ๋ ๋์์ ๊ตฌํํ๋ค.
#DNS
#Socket
#HTTP
#Request
#TCP/IP
#OSI 7 Layers
- ์ ์์ ์ผ๋ก ์ ์ก๋์๋์ง WireShark ๊ฐ์ ๋คํธ์ํฌ ๋ถ์ ๋๊ตฌ์์ ํ์ธ
- http://example.com ์ฃผ์๋ก ์์ฒญ์ ๋ณด๋์ ๋ ์ ์์ ์ผ๋ก ๋์ํ๋ ๊ฒ ํ์ธ
- example.com ์ด์ธ์ ๋์ ํ ์คํธ ์ฌ์ดํธ ์ถ์ฒ
URL http://m.naver.com
(DNS Lookup...)
TCP Connection : 125.209.218.87 80
HTTP Request
URL www.disney.co.kr
(DNS Lookup...)
TCP Connection : 52.68.152.109 80
HTTP Request
โป HTTP Request ๊ท๊ฒฉ์ ์ฒ๋ฆฌํ๋ ํด๋์ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ ๋ถ๊ฐ
(์: HTTPRequest, URLRequest, URLSession ๋ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๋ถ๊ฐ)
- ์
๋ ฅํ URL ๊ตฌ์ฑ ์์๋ฅผ ๋ถ์ํด์, URL์ ํฌํจ๋ host ์ฃผ์๋ฅผ DNS Server์์ ๊ฒ์ํ๋ ๊ธฐ๋ฅ
(์๋ฐ API java.net.InetAddress ํ์ฉํ๋ ๊ฒ์ ์ถ์ฒ) - host ์ ๋ณด๋ก ์ฐพ์ IP ์ฃผ์ ์ค์ ์ฒซ๋ฒ์งธ ๊ฐ๊ณผ port ์ ๋ณด๋ก TCP Socket์ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ฅ
(java.net.Socket ํ์ฉํ๋ ๊ฒ์ ์ถ์ฒ)- port๊ฐ ์์ผ๋ฉด 80๋ฒ์ ์ง์ ํ๋ ๊ธฐ๋ฅ
- ์๋ฒ๊ฐ HTTP Reqeust๋ฅผ ์ธ์ํ๊ธฐ ์ํ ํ์ ํค๋๋ก ๊ตฌ์ฑํ๋ ๊ธฐ๋ฅ
- ๋งค๊ฐ๋ณ์๋ก URL๋ฅผ ๊ฐ๋ ์์ฑ์ ๊ตฌํ
- ์์ฒญ ๋ฐฉ์ ๋ณ๊ฒฝ์ ์ํด method๋ฅผ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ
- default:
Get
method
- default:
- ์์ฒญ์ ํ์ํ Header๋ฅผ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ
- Request Message๋ฅผ ๋ฌธ์์ด๋ก returnํ๋ ๊ธฐ๋ฅ
- HTTP๋ ์๋ ์์ด๋ ์น(WWWW)์ ๋ด์ฌ๋ ํ๋กํ ์ฝ๋ก ์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ๋๋ค.
- ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ๊ฐ ์ํต์ ์ํด ๋์์ธ๋์๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต ํ๋กํ ์ฝ*(Application Layer Protocol)๋ก HTML๊ณผ ๊ฐ์ ๋ฌธ์๋ฅผ ์ ์กํ ๋ ์ฌ์ฉ๋๋ค.
๐ก ํ๋กํ ์ฝ์ด๋?
- ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๊ธฐ ์ํ ๊ท์น์ ๋ปํ๋ค.
- ๋คํธ์ํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ์ด๋ฌํ ๊ท์น์ ๋ง๊ฒ ๊ฐ๋ฐํ์ฌ ์๋ก ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๊ฒ ๋์๋ค.
- HTTP ๋ฉ์์ง๋ ์ ํด์ง ๊ท์น์ด ์๋ค.
- ์น ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ HTTP, ํ์ผ์ ์ฃผ๊ณ ๋ฐ์ ๋๋ FTP, ๋ฉ์ผ์ SMTP, POP ๋ฑ ์ ์ก ๊ณ์ธต๊ณผ ์ ํ์ ๋ฐ๋ผ ๋ค์ํ๋ค.
- ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
- ๋ฌด์ํ ํ๋กํ ์ฝ(Stateless)
- ๋น ์ฐ๊ฒฐ์ฑ(Connectionless)
ํด๋ผ์ด์ธํธ๊ฐ HTTP messages ์์์ ๋ง์ถฐ ์์ฒญ์ ๋ณด๋ด๋ฉด, ์๋ฒ๋ HTTP messages ์์์ ๋ง์ถฐ ์๋ตํ๋ค.
- Request Response ๊ตฌ์กฐ
HTTP์์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค.
๐ก ์์:
- ๋ฌด์ํ: ๋ก๊ทธ์ธ์ด ํ์์๋ ๋จ์ํ ์๋น์ค ์๊ฐ ํ๋ฉด
- ์ํ ์ ์ง: ๋ก๊ทธ์ธ ํ ๋ก๊ทธ์ธ ํ ์ํ๋ฅผ ์๋ฒ์
HTTP 1.0 ๊ธฐ์ค์ผ๋ก HTTP๋ ์ฐ๊ฒฐ์ ์ ์งํ์ง ์๋ ๋ชจ๋ธ์ด๋ค.
HTTP๋ ์ค์ ๋ก ์์ฒญ์ ์ฃผ๊ณ ๋ฐ์ ๋๋ง ์ฐ๊ฒฐ์ ์ ์งํ๊ณ ์๋ต์ ์ฃผ๊ณ ๋๋ฉด ์๋ฒ์์ ์ฐ๊ฒฐ์ ๋๋๋ค.
HTTP messages๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์์ ๋ฐ์ดํฐ๊ฐ ๊ตํ๋๋ ๋ฐฉ์์ด๋ค.
- ์์ฒญ(Requests)
- ์๋ต(Responses)
OSI 7๊ณ์ธต์ด ๋ฑ์ฅํ๊ฒ ๋ ๋ฐฐ๊ฒฝ์ ๋ํด์๋ ๊ฐ๋ตํ ์ธ๊ธํ์๋ฉด
60~70๋
๋์๋ ํต์ ๊ท๊ฒฉ์ด ํต์ผ๋์ง ์์ ๋ค๋ฅธ ํ์ฌ์ ํธํ์ด ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด์ ISO๋ผ๋ ๋จ์ฒด๊ฐ ํต์ ๊ท๊ฒฉ๊ณผ ํ๋กํ ์ฝ์ ํ์คํํ๋ ค๊ณ ํ์๊ณ ๊ทธ ๊ณผ์ ์์ ๋ฑ์ฅํ ๊ฒ์ด OSI ์ฐธ์กฐ ๋ชจ๋ธ์ด๋ค.
OSI ์ฐธ์กฐ ๋ชจ๋ธ์ ํตํด ํต์ ์ ๋จ๊ณ๋ณ๋ก ๋๋์ด ์์๋ฅผ ๋ช
ํํ ํ๊ณ
๋จ๊ณ์ ๋ฐ๋ผ ํ๋กํ ์ฝ์ ์ ์ํด์ ๋ฐ์ดํฐ ํต์ ์ ๊ตฌ์ถํ๋ ค๊ณ ํ ๊ฒ์ด๋ค.
- OSI ์ฐธ์กฐ ๋ชจ๋ธ์ ๋ฐ์ดํฐ ํต์ ์ ์ค๊ณ๋์ด๋ค.
- OSI ์ฐธ์กฐ ๋ชจ๋ธ์ ๋ฐ์ดํฐ ํต์ ์ 7๊ฐ์ ๊ณ์ธต(Layer)์ผ๋ก ๋๋๋ค. (ํ๋จ ์ด๋ฏธ์ง ์ฐธ๊ณ )
- ๊ฐ ๊ณ์ธต๋ง๋ค ๊ฐ๊ฐ์ ์ญํ ๊ณผ ๊ท์น์ด ์๋ค.
- ๋คํธ์ํฌ์ ์ํ ๋ฐ์ดํฐ ํต์ ์ ๋จ๊ณ๋ง๋ค ๋ณต์์ ํ๋กํ ์ฝ๋ก ์คํ๋๋ค.
- ๋ฐ์ดํฐ ํต์ ์ ํ ๋ 7๊ณ์ธต์์ 1๊ณ์ธต์ผ๋ก ๊ฐ๊ฐ์ ์์๋ฅผ ๋จ๊ณ์ ์ผ๋ก ์ํํจ์ผ๋ก์จ ๋ฐ์ดํฐ ํต์ ์ด ๊ฐ๋ฅํด์ง๋ค.
- OSI ์ฐธ์กฐ ๋ชจ๋ธ์ ์ฅ์ ์ ๊ณ์ธต์ด ๊ฐ๊ฐ ๋ ๋ฆฝํด ์๋ค๋ ๊ฒ์ด๋ค.
- ๋ฐ๋ผ์ ํน์ ๊ณ์ธต์ ํ๋กํ ์ฝ์ด ๋ณ๊ฒฝ๋์ด๋ ๋ค๋ฅธ ๊ณ์ธต์ ์ํฅ์ ๋ผ์น์ง ์๋๋ค.
- ํ์ ๊ณ์ธต(1
3)์ ์์ ๊ณ์ธต(47)์ ์ํด์ ์ผํ๊ณ ์์ ๊ณ์ธต์ ํ์ ๊ณ์ธต์ ๊ด์ฌํ์ง ์๋๋ค.
(์ด๋ฏธ์ง ์ถ์ฒ: [๋คํธ์ํฌ/๊ธฐ๋ณธ] ํ๋กํ ์ฝ(Protocol)์ด๋? โ OSI 7 ๊ณ์ธต ๋ณ ํ๋กํ ์ฝ)
-
OSI 7๊ณ์ธต
-
TCP
-
UDP
-
ํด๋ผ์ด์ธํธ์ ์๋ฒ ์์ผ
-
4-way handshake
-
3-way handshake