p2p 에 대해서.

익명 사용자의 이미지

안녕하세여. p2p에 관심이 많은 학생입니다.
소리바다 같은 file sharing program을 짤려고 하는데여.
현재 두가지 방식을 생각하고 있거든여.

하나는, 서버의 역할을 최대한 단순히 해서, 서버는 접속 클라이언트의
ip address만을 db에 저장했다고 클라이언트가 검색요청을 하면 저장된
ip list를 리턴해주고, 요청한 클라이언트가 개별적으로 검색을 하는 방
식이구여.
다른 하나는 좀 복잡한 서버 방식입니다. 클라이언트가 접속하면, 클라이
언트의 모든 파일정보를 db에 저장했다가, 클라이언트는 검색요청을
서버에 직접 보내게 됩니다. 서버는 요청을 받고 디비를 검색해, 매칭되는
파일의 ip address와 file name만을 클라이언트에 리턴해주면, 클라이언트
는 서버로 부터 받은 ip address로 tcp connection을 맺에 파일을
다운로드 하는 방식입니다.

두방식에 일장 일단이 있다고 생각하는데여... 그리고 두 방식 다 미국이
나 우리나라에서 가장 유명한 file sharing program에서 실제 사용되는
방식으로 알고 있는데여.

여러분 같으면 어떤 방식으로 코딩하겠습니까?
그리고 그 이유는 무엇입니까?( 어떤 장점, 단점이 있다고 생각 하시는지
요?)

그럼 좋은 하루 되세여.

익명 사용자의 이미지

음.. 저도 한동안 p2p에 대하여 고민을 해보았었는데..
(그렇다고 실제로 짜본적은 없어요. ^^ 그냥 고민만..)
일단 첫번째 방법이 좀더 p2p개념에 가까운 것이겠지만 (그냥 제 생각으
론 말이죠. ^^;;)
전 두번째 방법이 낫지 않을까 싶네요.

왜냐면은 전 가상 ip를 쓰거든요.
그러니깐 문제가 소리바다를 사용 못한다는 것이예요. ㅡㅜ
만약 소리바다가 서버에서 ip랑 화일을 저장하구 있다가 찾아서 보내주는
방법을 이용했다면 (두번째 방법을 이용했다면)
저두 소리바다를 마음껏 이용할 수 있었겠죠. ㅡㅜ
(지금 여기 적은건 실제는 어떤지 모르지만 그동안 제가 학교에서 배운것
이나 제가 가상 ip쓰면서 고민해 보았던 것이기 때문에 크게 신뢰성이 있
지는 않을것 같습니다.)

그래서 어떤 상황의 사용자들도 충분히 쓸 수 있도록 두번째 방법이 낫지
않을까 싶네요.
(첫번째 방법을 사용할 지라도 충분히 가능하게 할 수는 있겠지만은.. 좀
쉽게 구현하기 위해선. ^^)

그냥 개인적인 의견이었습니다.

아. 고수님들~
제가 잘못 알고 있는것이 있다면은 지적해 주시기 바랍니다. ^^

ps. 월드컵 응원에서만 태극기 달지 마시고 현충일날도 좀 많이많이 달아
주세요~ ^^

익명 사용자의 이미지

현재의 대세는 gnutella 방식이라고 생각합니다.

님이 말한 1번 방식과 비슷한 방식에서 시작하였고,
눈부신 발전을 거듭하여서, Ultra peer 혹은 Super peer 라고 부르는
혼합 방식을 향해서 진보한 상태입니다.

gnutella 자체의 이념적 문제때문에 이런 과정을 추구하는 면도 있겠지만,
아무래도 현재의 p2p 의 모델로는 가장 선진적인게 아닐까.
생각해 봅니다.

http//groups.yahoo.com/group/the_gdf/

이곳을 참고하세요.

그럼.

익명 사용자의 이미지

그방식은 법적으로 문제가 있습니다 대표적인 예가 P2P의 원조인 냅스터
겠지요..
그리고 그런 방식으로 한다고 해서 NAT환경내에서 되지는 않습니다..
그 이유는 단순히 목록만 저장할뿐 실체는 저장하지 않기 때문이지요..
NAT내에서의 문제는 socks5라든가 여러가지 프락시가 있으니 그걸 이용하
시는게 좋지 않을까 싶은데용..
그리고 전 NAT환경 내에서 소리바다 잘 쓰고 있는데요..-_-);;
물론 랜덤포트가 아니라 포트를 할당해서 쓰지만요..-_-);;

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.