당나귀같은 P2P 클라이언트 프로그램들이 어떻게 Peer들이 공유기 밑에 있는... 내 컴퓨터의 파일을 다운받아 갈 수 있는 것일까요?

Iinux의 이미지

프루나나 당나귀 같은 P2p 프로그램을 사용하면
다른 Peer가 내 컴퓨터에서 파일을 다운로드하는 것을 볼 수 있습니다
('나'의 입장에서는 업로드인셈)

첨엔 그냥 아무 생각이 없었는데 갑자기 궁금해졌습니다.
내 컴퓨터는 공유기 밑에 있어서 외부에서 직접 내 컴퓨터에 TCP 커넥션을 맺을 수 없을텐데..
어떻게.. 내 파일을 받아갈 수 있는지..

이게 어떻게 가능한 것인가요?

khris의 이미지

그런 기술을 보통 홀펀칭이라고 부릅니다. 자세한건 구글에~

───────────────────────
yaourt -S gothick elegant
khris'log

───────────────────────
yaourt -S gothick elegant
khris'log

noblepylon의 이미지

몇몇 P2P 프로그램은 공유기 설정에서 포트를 직접 열어줘야 동작하더군요. (uTorrent 등)

---
“내게 능력주시는 자 안에서 내가 모든 것을 할 수 있느니라.”(빌립보서 4:13)

kslee80의 이미지

Universal Plug & Play
와 연관되어 있기도 합니다.

neon20의 이미지

A -- 공유기 --- 인터넷 --- 공유기 -- B

위와 같은 환경일 때, UDP 패킷이라면

1. A에서 B로 낮은 TTL을 가진 UDP 패킷을 쏜다. (UDP 패킷은 도중에 소멸, 이때 패킷의 UDP 포트를 B가 알아야함)
2. B에서 A로 UDP 패킷을 쏜다. (UDP 포트는 미리 인지하고 있어야함)

대충 이런식으로 되는걸로 알고있습니다.

TCP의 경우엔 핸드쉐이크로 인해 조금더 복잡할겁니다.

feanor의 이미지

그런 문제를 일반적으로 NAT traversal이라고 합니다. 위키백과 해당 페이지 참고.

http://en.wikipedia.org/wiki/NAT_traversal

simpid의 이미지

eMule 을 예로 들으셨으니 eMule 로 답해드리면...

과거에는 공유기에서 직접 포트 여는 설정을 했어야 합니다.
외부에서 연결을 시도해 오는건데 포트가 내부 IP 로 열려 있지 않으면 연결을 받을 수 없으니까요.

요즘 eMule 의 경우 uPNP 기능으로 공유기의 포트 설정을 직접 해버립니다.
이건 uTorrent 등도 같습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.