DevLog ๐ถ
[Network] ํ๋กํ ์ฝ ์คํ๊ณผ ๋ฉ์์ง์ ์ก์ ๊ณผ์ ๋ณธ๋ฌธ
[Network] ํ๋กํ ์ฝ ์คํ๊ณผ ๋ฉ์์ง์ ์ก์ ๊ณผ์
dolmeng2 2023. 4. 22. 16:54๐ฑ ๋ค์ด๊ฐ๊ธฐ ์
์ง๋ ํฌ์คํ ๊น์ง๋ ์ด๋ป๊ฒ ๋๋ฉ์ธ์ผ๋ก IP ์ฃผ์๋ฅผ ์ป์ด์ค๋์ง ๋ฐฐ์ ๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ OS ๋ด๋ถ์ ์๋ ํ๋กํ ์ฝ ์คํ์ ์ด๋ป๊ฒ ๋ฉ์์ง๋ฅผ ์ก์ ํ๋๋ก ํ๋์ง, ๊ทธ ํ๋ก์ฐ๋ฅผ ์์๋ณผ ์์ ์ด๋ค.
โ๏ธ ๋ฐ์ดํฐ์ ์ก-์์ ์ ์ด๋ป๊ฒ ์ผ์ด๋ ๊น?
์ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก DNS ์๋ฒ์ IP ์ฃผ์๋ฅผ ์กฐํํ๋ ๊ฒ์ฒ๋ผ, ์ด๋ฒ์๋ ์์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ค.
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด, ์ด๋ค ํ์ดํ ๊ฐ์ ๊ฒ์ ํตํด์ ๋ฐ์ดํฐ๊ฐ ํ๋ฅด๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ค์ฒดํ๋ ๊ฒ์ ์๋๊ณ , ๊ทธ์ '๋ฐ์ดํฐ์ ํต๋ก'๋ก์ ํ์ชฝ ๋์์ ๋ค๋ฅธ ์ชฝ ๋๊น์ง ํ์ดํ๋ฅผ ํตํด์ ๋ฐ์ดํฐ๊ฐ ํ๋ฅด๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ '์์ผ'์ด๋ผ๋ ์น๊ตฌ๊ฐ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ํ์ดํ์ ์๋์ ์กด์ฌํ๋ ๋ฐ์ดํฐ์ ์ถ์ ๊ตฌ์ด๋ค.
์๋ฒ๊ฐ ์์ผ์ ๋ง๋ค๊ณ , ํด๋ผ์ด์ธํธ์์๋ ์์ผ์ ๋ง๋ค์ด์ ํ์ดํ๋ฅผ ๋๋ ค ์๋ฒ ์ธก์ ์ฐ๊ฒฐํ๋ ํํ์ด๋ค.
1. ์์ผ์ ๋ง๋ค๊ธฐ (์์ผ ์์ฑ)
2. ์๋ฒ ์ธก์ ์์ผ์ ํ์ดํ ์ฐ๊ฒฐ (์ ์)
3. ๋ฐ์ดํฐ ์ก-์์
4. ํ์ดํ ๋ถ๋ฆฌ ๋ฐ ์์ผ ๋ง์ (์ฐ๊ฒฐ ์ข ๋ฃ)
์ด๋ฌํ 4๊ฐ์ง ๊ณผ์ ์ OS ๋ด๋ถ์ ํ๋กํ ์ฝ ์คํ์์ ์ผ์ด๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ํ์ดํ๋ฅผ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์์๋ถ์ง ์๊ณ , ์ค์ง ํ๋กํ ์ฝ ์คํ์ ์๋ขฐํ์ฌ ํ์ดํ๋ฅผ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
์ฌ์ค ๋ธ๋ผ์ฐ์ ๋ ์์ผ ๋ผ์ด๋ธ๋ฒ๋ฆฌ์ ์ด๋ ํ ํ๋ก๊ทธ๋จ์ ํธ์ถํ๋ ํํ์ง๋ง, ํด๋น ํ๋ก๊ทธ๋จ์์๋ ๋จ์ํ ํ๋กํ ์ฝ ์คํ์ ์ ๋ฌ๋ง ํ๊ธฐ ๋๋ฌธ์ ์์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋กํ ์ฝ ์คํ์ ํ๋๋ก ๋ด๋ ๋๋ค. (๋ค๋ง, ์์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ทธ๋ฅ ์ค๊ฐ์๋ก์ ์กด์ฌํ๋ ๊ฒ์ด๋ค.)
โ๏ธ ์์ผ ์ฐ๊ฒฐ ํ๋ก์ธ์ค ์์๋ณด๊ธฐ
์ผ์ชฝ์ ๋ถ๋ถ์ ์ค์ ๋ก ์ด๋ค ์์ผ๋ก ์ผ์ด๋๋์ง ์ฝ๋์ธ๋ฐ, socket, connect, write, read, close ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
๐ฑ 1. ์์ผ ์์ฑํ๊ธฐ
๋จผ์ , socket ๋ฉ์๋๋ฅผ ํตํด์ ์์ผ์ ์์ฑํ๋ค.
์ด๋, ๋ฐํ๊ฐ์ผ๋ก '์์ผ ๋์คํฌ๋ฆฝํฐ' ๋ผ๋ ๊ฒ์ ๋ณด๋ด๋๋ฐ, ์ด๋ ์์ผ์ ๋ํ ์๋ณ์ ๊ฐ์ ๊ฒ์ด๋ค.
int sockfd = socket(domain, type, protocol) ์ด๋ฐ ์์ผ๋ก ๋ฐ๋๋ฐ, ๊ฐ๊ฐ์ ๋ํด ๊ฐ๋ตํ๊ฒ๋ง ์์๋ณด์.
- sockfd : ํ๊ฒ์ ์์ผ ๋์คํฌ๋ฆฝํฐ
- domain : ์ ์ํ๊ธฐ ์ํ ๋๋ฉ์ธ ์ด๋ฆ.
- type: ํต์ ์ ํ (TCP or UDP)
- protocol: IP ํ๋กํ ์ฝ ๊ฐ.
๐ฑ 2. ์์ผ ์ ์ํ๊ธฐ
์์ฑํ ์์ผ์ ์๋ฒ์ ์์ผ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด์, ํ๋กํ ์ฝ ์คํ์ ์๋ขฐํ๋ค.
์ด๋ connect ๋ฉ์๋๋ฅผ ํ์ฉํ๋ฉฐ, ๋ด๋ถ์ ์ผ๋ก ๋์คํฌ๋ฆฝํฐ, IP ์ฃผ์, ํฌํธ ๋ฒํธ 3๊ฐ์ง๋ฅผ ๋ฐ๋๋ค.
์ฌ๊ธฐ์๋ ์ฒ์ ์์ผ ์์ฑ ์ ๋ฐํ๋ ์์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ฐ์์ ์ ๋ฌํ๋ฉฐ, ํ๋กํ ์ฝ ์คํ์ ์์ผ ๋์คํฌ๋ฆฝํฐ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ค ์์ผ์ ์๋ฒ์ ์ฐ๊ฒฐํ ์ง ํ๋จํ์ฌ ์ ์์ ์งํํ๋ค.
๊ทธ ๋ค์ ์ธ์์ธ IP ์ฃผ์์ ๊ฒฝ์ฐ, DNS ์๋ฒ์์ ์กฐํํ๋ ์ฐ๋ฆฌ๊ฐ ์ก์ธ์คํ ์๋ฒ์ IP ์ฃผ์์ด๋ค.
IP ์ฃผ์๋ ๋คํธ์ํฌ์ ์กด์ฌํ๋ ๊ฐ ์ปดํจํฐ๋ฅผ ์๋ณํ๊ธฐ ์ํ ์๋ณ์์ด๊ธฐ ๋๋ฌธ์, '๋คํธ์ํฌ์ ์ด๋ ์ปดํจํฐ์ธ์ง'์ ๋ํ ์ ๋ณด๋ฅผ ์ค ์ ์๋ค. ํ์ง๋ง, ์ฐ๋ฆฌ๋ ์ ์ํ๊ธฐ ์ํด ์๋ ์ปดํจํฐ์ ์์ผ๊น์ง ๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์, IP ์ฃผ์๋ก๋ ํด๋น ์ ๋ณด๋ฅผ ๋ด๊ธฐ ๋ถ์กฑํ๋ค.
์ด๋ฅผ ์ํด ์ถ๊ฐ๋ก 'ํฌํธ ๋ฒํธ'๋ผ๋ ๊ฒ์ ์ง์ ํ์ฌ ์ด๋ค ์ปดํจํฐ์ ์ด๋ ์์ผ๊ณผ ์ ์ํ ์ง ๋ถ๋ช ํ๊ฒ ์ง์ ํ ์ ์๋ค.
'์๊น ๋ถ๋ช
์์ผ์ ๋ํ ์๋ณ์๊ฐ ์์ผ ๋์คํฌ๋ฆฝํฐ๋ผ๊ณ ํ์ง ์์๋?'๋ผ๊ณ ์๊ฐํ ์๋ ์๋ค.
ํ์ง๋ง, ์์ผ ๋์คํฌ๋ฆฝํฐ๋ 'ํ๋์ ์ปดํจํฐ ๋ด์์ ์์ผ์ ์๋ณํ๊ธฐ ์ํด์' ์ฌ์ฉํ๋ ๊ฒ ์ด๋ฉฐ,
ํฌํธ ๋ฒํธ์ ๊ฒฝ์ฐ '์ธ๋ถ์์ ์์ผ์ ์ ์ํ๊ธฐ ์ํด' ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
๋ณดํต ํฌํธ ๋ฒํธ์ ๊ฒฝ์ฐ IANA์์ ๊ด๋ฆฌ๋๋ ๊ท์น์ ์ํด ์ง์ ํ ์ ์์ผ๋ฉฐ, ๋ณดํต ์น์ 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค.
(๋ธ๋ผ์ฐ์ ์์ ์น์ ์ ์ํ๊ธฐ ์ํด์๋ 80๋ฒ ํฌํธ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค!)
๐ฌ ๊ทธ๋ผ, ํด๋ผ์ด์ธํธ -> ์๋ฒ๋ก๋ ํฌํธ๋ฅผ ์ง์ ํ์ง๋ง, ์๋ฒ -> ํด๋ผ์ด์ธํธ๋ ์ด๋ป๊ฒ ์์ง?
ํด๋ผ์ด์ธํธ์ ์์ผ ํฌํธ ๋ฒํธ๋ ์์ผ ์์ฑ ์ ํ๋กํ ์ฝ ์คํ์ด ์ ์ ํ๊ฒ ํ ๋นํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋กํ ์ฝ ์คํ์ ์ ์ํ ๋ ์๋ฒ์๊ฒ ํต์งํด์ค๋ค.
๐ฑ 3. ๋ฐ์ดํฐ ์ก-์์ ํ๊ธฐ
์์ผ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ฉด, ์๋์ธก ์์ผ์ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ํต์งํ ์ง ์ ํด์ผ ํ๋ค.
๋จผ์ , write ๋ฉ์๋๋ฅผ ๋ณด๋ฉด ์์ผ ๋์คํฌ๋ฆฝํฐ์ ์ก์ ๋ฐ์ดํฐ, ์ก์ ๋ฐ์ดํฐ ๊ธธ์ด๋ฅผ ๋๊ฒจ์ฃผ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ฌ๊ธฐ์ ์ก์ ๋ฐ์ดํฐ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฑํ๋ HTTP ๋ฉ์์ง์ด๋ฉฐ, ํ๋กํ ์ฝ ์คํ์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์๊ฒ ๋๊ฒจ์ค๋ค.
์์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํตํด ํด๋น ์์ผ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด๋ฉฐ, ์๋ฒ๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์์ฒญ์ ๋ง๊ฒ ์ฒ๋ฆฌํ๊ณ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ฐ์กํ๋ค.
๊ทธ๋ผ, ์ด์ ๋ฐ์ดํฐ๊ฐ ๋์์์ผ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ๋ค.
์ด๋ read ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ธ์๋ก ๋์คํฌ๋ฆฝํฐ์ ์์ ๋ฒํผ ๋ฑ์ ๋ฐ๋๋ค. (์๋ฒ์ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํตํด readํ๋๋ก ์๋ขฐํ๋ ๊ฒ)
์์ ๋ฒํผ๋ฅผ ํตํด์ ๋ฐ์ ๋ฐ์ดํฐ์ ๋ํด์ ์ ์ฅํ๋ฉฐ, ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์๊ฒ ๊ฑด๋ค์ฃผ๋ ๊ฒ๊ณผ ๋์ผํ๋ค๊ณ ๋ณผ ์ ์๋ค.
๐ฑ 4. ์ฐ๊ฒฐ ๋๊ธฐ
close ๋ฉ์๋๋ฅผ ํตํด ์์ผ ์ฌ์ด์ ํ์ดํ๋ฅผ ๋ถ๋ฆฌํ๊ณ , ์์ผ ์ญ์ ๋ง์์ํจ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์น ์๋ฒ๊ฐ ์๋ต ๋ฉ์์ง๋ฅผ ๋ฐํํ ๋ ๋จผ์ close๋ฅผ ์งํํ๊ณ , ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ๋ฐ์์ ์์ผ์ '์ฐ๊ฒฐ ๋๊ธฐ' ๋จ๊ณ๋ก ๋ง๋ ๋ค.
์ดํ, ๋ง์ฝ read๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๊ฐ ์์ ๋์์ ์๋ขฐํ๋ฉด, read๋ ๋ฐ์ดํฐ์ ์ ๋ฌ๋์ ์ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ก-์์ ์ด ์๋ฃ๋์์ผ๋ ์ฐ๊ฒฐ์ด ๋๊ฒผ๋ค๋ ๊ฒ์ ํต์งํ๋ค. ๊ทธ๋ผ ๊ทธ๋๋ถํฐ ๋ธ๋ผ์ฐ์ ๋ close๋ฅผ ํตํด ์ฐ๊ฒฐ์ ๋๊ฒ ๋๋ค.
๐ฌ ํด์ฆ
1. http://www.cyber.co.kr์ ๋ญ ๋ํ๋ด๋์?
: ๋๋ฉ์ธ
2. http://www.cyber.co.kr/sample๊ณผ http://www.cyber.co.kr/sample/์ ์ฐจ์ด์ ์?
: ์ฒซ ๋ฒ์งธ๋ sample์ด๋ผ๋ ํ์ผ์ ๋จผ์ ํ์ธํ๊ณ (ํ์ผ๋ก ๊ฐ์ฃผํ๋ค), ์์ผ๋ฉด sample์ด๋ผ๋ ์ด๋ฆ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ์ธํ๋ค.
๋๋ ํฐ๋ฆฌ๊ฐ ์๋ค๋ฉด index.html์ ํ์ธํ๋ค.
๋ ๋ฒ์งธ๋ sample์ด๋ผ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋จผ์ ํ์ธํ๊ณ (๋๋ ํฐ๋ฆฌ๋ก ๊ฐ์ฃผํ๋ค), ํด๋น ๋๋ ํฐ๋ฆฌ์ index.html์ ํ์ธํ๋ค.
๋ ๊ฐ์ง ๋ชจ๋ ๊ฒฐ๊ตญ ํ์ผ์ด ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
3. ์ธํฐ๋ท์ ์ ์ํ PC๋ ์๋ฒ๋ฅผ ์๋ณํ๊ธฐ ์ํด ์ด์ฉํ๋ ์ฃผ์๋?
: IP ์ฃผ์
4. ์น ์๋ฒ์ ์ด๋ฆ์์ IP ์ฃผ์๋ฅผ ์กฐ์ฌํ๊ธฐ ์ํด ์ด์ฉํ๋ ์๋ฒ๋?
: DNS ์๋ฒ
5. DNS ์๋ฒ์ ์กฐํ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ํ๋ก๊ทธ๋จ์?
: DNS ๋ฆฌ์กธ๋ฒ