From 077066fadb93bedb24948c7a29cb7c123a42e2e8 Mon Sep 17 00:00:00 2001 From: "wusub.shin@softcamp.co.kr" Date: Fri, 6 Dec 2024 16:52:38 +0900 Subject: [PATCH] =?UTF-8?q?UDP=20=ED=99=80=20=ED=8E=80=EC=B9=AD=EC=97=90?= =?UTF-8?q?=20=EB=8C=80=ED=95=9C=20=EB=82=B4=EC=9A=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/_meta.json | 1 + pages/network/_meta.json | 3 ++ .../p2p-udp-hole-punching-1733467444946.png | Bin 0 -> 73092 bytes pages/network/p2p-udp-hole-punching.mdx | 38 ++++++++++++++++++ pages/webRTC/webrtc-basic-concept.mdx | 1 + theme.config.tsx | 3 ++ 6 files changed, 46 insertions(+) create mode 100644 pages/network/_meta.json create mode 100644 pages/network/images/p2p-udp-hole-punching-1733467444946.png create mode 100644 pages/network/p2p-udp-hole-punching.mdx diff --git a/pages/_meta.json b/pages/_meta.json index 93d9f5d..572f3cd 100644 --- a/pages/_meta.json +++ b/pages/_meta.json @@ -11,6 +11,7 @@ "type": "separator" }, "common": "common", + "network": "network", "linux": "linux", "msa": "msa", "docker": "docker", diff --git a/pages/network/_meta.json b/pages/network/_meta.json new file mode 100644 index 0000000..437f651 --- /dev/null +++ b/pages/network/_meta.json @@ -0,0 +1,3 @@ +{ + "p2p-udp-hole-punching": "p2p에서 udp 홀 펀칭(hole punching)" +} diff --git a/pages/network/images/p2p-udp-hole-punching-1733467444946.png b/pages/network/images/p2p-udp-hole-punching-1733467444946.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca206a6e1589a21e6489b2f865d58f0c99bd75a GIT binary patch literal 73092 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 ai8Vbf6%I;${5ZM+KDMXuC(Cf8=>G!!h{2Qq literal 0 HcmV?d00001 diff --git a/pages/network/p2p-udp-hole-punching.mdx b/pages/network/p2p-udp-hole-punching.mdx new file mode 100644 index 0000000..8e76f7e --- /dev/null +++ b/pages/network/p2p-udp-hole-punching.mdx @@ -0,0 +1,38 @@ +# p2p에서 udp 홀 펀칭(hole punching) + +udp 홀 펀칭이란 아웃바운드만 열고 NAT 간에 UDP 통신이 가능하도록 구멍 뚫는것을 말함 + +## 서로 다른 NAT 뒤에 Client 가 있을 때 + +![picture 0](./images/p2p-udp-hole-punching-1733467444946.png) + +위 이미지에서 `중간 이미지` 가 좀 어려울 수 있다 + +`(1) Request Connection to B` 와 `(2) Forward B's Endpoints to A` 이 부분은 그냥저냥 이해가 되는데 + +`(3) Send to B at` 의 그림이 이해가 잘 안간다 + +`(a) 138.76.29.7:31000` 이 왜 실패하냐? + +최초 A가 B의 퍼블릭 주소로 보내는 UDP 패킷은 B의 NAT 입장에서 인바운드 패킷이고, B의 NAT는 인바운드는 하나도 열어놓지 않았다. + +앞서 B의 NAT는 Server S에게 A의 퍼블릭 주소를 획득하기 위해 보냈던 요청으로 인하여 +`아웃바운드`로 `orgin-src:10.1.1.3:4321 / NAT changed-src:138.76.29.7:31000 / dst:18.181.0.31:1234` 이라는 맵핑 정보만 저장해놓았기에 + +`Server S(18.181.0.31:1234)` 이 `138.76.29.7:31000` 로 요청을 보낼 경우만 패킷이 허용되는 상태이다 + +A가 B로 보내는 최초 요청 `(a) 138.76.29.7:31000` 이 실패했지만 + +이로 인하여 앞서 B의 퍼블릭 주소 획득을 위해 Server S와 열어놓은 커넥션 + +`orgin-src:10.0.0.1:4321 / NAT changed-src:155.99.25.11:62000 / dst:18.181.0.31:1234` 의 맵핑 정보를 + +`orgin-src:10.0.0.1:4321 / NAT changed-src:155.99.25.11:62000 / dst:138.76.29.7:31000` 과 같이 `dst`를 B의 NAT으로 바꿔서 저장하게된다 + +이렇게되면 `B의 NAT(138.76.29.7:31000)` 이 `138.76.29.7:31000` 로 요청을 보낼 수 있는 상태가 된다 + +이로 인하여 B의 NAT를 통해서 들어오는게 허용되는 **"구멍"** 이 뚫린 것이다 + +## 참고 링크 +https://bford.info/pub/net/p2pnat/ + diff --git a/pages/webRTC/webrtc-basic-concept.mdx b/pages/webRTC/webrtc-basic-concept.mdx index 642f569..b85f0b1 100644 --- a/pages/webRTC/webrtc-basic-concept.mdx +++ b/pages/webRTC/webrtc-basic-concept.mdx @@ -156,6 +156,7 @@ UDP + TCP 인 별도의 프로토콜, 신뢰성 보장하기 때문에 손실이 - UDP 특징 : 메시지 단위 전송 - TCP 특징 : 순서 보장 + ## 참고 링크 https://lovejaco.github.io/posts/webrtc-connectivity-and-nat-traversal/ diff --git a/theme.config.tsx b/theme.config.tsx index 59d57b5..40fbc1d 100644 --- a/theme.config.tsx +++ b/theme.config.tsx @@ -100,6 +100,9 @@ const config: DocsThemeConfig = { if (title === "common") { return <>📒 {title}; } + if (title === "network") { + return <>📒 {title}; + } if (title === "linux") { return <>📒 {title}; }