[UDP ํํ์นญ(Hole Punching)] - NAT ๊ทธ๋ฆฌ๊ณ P2P(1/2)
์ค๋ช ์ 2์ค ์์ฝ
- NAT๋ ๋ด๋ถ ๋คํธ์ํฌ์์ ์ธ๋ถ ๋คํธ์ํฌ๋ก ํต์ ์ ํ ๋ IP๋ฅผ ๋ณํํ๋ ๊ธฐ์ ์ด๋ค.
- ๋ณดํต P2P ํ์์ ๊ฒ์์ ๋ง๋ค ๋ NAT๋๋ฌธ์ UDP ํํ์นญ์ด๋ ๊ธฐ๋ฒ์ ์ฌ์ฉํด ํต์ ํ ์ ์๋๋ก ํ๋ค.
P2P(Peer to Peer)
์คํํฌ๋ํํธ๊ฐ์ ๋์ ๊ฒ์์ ์๋๋ฐฉ๊ณผ ์ด๋ค ๊ตฌ์กฐ๋ก ํต์ ํ๋ฉด์ ํจํท์ ์ฃผ๊ณ ๋ฐ์๊น?
์์ ๊ฐ์ด ์ค๊ฐ์ ํน๋ณํ ์๋ฒ ์์ด ์ ์ ์ ์ ์ ๋ผ๋ฆฌ ์ง์ ์ ์ผ๋ก ํต์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
(๋ฌผ๋ก ๋ก๊ทธ์ธ์ด๋ ์น/ํจ ๊ด๋ฆฌ ๋ฑ๋ฑ ์ด๋ฐ ๊ธฐ๋ฅ๋ค์ ๊ฒ์์๋ฒ๊ฐ ๊ด๋ฆฌํ๋ค)
์์ ๊ฐ์ด, ์ ์ ์ ์ ์ ๋ผ๋ฆฌ ํต์ ์ ํ๋ ๋ฐฉ์์ P2P(Peer to Peer)๋ผ๊ณ ํ๋ค.
๋ณดํต P2P ์คํ์ผ์ ๊ฒ์์์ ์ง์ฐ์ ์ต์ํ ํ๊ธฐ ์ํด UDP๋ฐฉ์์ ์ฌ์ฉํ์ฌ ํต์ ์ ํ๋๋ฐ TCP๋ ๊ทธ๋ ์ง๋ง ํต์ ์ ํ๊ธฐ ์ํด์ ์๋ก๊ฐ ์๋ก์ IP์ฃผ์์ ํฌํธ๋ฒํธ๋ฅผ ์์์ผํ๋ค.
๋ญ, ์ฌ๊ธฐ๊น์ง ๋ฌธ์ ๊ฐ ์๋ค! ๋ฌธ์ ๋ ์ธํฐ๋ท ๋ณด๊ธ๋ฅ ์ด ์ฌ๋ผ๊ฐ๊ฒ ๋๊ณ ํ ๊ฐ์ ์์ ์ธํฐ๋ท์ ์ด์ฉํ๋ ๊ธฐ๊ธฐ๋ค์ด ์ฆ๊ฐํ๊ฒ ๋๊ณ ๋๋ถ๋ถ์ ๊ฐ์ ์ด ๊ณต์ ๊ธฐ๋ผ๋ ๊ฒ์ ์ค์นํด ์ธํฐ๋ท์ ์ด์ฉํ๋ค.
์ด ๊ณต์ ๊ธฐ๋ผ๋ ๊ฒ์ ์์ ๋ง ๊ทธ๋๋ก, ํ๋์ ์ธํฐ๋ท ์ ์ผ๋ก ์ฌ๋ฌ ๊ธฐ๊ธฐ๋ค์ด ์ธํฐ๋ท์ ์ ์ ํน์ ๋ฌด์ ์ผ๋ก ์ด์ฉ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ค.
(์์ ๊ทธ๋ฆผ์ ์ฐ๋ฆฌ ์ง์ ์ธํฐ๋ท ๊ตฌ์กฐ์ธ๋ฐ LAN์ ์ด ๊ณต์ ๊ธฐ์ ์ฐ๊ฒฐ๋๊ณ ์ด ๊ณต์ ๊ธฐ์ ์ปดํจํฐ A, ์ปดํจํฐ B๋ฅผ ์ฐ๊ฒฐ์์ผ ๋ ๋์ ์ปดํจํฐ ๋ชจ๋ ์ธํฐ๋ท์ด ๊ฐ๋ฅํ๋ค. ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ์ญ์ ๊ณต์ ๊ธฐ Wi-fi๋ฅผ ํตํด ์ธํฐ๋ท์ด ๊ฐ๋ฅํ๋ค)
NAT(Network Address Translation)๋ก ์๊ธฐ๋ ๋ฌธ์
๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์๊ฐ P2P๊ฒ์์์ ์๋ก์ IP๋ฒํธ์ ํฌํธ๋ฒํธ๋ง ์๋ฉด ํต์ ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
๋ฌธ์ ๋ ๊ณต์ ๊ธฐ์๋ NAT๋ผ๋ ๋ ์์ด๋ค. ์ด NAT๋ผ๋ ๋ ์์ ๊ฐ๋จํ๊ฒ ๋งํด์ Private IP, Port๋ฒํธ๋ฅผ Public IP, Port๋ฒํธ ํน์ ๊ทธ ๋ฐ๋๋ก ๋ณํ์์ผ์ฃผ๋ ๊ฐ๋ ์ธ๋ฐ ์๋ ๊ทธ๋ฆผ์ ๋ณด์.
์ฐ๋ฆฌ ์ง ํ๊ฒฝ์ ์๋ฅผ ๋ค๋ฉด, ๊ณต์ ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ์ธํฐ๋ท์ผ๋ก ์ฌ๋ฌ ๊ธฐ๊ธฐ๊ฐ ์ธํฐ๋ท์ ์ด์ฉ ํ ์ ์๋๋ฐ ํต์ ์ฌ์์ ์ฐ๋ฆฌ ์ง์ผ๋ก ๋ฐ๊ธํด์ค IP๋ 100.100.100.100์ด๋ค.
์ด IP๋ฅผ ํตํด์ ์ด๋ ๋๊ตฌ๋ ์ง ์ฐ๋ฆฌ ์ง ๋คํธ์ํฌ๋ก ์ ๊ทผ ํ ์ ์๋ค. ํ์ง๋ง ์ธํฐ๋ท์ ์ด์ฉํ๊ณ ์๋ ๊ธฐ๊ธฐ๋ ์ฌ๋ฌ๋๊ธฐ ๋๋ฌธ์ ๋์ญ์ด ๋ถ๋ฆฌ๋์ด์๋ค.
์ปดํจํฐ A๋ 192.168.0.2, ์ปดํจํฐ B๋ 192.168.0.3์ธ๋ฐ ์ด IP๋ ๊ณต์ ๊ธฐ๊ฐ ๋ฐ๊ธํ IP์ฃผ์๊ณ ์ธ๋ถ์์๋ ์ด IP๋ก ์ ๊ทผ ํ ์ ์๋ค(์๋ํ๋ฉด, ๊ณต์ ๊ธฐ๊ฐ ๋ฐ๊ธํ ์ฐ๋ฆฌ ์ง ๋คํธ์ํฌ์์๋ง ์ ํจํ IP์ด๊ธฐ ๋๋ฌธ์ด๋ค)
์ ๋ฆฌํ์๋ฉด, ์ธ๋ถ์์ ์ ๊ทผ ํ ์ ์๋ IP๋ฅผ Public IP๋ผ ํ๊ณ ๋ด๋ถ์์๋ง ์ด์ฉ ํ ์ ์๋ IP๋ฅผ Private IP๋ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ ์ง์์ ์ธ๋ถ ์ธํฐ๋ท๊ณผ ํต์ ํ ๋๋ ์ด๋ค ๊ณผ์ ์ด ์ด๋ฃจ์ด์ง๊น?
์ค์ ๋ก ํต์ ์ฌ๊ฐ ์ฐ๋ฆฌ ์ง์ผ๋ก ๋ฐ๊ธํ IP๋ 100.100.100.100์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์์๋ ์ด IP(Public IP)๋ฅผ ํตํด์ ํต์ ์ ํ๋ค.
ํ์ง๋ง, ๋(์ปดํจํฐ A)๋ 192.168.0.2๋ผ๋ Private IP๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ด Private IP๋ฅผ Public IP๋ฅผ ๋ณํํ๋ ๊ณผ์ ์ด ํ์ํ๋ฐ ์ด๊ฒ์ NAT๋ผ๊ณ ํ๋ค.
์ด NAT๊ฐ ๋์ Private IP, Port๋ฒํธ๋ฅผ Public IP์ ์ ์ ํ ํฌํธ๋ฒํธ๋ฅผ ์ฐพ์์ ๋ฐ๊ฟ์ค๋ค.
์ค์ ๋ก ๋ค๋ฅธ ์ ์ ๋ ๋ด Private IP์ Port๋ฒํธ๋ ๋ชจ๋ฅด๊ณ ๋ณํ๋ Public IP, Port์ ํต์ ์ ํ๋ ๊ฒ์ด๋ค.
โป ์ฌ๊ธฐ์ ์ถ๊ฐ์ ์ธ ์ค๋ช ์ ํ์๋ฉด ์ฐ๋ฆฌ ์ง ์ปดํจํฐ A(192.168.0.2)์ ์ปดํจํฐ B(192.168.0.3)๋ ๊ฐ์ ๋คํธ์ํฌ์์ ์๊ธฐ ๋๋ฌธ์ NAT์์ด Private IP ๋ง์ผ๋ก๋ ํต์ ์ด ๊ฐ๋ฅํ๋ค.
์ด NAT๋๋ฌธ์ P2P ํต์ ์ ํ๋๋ฐ ์ค์ํ ๊ฑธ๋ฆผ๋์ด ์๊ฒผ๋ค.
- ๋(์ปดํจํฐ A)๋ ๋ค๋ฅธ ์ ์ ์ ํต์ ์ ํด์ผ๋๋๋ฐ ๋ด ์ปดํจํฐ์ Private IP์ ํฌํธ๋ฒํธ๋ง ์์ง NAT๋ฅผ ๊ฑฐ์ณ์ ์ด๋ค Public IP์ Port๋ฒํธ๋ก ๋ณํ๋ ์ง ๋ชจ๋ฅธ๋ค. -> ๋ฐ๋ผ์ ๋ค๋ฅธ ์ ์ ํํ ๋ด IP์ Port๋ฒํธ๋ฅผ ์๋ ค์ฃผ์ด ํต์ ์ ํด์ผ๋๋๋ฐ Private IP๋ผ ์๋ฏธ๊ฐ ์๋ค
- ๋ค๋ฅธ ์ ์ ๋ ๋ด ์ปดํจํฐ A์ ์ฐ๊ฒฐ์ ํ ๋ ๋ด ์ปดํจํฐ A์ Public IP, Port๋ฒํธ๋ ์์ง๋ง Private IP์ Port๋ฒํธ๋ ์์ง ๋ชปํ๋ค
์ด ๋ ๊ฐ์ง์ ๊ฑธ๋ฆผ๋์ ํด๊ฒฐ ํ ์ ์๋ ๋ฐฉ์์ผ๋ก UDP Hole Punching์ด๋ผ๋ ๊ธฐ๋ฒ์ด ์๋ค.
๋ค์ํธ์ ๊ณ์...
'Development > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํด๋ผ์ด์ธํธ์ ์น ๊ฒ์์ ํต์ ๊ด๊ณ(feat. ์ด๋ฒคํธํ์ด์ง) (0) | 2021.03.30 |
---|---|
[๋คํธ์ํฌ ๊ธฐ์ด ์ง์] IP, CIDR ํ๊ธฐ๋ฒ, ์๋ธ๋ท ๋ง์คํฌ (0) | 2019.07.03 |
[UDP ํํ์นญ(Hole Punching)] - UDP ํํ์นญ(2/2) (24) | 2018.12.04 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
ํด๋ผ์ด์ธํธ์ ์น ๊ฒ์์ ํต์ ๊ด๊ณ(feat. ์ด๋ฒคํธํ์ด์ง)
ํด๋ผ์ด์ธํธ์ ์น ๊ฒ์์ ํต์ ๊ด๊ณ(feat. ์ด๋ฒคํธํ์ด์ง)
2021.03.30 -
[๋คํธ์ํฌ ๊ธฐ์ด ์ง์] IP, CIDR ํ๊ธฐ๋ฒ, ์๋ธ๋ท ๋ง์คํฌ
[๋คํธ์ํฌ ๊ธฐ์ด ์ง์] IP, CIDR ํ๊ธฐ๋ฒ, ์๋ธ๋ท ๋ง์คํฌ
2019.07.03 -
[UDP ํํ์นญ(Hole Punching)] - UDP ํํ์นญ(2/2)
[UDP ํํ์นญ(Hole Punching)] - UDP ํํ์นญ(2/2)
2018.12.04