Application architecture์๋ ์์ ๋ถํฐ ์ฌ์ฉํด ์ค๋ client server architecture์ pc์ n/w์ ํฅ์์ด ์๋ peer-to-peer ((P2P) architecture, ๊ทธ๋ฆฌ๊ณ ๋ ๋ชจ๋ธ์ Hybrid ํํ๊ฐ ์กด์ฌํฉ๋๋ค.
Client/Server architecture๋?
์ ๋ณด๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ ํด๋ผ์ด์ธํธ์ ์ ๋ณด๊ฐ ์กด์ฌํ๋ฉฐ ์ด๋ฅผ ์ ๊ณตํ๋ ๊ณณ์ ์๋ฒ๋ผ๊ณ ํ๋ฉฐ ์ด์ ๊ฐ์ด ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ก ๋ถ๋ฆฌ์ํจ ๊ตฌ์กฐ๋ฅผ client/server architecture ((2-tier-architecture)๋ผ๊ณ ํฉ๋๋ค.
Client
ํด๋ผ์ด์ธํธ๋ ๋ณดํต ํ๋ซํผ์ ๋ฐ๋ผ ๊ตฌ๋ถ๋ฉ๋๋ค.
- ์น ํ๋ซํผ ((๋ธ๋ผ์ฐ์ ) : client == ์น์ฌ์ดํธ / ์น ์ก
- ์ค๋งํธํฐ/๋ฐ์คํฌํ ํ๋ซํผ ((iOS, ์๋์ฐ) : client == ์ฑ
Server
์๋ฒ๋ ์ญํ ์ ๋ฐ๋ผ ๊ตฌ๋ถ๋ฉ๋๋ค.
- ํ์ผ ์๋ฒ : ํ์ผ์ ์ ๊ณตํ๋ ์ฑ
- ์น ์๋ฒ : ์น์ฌ์ดํธ์์ ํ์๋ก ํ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ฑ
- ๋ฉ์ผ ์๋ฒ : ๋ฉ์ผ์ ์ฃผ๊ณ ๋ฐ์์ ์๋๋ก ๋์์ฃผ๋ ์ฑ
์ต๊ทผ์๋ 2-tier-architecture์์ Database๊ฐ ์ถ๊ฐ๋ 3-tier-architecture๊ฐ ๋ฑ์ฅํ๊ณ ์ด๋ ์๋ฒ๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ๋ณด์ ์ ์ฅ์ ๋งก๊ฒ ๋ฉ๋๋ค.
Client์ Server ๊ฐ์ HTTP ํ๋กํ ์ฝ
์ํ๋ ์ ๋ณด๋ฅผ client๊ฐ ์ป๊ธฐ์ํด์๋ server๋ก ๋ถํฐ ์ํ๋ ์ ๋ณด๋ฅผ ์์ฒญํ๊ณ ๋ฐ์์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด client์ server๋ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค.
์ฐ๊ฒฐ์ด ์๋ฃ๋์๋ค๋ฉด client๋ ์๋ก๊ฐ ์ดํดํ ์ ์๋ XML ํน์ JSON ํ์์ผ๋ก ์๋ฒ์ request๋ฅผ ๋ณด๋ ๋๋ค.
์์ฒญ์ ๋ฐ์ server๋ request๋ฅผ ์ดํดํ๊ณ ๊ทธ์ ๋ง๋ ์ ์ ํ ๋ฐ์ดํฐ๋ฅผ response ํ๊ฒ ๋ฉ๋๋ค.
๋ ์จ๋ฅผ ์๋ก ๋ค์ด ๋ด ์๋ค. ๋ง์ฝ ์์ธ์ ๋ ์จ ์ ๋ณด๋ฅผ ์๊ณ ์ถ๋ค๋ฉด client๋ server์ request๋ฅผ ๋ณด๋ผ๋ “์์ธ” ์ด๋ผ๋ ์ฅ์์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ฐ์ด ์ง์ ํ์ฌ ๋ณด๋ด์ค์ผ ํฉ๋๋ค.
server๋ request๋ฅผ ํด์ํ์ฌ “์์ธ”์ ๋ ์จ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ response๋ก ๋ณด๋ด์ค๋๋ค.
HTTP ํ๋กํ ์ฝ
HTTP ํ๋กํ ์ฝ์ ๋ํด ์์๋ณด๊ธฐ ์ ์ ์นํ์ด์ง์ ์กด์ฌํ๋ object์ด๋ ๋จ์ด์ ๋ํ ์๋ฏธ๋ฅผ ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค.
์นํ์ด์ง์ base HTML-file์ ์ฌ๋ฌ objects๋ค์ ํฌํจํ๊ณ ์์ต๋๋ค. object๋ HTML file, JPEG image, audio file ๋ฑ์ด ๋ ์ ์์ต๋๋ค.
์ด๋ฌํ object๋ URL์ ํตํด ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค. client๋ object์ ๋ฐ๊ธฐ์ํด ์ํ๋ object์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ URL์ ํฌํจํ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์๋ฒ๋ก ๋ถํฐ object๋ฅผ ์์ฒญํฉ๋๋ค.
HTTP((Hypertext Transfer Protocol)๋ ์ธํฐ๋ท์์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ๋ํ์ ์ธ client/server ๋ชจ๋ธ ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ ๋๋ค.
Application level ํ๋กํ ์ฝ์ด๋ฉฐ TCP/IP์์์ ์๋ํฉ๋๋ค. ๋งํฌ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ์ ์ ์ํ๋ฉฐ HTML ๋ฌธ์, ์ด๋ฏธ์ง, ๋์์, ์ค๋์ค ๋ฑ ์ฌ๋ฌ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ต๋๋ค.
HTTP์๋ ์ฐ๊ฒฐ ์ ์ง์ ์ ๋ฌด์ ๋ฐ๋ผ ๋๊ฐ์ง ๋ฒ์ ์ด ์กด์ฌํฉ๋๋ค.
๋ฒ์ 1.0์ ๋น์ง์ HTTP connection, ๋ฒ์ 1.1์ ์ง์ HTTP connection์ ์๋ฏธํฉ๋๋ค.
Non-persistent HTTP ((๋น์ง์)
๋น์ง์ HTTP๋ ๋ง ๊ทธ๋๋ก ์๋ฒ์ ์ฐ๊ฒฐํ๊ณ , ์์ฒญํํ ์๋ต์ ๋ฐ์ผ๋ฉด ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฌ๋ ๋ฐฉ์์ ๋งํฉ๋๋ค.
์ฌ์ฉ์๊ฐ www.someSchool.edu/someDepartment/home.index๋ผ๋ URL์ ์ ์ํ๊ณ ์ ํ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. + ์๋ฒ์ ํฌํธ ๋ฒํธ๋ 80์ ๋๋ค.
์์ ๊ฐ์ ๊ณผ์ ์ ์์ ํ๋๋น ํ๋์ ์ฐ๊ฒฐ์ด ๋ง๋ค์ด ์ง๋ฉด์ ๋ฐ๋ณต๋ฉ๋๋ค. ์ด๋ฌํ ๋น์ง์ HTTP๋ ์๋์ ๊ฐ์ ์ฅ๋จ์ ์ ๊ฐ์ต๋๋ค.
Pro)
- ๋ถํน์ ๋ค์๋ฅผ ๋์์ผ๋ก ํ๋ ์๋น์ค์ ์ ํฉํ๋ค.
- ๋ง์ ์ธ์์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ์ ์ ์ ์ง๋ ์ต์ํ์ผ๋ก ์ ์งํ๋ฏ๋ก ๋ ๋ง์ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
Cons)
- ํ๋ฒ์ ํ๋์ object ๋ฐ์ TCP ์ฐ๊ฒฐ์ ํตํด ์ ์กํ์ง ๋ชปํ๋ค.
- ํ๋์ object๋น 2 RTT๊ฐ ์๊ตฌ๋๋ค.
- ๋งค TCP ์ฐ๊ฒฐ๋ง๋ค OS์ overhead ๋ฐ์
RTT ((Return Transfer Time) : ํ๋์ ํจํท์ด client์์ server๋ก ๊ฐ๋ค๊ฐ ๋ค์ client๊น์ง ๋์์ค๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์๋ฏธํฉ๋๋ค.
Persistent HTTP ((์ง์)
์ง์ HTTP์์ server๋ response๋ฅผ ๋ณด๋ด๊ณ ๋์๋ client์์ ์ฐ๊ฒฐ์ ์ ์งํฉ๋๋ค. ๋ฐ๋ผ์ ๋จ์ผ TCP์ฐ๊ฒฐ์ ํตํด ์ฌ๋ฌ objects๋ค์ ์ ์กํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋ํ object์ ๋ํ GET ๋ฉ์ธ์ง๋ ๋ณ๋ ฌ๋ก ์์ฒญํ๊ฒ ๋ฉ๋๋ค.
HTTP request message
General format
1) Method
๋ฉ์๋๋ ์์ฒญ์ ์ข ๋ฅ๋ฅผ ์๋ฒ์ ์๋ ค์ฃผ๊ธฐ ์ํด์ ์ฌ์ฉ๋ฉ๋๋ค.
- GET : ์ ๋ณด๋ฅผ ์์ฒญํ๊ธฐ ์ํด์ ์ฌ์ฉ ((SELECT)
- POST : ์ ๋ณด๋ฅผ ์ฝ์ ํ๊ธฐ ์ํด์ ์ฌ์ฉ ((INSERT)
- PUT : ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด์ ์ฌ์ฉ ((UPDATE)
- DELETE : ์ ๋ณด๋ฅผ ์ญ์ ํ๊ธฐ ์ํด์ ์ฌ์ฉ ((DELETE)
- OPTIONS : ์๋ต ๊ฐ๋ฅํ HTTP method ์์ฒญ
- HEAD : HTTP Header ์ ๋ณด๋ง ์์
- TRACE : Request์ loop back ํ ์คํธ
- CONNECT : ํฐ๋๋ง์ ๋ชฉ์ ์ผ๋ก ์ฐ๊ฒฐ์์ฒญ
์ฌ์ค GET, POST ๋ง์ผ๋ก ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ํ์์์ด ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
+ POST method VS GET method
POST ์ GET ๋ฉ์๋๋ HTTP ํ๋กํ ์ฝ์์ ๋ฐ์ดํฐ๋ฅผ client์์ server๋ก ์ ์กํ๋ค๋ ๊ณตํต์ ์ด ์กด์ฌํ์ง๋ง ๋ถ๋ช ํ ์ฐจ์ด์ ๋ํ ์กด์ฌํ๋ฉฐ ์ํฉ์ ์๋ง๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๊ฒ์ด ์ค์ํฉ๋๋ค.
2) URL
์์ฒญํ๋ ์์์ ์์น๋ฅผ ํ์ํฉ๋๋ค.
3) Version
์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ ๋ฒ์ ์ ์๋ฏธํฉ๋๋ค.
1.0 : non-persistent HTTP connection 1.1 : persistent HTTP connection
HTTP response message
- ํ๋กํ ์ฝ๊ณผ ์๋ต์ฝ๋ : ((HTTP/1.1 200 OK)
- ๋ ์ง : ((Sun, 28 Aug 2017 08:56:53 GMT)
- ์๋ฒ ํ๋ก๊ทธ๋จ ๋ฐ ์คํฌ๋ฆฝํธ ์ ๋ณด : ((Apache/2.4.27 LinuxLinux) ์๋ตํค๋์๋ ๋ค์ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ์ปจํ ์ธ ๋ง์ง๋ง ์์ ์ผ
- ์บ์ ์ ์ด ๋ฐฉ์
- ์ปจํ ์ธ ๊ธธ์ด
- Keep-Alive ๊ธฐ๋ฅ ์ค์
์ฝ๋๋ฒํธ์ค๋ช ๋น๊ณ
200 | ์ฑ๊ณต | ์๋ฒ๊ฐ ์์ฒญ์ ์ ๋๋ก ์ฒ๋ฆฌํ๋ค. |
301 | ์๊ตฌ์ ์ผ๋ก ์ด๋ํ๋ค | ์์ฒญํ ๋ฆฌ์์ค๊ฐ Location en−USen−US ํค๋์ ์ฃผ์ด์ง URL๋ก ์์ ํ ์ฎ๊ฒจ์ก๋ค๋ ๊ฒ์ ๋ํ๋ธ๋ค. |
400 | ์๋ชป๋ ์์ฒญ | ์๋ฒ๊ฐ ์์ฒญํ ๋ฉ์ธ์ง๋ฅผ ํด์ํ์ง ๋ชปํ๋ค. |
403 | ๊ธ์ง | ์๋ฒ๊ฐ ์์ฒญ์ ๊ฑฐ๋ถํ๊ณ ์๋ค. |
404 | ์ฐพ์ ์ ์์ | ์์ฒญํ ์์์ด ์๋ฒ์ ์กด์ฌํ์ง ์๋๋ค. |
505 | ์ง์ํ์ง ์๋ HTTP ๋ฒ์ | ํด๋น ๋ฒ์ ์ HTTP๋ฅผ ์ง์ํ์ง ์๋๋ค |
'๐ CS [ComputerScience] > ๐ ์ปดํจํฐ๋คํธ์ํฌ [ComputerNetwork]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] Network Layer - Control Plane& Data Plane (0) | 2022.06.17 |
---|---|
[Network] TCP ํ๋ฆ์ ์ด (0) | 2022.05.02 |
[Network] TCP ํผ์ก์ ์ด (0) | 2022.05.02 |
[Network] GET vs POST Method (0) | 2022.05.02 |
[Network] Computer Network OSI 7 Layer (0) | 2022.04.28 |