racavedigger.com
Daily insights on Bitcoin and crypto markets
  • Facebook
  • Pinterest
  • Home
  • News

האם BitTorrent משתמש ב- DHT?

Νίσα

האם BitTorrent משתמש ב- DHT?

סיכום

Bittorrent הוא פרוטוקול עמיתים לעמית המיועד להעברת קבצים. זה מאפשר למשתמשים להתחבר ישירות זה לזה כדי לשלוח ולקבל חלקי קבצים. הפרוטוקול משתמש בשרת מרכזי בשם Tracker כדי לתאם את פעולותיהם של כל העמיתים המעורבים. עם זאת, BitTorrent כולל גם הרחבה שנקראת פרוטוקול טבלת חשיש Sloppy Sloppy (DHT), שהוא פרוטוקול גשש עמיתים מבוסס UDP מבוסס UDP.

נקודות מפתח

  • Bittorrent הוא פרוטוקול להעברת קבצים.
  • משתמשים מתחברים ישירות זה לזה כדי לשלוח ולקבל חלקי קבצים.
  • הפרוטוקול משתמש בשרת מרכזי בשם Tracker.
  • הגשש מתאם את פעולותיהם של בני גילם המעורבים.
  • פרוטוקול ה- DHT הוא הרחבה ל- BitTorrent.
  • DHT הוא פרוטוקול גשש עמיתים מבוסס UDP.
  • BitTorrent משתמש ב- TCP כפרוטוקול ההובלה שלו.
  • יציאת ה- TCP הידועה לתעבורת Bittorrent היא 6881-6889.
  • DHT משתמש ביציאות UDP שונות המשא ומתן על ידי העמיתים.
  • BitTorrent אומצה באופן נרחב מאז יצירתו בשנת 2002.

שאלות ותשובות


ש: איך עובד Bittorrent?

ת: BitTorrent הוא פרוטוקול עמית לעמית המאפשר למשתמשים להעביר קבצים על ידי חיבור ישירות זה לזה. במקום להסתמך על שרת מרכזי, BitTorrent משתמשת בגשש כדי לתאם את פעולותיהם של העמיתים המעורבים בהעברת הקבצים. גישה מבוזרת זו מאפשרת הפצה יעילה של קבצים, מכיוון שמשתמשים יכולים לשתף חלקים מהקובץ שכבר הורידו עם אחרים.


ש: מה מטרת פרוטוקול DHT בביטורנט?

ת: פרוטוקול DHT, או פרוטוקול טבלת החשיש המרושל המופץ, הוא הרחבה ל- BitTorrent. זה מאפשר טורנטים נטולי גשש על ידי אחסון פרטי קשר עמיתים בטבלת חשיש מבוזרת. כל עמית ברשת הופך לגשש, והפרוטוקול מיושם על פני UDP. DHT מאפשרת לעמיתים למצוא ולהתחבר זה לזה מבלי להסתמך על שרת גשש מרכזי.


ש: באיזה פרוטוקול הובלה משתמשת בעיקר בביטורנט?

ת: BitTorrent משתמש בעיקר ב- TCP (פרוטוקול בקרת הילוכים) כפרוטוקול ההובלה שלו. TCP מבטיחה אספקה ​​אמינה ומסודרת של מנות נתונים בין עמיתים. טווח יציאת ה- TCP הידוע לתעבורת Bittorrent הוא 6881-6889.


ש: האם פרוטוקול DHT משתמש ב- UDP או TCP?

ת: פרוטוקול DHT בביטורנט משתמש ב- UDP (פרוטוקול Datagram User) כפרוטוקול ההובלה שלו. UDP הוא פרוטוקול ללא חיבור המספק משלוח מהיר ופחות אמין של מנות בהשוואה ל- TCP. העמיתים המעורבים בפרוטוקול DHT מנהלים משא ומתן על יציאות UDP כדי ליצור קשרים.


ש: מתי נוצר Bittorrent?

ת: BitTorrent תוכנן על ידי בראם כהן באפריל 2001 ויושם בקיץ 2002. זו הייתה התוכנית הראשונה שהשתמשת בפרוטוקול BitTorrent, ומאז פותחו יישומים רבים על בסיס הפרוטוקול.


ש: מה תפקיד הגשש בביטורנט?

ת: הגשש בביטורנט הוא שרת מרכזי שמנהל חיבורים בין עמיתים. זה עוקב אחר אילו עמיתים מחזיקים בחלקים השונים של קובץ ומאפשר חילופי נתונים ביניהם. עם זאת, ל- Tracker אין ידיעה על הפצת תוכן הקבצים בפועל.


ש: האם יש מספרי יציאה ספציפיים הקשורים לתעבורת Bittorrent?

ת: כן, טווח יציאת ה- TCP הידוע לתעבורת Bittorrent הוא 6881-6889. יציאות אלה משמשות להקמת חיבורי TCP בין עמיתים. בנוסף, יציאות ה- UDP המשמשות לפרוטוקול DHT מנוהלות על ידי העמיתים המעורבים בתקשורת.


ש: מה ההבדל בין עמית לצומת בביטורנט?

ת: בהקשר של BitTorrent, עמית מתייחס ללקוח או שרת שמאזין ביציאת TCP ומיישם את פרוטוקול Bittorrent להעברת קבצים. מצד שני, צומת מתייחס ללקוח או לשרת שמאזין ביציאת UDP ומיישם את פרוטוקול טבלת ה- hash המופצת (DHT). צמתים משמשים לאחסון ולאחזור פרטי קשר עמיתים עבור טורנטים נטולי גשש.


ש: האם Wireshark מסוגל לנתח תנועה של Bittorrent?

ת: כן, Wireshark כולל דיסקטור ביטורנט פונקציונאלי לחלוטין שיכול לנתח ולפענח תנועה של Bittorrent. תוספי ה- DHT ו- UTP נתמכים גם על ידי Wireshark. Dissector Bittorrent זמין מאז שחרור Wireshark ספציפי (פרטים שלא נמסרו).


ש: האם יש הגדרות העדפה הקשורות ל- BitTorrent ב- Wireshark?

ת: כן, יש הגדרות העדפה ב- Wireshark הקשורות ל- BitTorrent. חלק מההגדרות הללו כוללות את היכולת להרכיב מחדש הודעות bittorrent המשתרעות על קטעי TCP מרובים והאפשרות לפענח את Peer_ID של הודעות לחיצת היד. הגדרות העדפה אלה מספקות ניתוח מפורט יותר של תנועת הביטורנט שנלכדה ב- Wireshark.


ש: האם אתה יכול לספק קובץ לכידת דוגמה של תנועת bittorrent?

ת: כן, ישנם קבצי לכידת דוגמה זמינים לתעבורת bittorrent. דוגמא אחת היא “SampleCaptures/bittorrent.העברה 1.CAP, “נלכד באמצעות Microsoft Network Monitor. הוא מכיל כמה מנות bittorrent שהושגו בזמן ההורדה ב- Bittorrent. דוגמא נוספת היא “SampleCaptures/bittorrent.PCAP, “נלכד באמצעות LIBPCAP. זה לוכד את התקשורת בין שני לקוחות סיקור ללא החלפת DHT או עמיתים.


ש: כיצד אוכל להציג רק תנועה של bittorrent ב- Wireshark?

ת: כדי להציג רק תנועה מבוססת bittorrent ב- Wireshark, אתה יכול להשתמש במסנן התצוגה “bittorrent.”החלת פילטר זה תציג רק את המנות הקשורות לתעבורת Bittorrent. שימו לב כי פילטר זה עשוי להיות זמין ב- Wireshark לאחר גרסה ספציפית (פרטים שלא נמסרו).


ש: האם ניתן לתפוס רק תנועת גשש של Bittorrent באמצעות פילטר ספציפי?

ת: בעת לכידת תנועת רשת, לא ניתן לסנן ישירות את פרוטוקולי Bittorrent. עם זאת, אם אתה מכיר את יציאת ה- TCP המשמשת את Tracker Bittorrent (כגון 6881), אתה יכול להגדיר פילטר לכידה כדי לתפוס רק את התנועה על פני יציאה זו. לדוגמה, פילטר הלכידה “TCP Port 6881” יתפוס רק את תנועת הגשש של Bittorrent ביציאה 6881. בנוסף, אתה יכול לתפוס את תנועת הגשש של Bittorrent על פני מגוון יציאות ברירת מחדל (ה.ז., 6881-6889) באמצעות המסנן “TCP DETANANGE 6881-6889.”


ש: האם יש קישורים חיצוניים הקשורים ל- BitTorrent?

ת: כן, הנה כמה קישורים חיצוניים הקשורים ל- BitTorrent:

  • http: // www.BitTorrent.com/ – אתר Bittorrent הרשמי.
  • דף Bittorrent של Wikipedia – מאמר בוויקיפדיה על Bittorrent.
  • איך BitTorrent עובד – מידע על P2P באופן כללי, Bittorrent וחומת אש וחומת אש.
  • פרוטוקול DHT (BEP 5) – סיומת BitTorrent מבוססת UDP עבור עוקבים מבוזרים.
  • עותק ארכיב אינטרנט (2007-12-21) של פרוטוקול DHT DHT – טיוטה בארכיון של פרוטוקול DHT.
  • תיאור חתימת פרוטוקול היפי – תיאור חתימות פרוטוקול TCP ו- UDP שניתן להשתמש בו כדי לזהות את פרוטוקול BitTorrent.


ש: כיצד עובד פרוטוקול DHT בביטורנט?

ת: פרוטוקול DHT בביטורנט משתמש בטבלת חשיש מבוזרת לאחסון ולאחזר פרטי קשר עמיתים עבור טורנטים ללא גשש. לכל צומת ב- DHT יש מזהה ייחודי גלובלי המכונה “מזהה הצומת.”צמתים שומרים על טבלת ניתוב המכילה פרטי קשר עבור צמתים אחרים. טבלת הניתוב הופכת למפורטת יותר ככל שהצמתים מתקרבים למזהה הצומת שלהם. מבנה זה מאפשר לצמתים לגלות ולהתחבר עם עמיתים ביעילות.

מידע נוסף

BitTorrent.ORG הוא האתר הרשמי של BitTorrent. הוא מספק משאבים, תיעוד ועדכונים לגבי פרוטוקול Bittorrent ויישומיו. BitTorrent משתמש בפרוטוקול DHT כדי לאפשר טורנטים נטולי גשש, מה שמגדיל את המדרגיות והביזור של תהליך שיתוף הקבצים. פרוטוקול DHT מיושם על פני UDP ונשען על צמתים לאחסון ולאחזר פרטי קשר עמיתים.

הערה: מאמר זה מספק סקירה תמציתית של BitTorrent, סיומת ה- DHT שלו ומידע קשור. לקבלת פרטים מעמיקים יותר ומפרטים טכניים, מומלץ לבקר באתר BitTorrent הרשמי ובקישורים החיצוניים המסופקים.

האם BitTorrent משתמש ב- DHT

אחריך’מצא את כל בני גילך, ההורדה שלך מתחילה!

BitTorrent

BitTorrent הוא פרוטוקול המיועד להעברת קבצים. זה עמית לעמית באופיין, כאשר המשתמשים מתחברים זה לזה ישירות כדי לשלוח ולקבל חלקים מהקובץ. עם זאת, יש שרת מרכזי (המכונה גשש) המתאם את הפעולה של כל עמיתים כאלה. Tracker מנהל חיבורים בלבד, אין לו שום ידע על תוכן הקבצים המופצים, ולכן ניתן לתמוך במספר גדול של משתמשים באמצעות רוחב פס מוגבל יחסית של גשש.

הרחבה שנערכה לאחרונה ל- BitTorrent היא ה- DHT (“טבלת החשיש המרושלת המופצת” או פשוט נקראת פרוטוקול UDP Tracker). פרוטוקול עמיתים מבוסס UDP לפרוטוקול עמיתים. ו- UTorrent מייבא פרוטוקול הובלה מיקרו נוסף של UDP, הנקרא UTP.

הִיסטוֹרִיָה

באפריל 2001 עיצב בראם כהן את פרוטוקול Bittorrent, אותו יישם בקיץ 2002. התוכנית הראשונה שהשתמשת בפרוטוקול הייתה לקוח Bittorrent המקורי. כיום יישומים רבים זמינים, והפרוטוקול נמצא בשימוש נרחב.

תלות פרוטוקול

  • TCP: בדרך כלל, BitTorrent משתמש ב- TCP כפרוטוקול ההובלה שלו. יציאת ה- TCP הידועה לתעבורת Bittorrent היא 6881-6889 (ו- 6969 ליציאת Tracker). סיומת ה- DHT (Tracker Peer2Peer) משתמשת ביציאות UDP שונות המשא ומתן על ידי העמיתים.

תנועה לדוגמא

Xxx – הוסף כאן תנועה דוגמה (כטקסט רגיל או מסך מסך של Wireshark).

Wireshark

Dissector Bittorrent הוא (פונקציונלי לחלוטין, פונקציונלי חלקית, לא קיים, … לא משנה מה המצב הנוכחי). הרחבת DHT נתמכת מאז R39653. סיומת ה- UTP נתמכת מאז R36716.

הגדרות העדפה

  • הרכיבו מחדש הודעות bittorrent המשתרעות על קטעי TCP מרובים
  • לפענח את PEER_ID של הודעות לחיצת היד

דוגמה לכידת קבצים

SampleCaptures/BitTorrent.העברה 1.Cap (Microsoft Network Monitor) הנה לכידה עם כמה מנות bittorrent; הוא מכיל כמה מנות קטנות שקיבלתי תוך כדי הורדת משהו ב- bittorrent.

SampleCaptures/BitTorrent.PCAP (LIBPCAP) לכידת קובץ של שני לקוחות טורנט תקשורת ללא DHT או חילופי עמיתים.

מסנן תצוגה

ניתן למצוא רשימה מלאה של שדות מסנן תצוגה של bittorrent בהפניה לסינון התצוגה

הראה רק את התנועה מבוססת הביטורנט:

 BitTorrent

הערה: מיושם בפוסט Wireshark 0.10.12!

לכידת פילטר

אינך יכול לסנן ישירות פרוטוקולי Bittorrent בזמן הלכידה. עם זאת, אם אתה מכיר את יציאת ה- TCP המשמשת (ראה לעיל), אתה יכול לסנן על זה.

לוכד רק את תנועת הגשש של Bittorrent על אחת מיציאות ברירת המחדל (ה.ז. 6881):

 יציאת TCP 6881

לוכד את תנועת הגשש של Bittorrent על טווח יציאות ברירת המחדל (ה.ז. 6881-6889):

 TCP DEXANGE 6881-6889

בעת שימוש ב- LiBPCAP 0.9.1 ואילך או winpcap 3.1 ואילך; ביטוי זה לא יעבוד עם גרסאות ישנות יותר של LiBPCAP או WINPCAP, ולכן ב- Windows, שדרג ל- WINPCAP 3.1 ואילך, וב- UN*X, שדרג ל- LiBPCAP 0.9.x במידת האפשר, ואם לא אפשרי ויש לך גרסה של libpcap לפני 0.8.1, השתמש

 (TCP [0: 2]> = 6881 ו- TCP [0: 2] = 6881 ו- TCP [2: 2] 

(באג במיטוב LiBPCAP ב- LIBPCAP 0.8.X פירושו שזה לא יעבוד עם LiBPCAP 0.8.x, למרות שתוכל להשתמש ב- TCPDUMP עם דגל "-O").

קישורים חיצוניים

  • http: // www.BitTorrent.com/ דף Bittorrent הרשמי
  • דף Bittorrent של Wikipedia
  • איך BitTorrent עובד על P2P באופן כללי, הגדרות Bittorrent וחומת אש
  • פרוטוקול DHT (BEP 5), סיומת BitTorrent מבוססת UDP עבור עוקבים מבוזרים (מספר יציאת UDP משא ומתן). כמו כן: קישור לטיוטת פרוטוקול DHT (קישור מת), עותק ארכיון האינטרנט (2007-12-21) של טיוטת פרוטוקול DHT.
  • חתימת פרוטוקול היפי תיאור חתימות פרוטוקול TCP ו- UDP שעשויות לשמש כדי לזהות באופן היוריסטית את קישור ארכיון האינטרנט של פרוטוקול Bittorrent
  • עוד על BitTorrent

BitTorrent .אורג

BitTorrent משתמשת ב"טבלת חשיש מרושלת מבוזרת "(DHT) לאחסון פרטי קשר עמיתים עבור טורנטים" ללא גשש ". למעשה, כל עמיתים הופכים לגשש. הפרוטוקול מבוסס על קדמילה [1] ומיושם על פני UDP.

אנא שימו לב למינוח המשמש במסמך זה כדי למנוע בלבול. "עמית" הוא לקוח/שרת שמאזין ביציאת TCP שמיישם את פרוטוקול BitTorrent. "צומת" הוא לקוח/שרת שמאזין ביציאת UDP המיישם את פרוטוקול טבלת ה- hash המופץ. ה- DHT מורכב מצמתים ומאחסן את מיקום העמיתים. לקוחות BitTorrent כוללים צומת DHT המשמש ליצירת קשר עם צמתים אחרים ב- DHT כדי לגרום למיקום של עמיתים להורדה משימוש בפרוטוקול Bittorrent.

סקירה כללית

לכל צומת יש מזהה ייחודי גלובלי המכונה "מזהה הצומת."מזהי צומת נבחרים באקראי מאותו שטח של 160 סיביות כמו Infohases bittorrent [2]. "מדד מרחק" משמש להשוואה בין שני מזהי צומת או מזהה צומת ואינפוהש ל"קרבה."צמתים חייבים לשמור על טבלת ניתוב המכילה את פרטי הקשר עבור מספר קטן של צמתים אחרים. טבלת הניתוב הופכת מפורטת יותר ככל שמזהים מתקרבים למזהה של הצומת עצמו. צמתים יודעים על צמתים רבים אחרים ב- DHT שיש להם תעודות זהות "קרובות" לשלה.

בקדמליה, מדד המרחק הוא XOR והתוצאה מתפרשת כמספר שלם לא חתום. מרחק (a, b) = | a xor b | ערכים קטנים יותר קרובים יותר.

כאשר צומת רוצה למצוא עמיתים לסיקור, הוא משתמש במדד המרחק כדי להשוות את האינפוחאש של הסיקור עם תעודות זהות של הצמתים בטבלת הניתוב שלו משלו. לאחר מכן הוא יוצר קשר עם הצמתים שהם יודעים עליהם עם תעודות זהות הקרובות ביותר לאינפוהש ומבקש מהם את פרטי הקשר של עמיתים המורידים כעת את הסיקור. אם צומת יצירת קשר יודע על עמיתים עבור הסיקור, פרטי הקשר של עמיתים מוחזרים עם התגובה. אחרת, על צומת הקשר להגיב עם פרטי הקשר של הצמתים בטבלת הניתוב שלו הקרובה ביותר לאינפוהש של הסיקור. הצומת המקורי שאילתות באופן איטרטיבי צמתים הקרובים יותר לאינפוהש המטרה עד שהוא לא יכול למצוא צמתים קרובים יותר. לאחר מיצוי החיפוש, הלקוח מכניס את פרטי הקשר העמיתים לעצמו לצמתים המגיבים עם תעודות זהות הקרובות ביותר לאינפוהש של הסיקור.

ערך ההחזרה של שאילתה עבור עמיתים כולל ערך אטום המכונה "האסימון."כדי שצומת שיודיע כי עמיתו השולט מוריד סיקור, עליו להציג את האסימון שהתקבל מאותו צומת שאילתה בשאילתה שנערכה לאחרונה עבור עמיתים. כאשר צומת מנסה "להכריז" על סיקור, הצומת השאילתי בודק את האסימון כנגד כתובת ה- IP של צומת השאילתה. זה כדי למנוע מארחים זדוניים להירשם למארחים אחרים לטורנטים. מכיוון שהאסימון מוחזר רק על ידי צומת השאילתה לאותו צומת ממנו קיבל את האסימון ממנו, היישום אינו מוגדר. יש לקבל אסימונים למשך זמן סביר לאחר שהופצו. יישום BitTorrent משתמש ב- SHA1 של כתובת ה- IP שרשכו לסוד שמשתנה כל חמש דקות ואסימונים עד גיל עשר דקות מתקבלות.

טבלת ניתוב

כל צומת שומר על טבלת ניתוב של צמתים טובים ידועים. הצמתים בטבלת הניתוב משמשים כנקודות התחלה לשאלות ב- DHT. צמתים מטבלת הניתוב מוחזרים בתגובה לשאלות מצמתים אחרים.

לא כל הצמתים שאנו לומדים עליהם שווים. חלקם "טובים" וחלקם לא. צמתים רבים המשתמשים ב- DHT מסוגלים לשלוח שאילתות ולקבל תגובות, אך אינם מסוגלים להגיב לשאלות מצמתים אחרים. חשוב ששולחן הניתוב של כל צומת יהיה להכיל רק צמתים טובים ידועים. צומת טוב הוא צומת הגיב לאחת השאלות שלנו במהלך 15 הדקות האחרונות. צומת טוב גם אם הוא הגיב אי פעם לאחת השאלות שלנו ושלחה לנו שאילתה תוך 15 הדקות האחרונות. לאחר 15 דקות של חוסר פעילות, צומת הופך בספק. צמתים הופכים רע כאשר הם לא מצליחים להגיב למספר שאילתות ברציפות. צמתים שאנו יודעים שהם טובים מקבלים עדיפות על פני צמתים עם מעמד לא ידוע.

טבלת הניתוב מכסה את כל שטח מזהה הצומת בין 0 ל -2 160 . טבלת הניתוב מחולקת ל"דליים "שכל אחד מהם מכסה חלק מהחלל. לשולחן ריק דלי אחד עם טווח שטח של מזהה של Min = 0, מקסימום = 2 160 . כאשר מוכנס לצומת עם מזהה "n" לשולחן, הוא ממוקם בתוך הדלי שיש לו דקה <= N < מקס. לשולחן ריק יש דלי אחד בלבד ולכן כל צומת חייב להתאים לתוכו. כל דלי יכול להחזיק רק צמתים K, כרגע שמונה, לפני שהוא הופך "למלא."כאשר דלי מלא בצמתים טובים ידועים, לא ניתן להוסיף עוד צמתים אלא אם כן מזהה הצומת שלנו נופל בטווח הדלי. במקרה כזה, הדלי מוחלף על ידי שני דליים חדשים כל אחד עם מחצית מהטווח של הדלי הישן והצמתים מהדלי הישן מופצים בין שני החדשים. עבור שולחן חדש עם דלי אחד בלבד, הדלי המלא מחולק תמיד לשני דליים חדשים המכסים את הטווחים 0..2 159 ו- 2 159 ..2 160 .

כאשר הדלי מלא בצמתים טובים, הצומת החדש פשוט מושלך. אם ידוע כי צמתים בדלי הפכו גרועים, אז אחד מוחלף על ידי הצומת החדש. אם ישנם צמתים מפוקפקים בדלי לא נראו ברבע הדקות האחרונות, הצומת הנראה ביותר שנראה לאחרונה משוחרר. אם הצומת הפינג 'מגיב אז הצומת המפוקפק ביותר שנראה לאחרונה שנראה לאחרונה, עד שאדם לא מצליח להגיב או שכל הצמתים בדלי ידועים כטובים. אם צומת בדלי לא מצליח להגיב לפינג, מומלץ לנסות שוב לפני שהוא משליך את הצומת ולהחליף אותו בצומת חדש חדש. בדרך זו השולחן מתמלא בצמתים ארוכים ויציבים.

כל דלי צריך לשמור על נכס "שהשתנה אחרון" כדי לציין כמה "טרי" התוכן הוא. כאשר צומת דלי מצופה והוא מגיב, או צומת מתווסף לדלי, או שצומת בדלי מוחלף בצומת אחר, יש לעדכן את המאפיין האחרון שהשתנה של הדלי. יש לרענן דליים שלא הוחלפו תוך 15 דקות."זה נעשה על ידי בחירת תעודת זהות אקראית בטווח הדלי וביצוע חיפוש Find_nodes עליו. צמתים המסוגלים לקבל שאילתות מצמתים אחרים בדרך כלל אינם צריכים לרענן דלי לעיתים קרובות. צמתים שאינם מסוגלים לקבל שאילתות מצמתים אחרים בדרך כלל יצטרכו לרענן את כל הדלי מדי פעם כדי להבטיח שיש צמתים טובים בשולחן שלהם כאשר יש צורך ב- DHT.

לאחר הכנסת הצומת הראשון לטבלת הניתוב שלו וכאשר מתחילים לאחר מכן, הצומת צריך לנסות למצוא את הצמתים הקרובים ביותר ב- DHT לעצמו. זה עושה זאת על ידי הנפקת הודעות find_node לצמתים קרובים יותר וקרובים יותר עד שהיא לא יכולה למצוא קרוב יותר. יש לשמור את טבלת הניתוב בין הפגיעות של תוכנת הלקוח.

הרחבת פרוטוקול BitTorrent

פרוטוקול BitTorrent הורחב כדי להחליף מספרי יציאת UDP של צומת בין עמיתים המוצגים על ידי Tracker. באופן זה, לקוחות יכולים להביא את שולחנות הניתוב שלהם באופן אוטומטי באמצעות הורדת טורנטים רגילים. לקוחות שהותקנו לאחרונה מנסים להוריד סיקור ללא גשש בניסיון הראשון לא יהיו צמתים בטבלת הניתוב שלהם ויזדקקו לאנשי הקשר הכלולים בקובץ Torrent.

עמיתים התומכים ב- DHT קבעו את החלק האחרון של הדגלים השמורים של 8 בתים שהוחלפו בלחיצת היד של פרוטוקול Bittorrent. עמית קבלת לחיצת יד המציינת כי עמיתים מרוחקים תומכים ב- DHT אמור לשלוח הודעת יציאה. זה מתחיל ב- Byte 0x09 ויש לו עומס של שני בתים המכיל את יציאת UDP של צומת DHT בהזמנת בתים ברשת. עמיתים המקבלים הודעה זו צריכים לנסות לצלם את הצומת ביציאה וכתובת ה- IP שהתקבלה של העמיתים המרוחקים. אם מתקבלת תגובה לפינג, על הצומת לנסות להכניס את פרטי הקשר החדשים לטבלת הניתוב שלהם על פי הכללים הרגילים.

תוספי קבצי סיקור

למילון סיקור ללא גשש אין מפתח "להכריז". במקום זאת, לסיקור ללא גשש יש מקש "צמתים". יש להגדיר את המפתח הזה לצמתים הקרובים ביותר בטבלת הניתוב של הלקוח המייצר סיקור. לחלופין, ניתן להגדיר את המפתח לצומת טוב ידוע כמו אחד המופעל על ידי האדם המייצר את הסיקור. אנא אל תוסיף באופן אוטומטי "נתב.BitTorrent.com "כדי לסיקור קבצים או להוסיף באופן אוטומטי צומת זה לטבלאות ניתוב ללקוחות.

צמתים = [["",], ["",], . ] צמתים = [["127.0.0.1 ", 6881], [" שלך.נתב.צומת ", 4804], [" 2001: DB8: 100: 0: D5C8: DB3F: 995E: C0F7 ", 1941]]]

פרוטוקול KRPC

פרוטוקול KRPC הוא מנגנון RPC פשוט המורכב ממילונים מקודדים שנשלחו מעל UDP. מנות שאילתה יחידה נשלחת ונשלחת מנות יחידה בתגובה. אין לנסות שוב. ישנם שלושה סוגי הודעות: שאילתה, תגובה ושגיאה. לפרוטוקול DHT, ישנן ארבע שאילתות: פינג, find_node, get_peer.

הודעת KRPC היא מילון יחיד עם שלושה מפתחות המשותפים לכל הודעה ומפתחות נוספים בהתאם לסוג ההודעה. לכל הודעה יש מפתח "T" עם ערך מחרוזת המייצג מזהה עסקה. מזהה עסקה זה נוצר על ידי צומת השאילתה והוא מהדהד בתגובה, כך שתגובות עשויות להיות מתואמות עם מספר שאילתות לאותו צומת. יש לקודד את מזהה העסקה כמחרוזת קצרה של מספרים בינאריים, בדרך כלל 2 תווים מספיקים מכיוון שהם מכסים 2^16 שאילתות מצטיינות. לכל הודעה יש גם מפתח "y" עם ערך תווים יחיד המתאר את סוג ההודעה. הערך של המפתח "y" הוא אחד מ- "Q" עבור שאילתה, "R" לתגובה, או "E" לטעות. יש לכלול מפתח "V" בכל הודעה עם מחרוזת גרסת לקוח. המחרוזת צריכה להיות מזהה לקוח דו תווים שנרשם ב- BEP 20 [3] ואחריו מזהה גרסת דו תווים. לא כל היישומים כוללים מפתח "V" ולכן הלקוחות לא צריכים להניח את נוכחותו.

קידוד צור קשר

מידע ליצירת קשר עבור עמיתים מקודד כמחרוזת 6 בתים. ידוע גם בשם "כתובת IP קומפקטית/מידע על יציאה" כתובת ה- IP של 4 בתים היא בהזמנת בתים ברשת עם יציאת 2 בתים בהזמנת בתים ברשת שרשרת על הסוף.

מידע ליצירת קשר לצמתים מקודד כמחרוזת 26 בתים. ידוע גם בשם "מידע על צומת קומפקטי" מזהה הצומת של 20 בתים בהזמנת בתים ברשת יש את כתובת ה- IP/פרטי היציאה הקומפקטיים המנוגדים עד הסוף.

שאילתות

שאילתות, או מילוני הודעות KRPC עם ערך "y" של "Q", מכילים שני מפתחות נוספים; "Q" ו- "A". למפתח "Q" יש ערך מחרוזת המכיל את שם השיטה של ​​השאילתה. למפתח "A" יש ערך מילון המכיל טיעונים בשם לשאילתה.

תגובות

תגובות, או מילוני הודעות KRPC עם ערך "y" של "r", מכילים מפתח אחד נוסף "r". הערך של "r" הוא מילון המכיל ערכי החזרה בשם. הודעות התגובה נשלחות עם סיום מוצלח של שאילתה.

שגיאות

שגיאות, או מילוני הודעות KRPC עם ערך "Y" של "E", מכילים מפתח אחד נוסף "E". הערך של "E" הוא רשימה. האלמנט הראשון הוא מספר שלם המייצג את קוד השגיאה. האלמנט השני הוא מחרוזת המכילה את הודעת השגיאה. שגיאות נשלחות כאשר לא ניתן למלא שאילתה. הטבלה הבאה מתארת ​​את קודי השגיאה האפשריים:

קוד תיאור
201 שגיאה גנרית
202 שגיאת שרת
203 שגיאת פרוטוקול, כגון חבילה מוטה, טיעונים לא חוקיים או אסימון רע
204 שיטה לא ידועה

מנות שגיאות דוגמה:

שגיאה גנרית = bencoded = d1: eli201e23: שגיאה גנרית ocurrede1: t2: aa1: y1: ee

שאילתות DHT

לכל השאלות יש מפתח וערך "מזהה" המכיל את מזהה הצומת של צומת השאילתה. לכל התגובות יש מפתח וערך "מזהה" המכילים את מזהה הצומת של הצומת המגיב.

פינג

השאילתה הבסיסית ביותר היא פינג. "q" = "ping" לשאילתת פינג יש טיעון יחיד, "מזהה" הערך הוא מחרוזת של 20 בתים המכילה את מזהה הצומת של השולחים בהזמנת בייט ברשת. לתגובה המתאימה לפינג יש "מזהה" מקש יחיד המכיל את מזהה הצומת של הצומת המגיב.

טיעונים: "> תגובה:">

שאילתת פינג => bencoded = d1: AD2: ID20: ABCDEFGHIJ0123456789E1: Q4: PING1: T2: AA1: Y1: QE

תגובה => bencoded = d1: rd2: id20: mnopqrstuvwxyz123456e1: t2: aa1: y1: re

find_node

מצא את הצומת משמש למציאת פרטי הקשר עבור צומת בהינתן מזהה שלו. "q" == "find_node" לשאילתת Find_Node יש שני טיעונים, "ID" המכיל את מזהה הצומת של צומת השאילתה, ו"המטרה "המכילה את מזהה הצומת שחיפשה השאילתה. כאשר צומת מקבל שאילתת find_node, עליו להגיב עם "צמתים" מפתח וערך של מחרוזת המכילה את פרטי הצומת הקומפקטיים עבור צומת היעד או ה- K (8) הצמתים הטובים ביותר בטבלת הניתוב שלה.

טיעונים: "," יעד ":" "> תגובה:", "צמתים": "">

Quard_Node Query => bencoded = d1: AD2: ID20: ABCDEFGHIJ01234567896: TARGET20: MNOPQRSTUVWXYZ123456E1: Q9: FIND_NODE1: T2: AA1: Y1: QE

תגובה => bencoded = d1: rd2: id20: 0123456789abcdefghij5: nodes9: def456. E1: T2: AA1: Y1: Re

get_peers

קבל עמיתים הקשורים לאינפוהש סיקור. "q" = "get_peers" לשאילתת get_peers יש שני טיעונים, "ID" המכיל את מזהה הצומת של צומת השאילתה, ו- "info_hash" המכיל את האינפוחאש של הסיקור. אם לצומת השאילוי יש עמיתים לאינפוהש, הם מוחזרים ב"ערכי מפתח "כרשימת מיתרים. כל מחרוזת המכילה מידע עמיתים "קומפקטי" עבור עמית יחיד. אם לצומת השאילתה אין עמיתים לאינפוהש, מוחזר "צמתים" של מפתח המכיל את צמתים K בטבלת הניתוב של צמתים שאילתה הקרובה ביותר לאינפוהש המסופק בשאילתה. בשני המקרים מפתח "אסימון" נכלל גם בערך ההחזרה. ערך האסימון הוא טיע. ערך האסימון צריך להיות מחרוזת בינארית קצרה.

טיעונים: "," info_hash ":" "> תגובה:", "אסימון": "", "ערכים": ["", ""]> או: "," אסימון ":" "," צמתים ":" ">>

get_peers query => bencoded = d1: AD2: ID20: ABCDEFGHIJ01234567899: info_hash20: mnopqrstuvwxyz123456e1: q9: get_peers1: t2: aa1: Y1: qe

תגובה עם Peer.U6: idhtnmee1: t2: aa1: y1: re

תגובה עם הצמתים הקרובים ביותר => bencoded = d1: rd2: id20: abcdefghij01234567895: צמתים 9: def456. 5: Token8: aoeusnthe1: t2: aa1: y1: re

הכרז_הפיר

הודיעו כי העמיתים, השליטה על צומת השאילתה, מורידה סיקור ביציאה. להודיע_פיר יש ארבעה טיעונים: "ID" המכיל את מזהה הצומת של צומת השאילתה, "info_hash" המכיל את האינפוחאש של הסיקור, "יציאה" המכילה את היציאה כשלם שלם, ו"סימן "שהתקבל בתגובה לשאילתת get_peers קודמת. על הצומת השאילתי לוודא שהאסימון נשלח בעבר לאותה כתובת IP כמו צומת השאילתה. ואז הצומת השאילתי צריך לאחסן את כתובת ה- IP של צומת השאילתה ואת מספר היציאה המסופק מתחת לאינפוהש בחנות פרטי הקשר שלה עמיתים.

יש טיעון אופציונלי שנקרא implated_port איזה ערך הוא 0 או 1. אם הוא נוכח ולא אפס, נמל יש להתעלם מהטענה ויש להשתמש ביציאת המקור של מנות UDP כיציאת העמיתים במקום זאת. זה שימושי עבור עמיתים מאחורי NAT ​​שאולי לא מכיר את היציאה החיצונית שלהם, ותומכים ב- UTP, הם מקבלים חיבורים נכנסים באותה יציאה כמו יציאת DHT.

טיעונים: "," implated_port ":," info_hash ":" "," יציאה ":," אסימון ":" "> תגובה:">

הכרזת Query_peers => bencoded = d1: ad2: id20: abcdefghij012345678912: implate_porti1e9: info_hash20: mnopqrstuvwxyz1: q11

תגובה => bencoded = d1: rd2: id20: mnopqrstuvwxyz123456e1: t2: aa1: y1: re

הפניות

[1] פיטר מימונקוב, דייוויד מזיירים, "קדמלה: מערכת מידע עמיתים לעמית המבוססת על מדד ה- XOR", IPTPS 2002. http: // www.CS.אורז.EDU/ועידות/IPTPS02/109.PDF
[2] השתמש ב- SHA1 והרבה אנטרופיה כדי להבטיח תעודת זהות ייחודית.
[3] BEP_0020. מוסכמות מזהה עמיתים. (http: // www.BitTorrent.org/beps/bep_0020.html)

זכויות יוצרים

מסמך זה הוצב ברשות הרבים.

WebTorrent/bittorrent-dht

התחייבות זו אינה שייכת לשום סניף במאגר זה, והיא עשויה להשתייך למזלג מחוץ למאגר.

החלף ענפים/תגיות

תגי סניפים

לא יכול היה להעמיס ענפים

אין מה להראות

לא יכול היה לטעון תגיות

אין מה להראות

שם כבר נמצא בשימוש

תג כבר קיים עם שם הסניף שסופק. פקודות GIT רבות מקבלות שמות תגיות וגם סניפים, ולכן יצירת סניף זה עלולה לגרום להתנהגות בלתי צפויה. האם אתה בטוח שאתה רוצה ליצור את הענף הזה?

בטל צור

  • מְקוֹמִי
  • מרחבי קוד

Https github cli

השתמש ב- Git או Checkout עם SVN באמצעות כתובת האתר האינטרנט.

לעבוד מהר עם ה- CLI הרשמי שלנו. למידע נוסף על ה- CLI.

נדרשת חתימה

אנא היכנס לשימוש ב- Codespaces.

השקת שולחן העבודה של GitHub

אם שום דבר לא קורה, הורד את שולחן העבודה של Github ונסה שוב.

השקת שולחן העבודה של GitHub

אם שום דבר לא קורה, הורד את שולחן העבודה של Github ונסה שוב.

הפעלת xcode

אם שום דבר לא קורה, הורד xcode ונסה שוב.

השקת קוד Visual Studio

מרחב הקוד שלך ייפתח לאחר שתוכן.

הייתה בעיה להכין את מרחב הקוד שלך, אנא נסה שוב.

התחייבות אחרונה

3B4ED64 8 במאי 2023

... v1.0.9

סטטיסטיקות GIT

קבצים

נכשלה לטעון מידע על התחייבות אחרונה.

הודעת התחייבות אחרונה

התחייב זמן

תקרא אותי.MD

יישום DHT פשוט, חזק, Bittorrent DHT

צוֹמֶת.יישום JS של פרוטוקול ה- Bittorrent DHT. BitTorrent DHT היא שכבת גילוי העמיתים העיקרית עבור BitTorrent, המאפשרת טורנטים נטולי גשש. DHTs הם מדהימים!

מודול זה משמש על ידי WebTorrent.

  • יישום מלא של פרוטוקול DHT ב- JavaScript
  • עוקב אחר המפרט
  • תומך ב- BEP44 לאחסון נתונים שרירותיים ב- DHT
  • חזק ונבדק היטב
    • חבילת מבחן מקיפה ומלאה
    • משמש על ידי WebTorrent, Peerflix ו- Payback

    NPM התקן BitTorrent-DHT 

    NPM התקן מגנט-אורי 

    יְבוּא DHT מ 'bittorrent-dht' יְבוּא מַגנֵט מ 'מגנט-אורי' const אורי = 'מַגנֵט:?xt = urn: btih: e3811b9539cacff680e418124272177c47477157 ' const מנותח = מַגנֵט((אורי) לְנַחֵם.עֵץ((מנותח.Infohash) // 'E3811B9539CACFF680E418124272177C474777157' const DHT = חָדָשׁ DHT(() DHT.להקשיב((20000, פוּנקצִיָה (()  לְנַחֵם.עֵץ(('עכשיו תקשיב') >) DHT.עַל(('עמית', פוּנקצִיָה ((עמית, Infohash, מ)  לְנַחֵם.עֵץ(('מצא עמיתים פוטנציאליים' + עמית.מנחה + ':' + עמית.נמל + ' דרך ' + מ.כתובת + ':' + מ.נמל) >) // מצא עמיתים למידע על סיקור נתון חשיש DHT.הבט מעלה((מנותח.Infohash)

    DHT = DHT חדש ([OPTS])

    צור מופע DHT חדש.

    אם צוין OPT.

     Nodeid: '', // 160 סיביות מזהה צומת DHT (מחרוזת חיץ או משושה, ברירת מחדל: נוצר באופן אקראי) Bootstrap: [], // שרתי Bootstrap (ברירת מחדל: נתב.BitTorrent.com: 6881, נתב.utorrent.com: 6881, dht.TransmissionBt.com: 6881) מנחה: שֶׁקֶר, // מארח עמיתים מקומיים, אם צוין אז מכריזים יתווספו לטבלה המקומית (מחרוזת, מושבתת כברירת מחדל) במקביל: 16, // אפשרות K-RPC לציון בקשות UDP מקסימאליות במקביל המותרות (מספר, 16 כברירת מחדל) בְּלִיל: פוּנקצִיָה, // פונקציית hash מותאמת אישית לשימוש (פונקציה, sha1 כברירת מחדל), KRPC: KRPC((), // מופע K-RPC אופציונלי TimeBucketOutdated: 900000, // בדוק דליים כל 15 דקות Maxage: אינסוף // הגדרה אופציונלית עבור עמיתים שהוכרזו לפסק זמן >

    כדי להשתמש ב- DHT_STORE, הגדר OPS.אמת ליישום ED25519 SuperCop/Ref10. OPTS.אמת (חתימה, ערך, מקומה ציבורית) צריכה להחזיר בוליאני אם מאגרי החתימה והערכים נוצרו על ידי המפתח הציבורי .

    לדוגמה, עבור dht_store אתה יכול לעשות:

    יְבוּא עורכת מ 'ed25519-supercop' const DHT = חָדָשׁ DHT(( תאשר: עורכת.תאשר >)

    מצא עמיתים למידע הנתון hash.

    זה עושה חיפוש רקורסיבי ב- DHT. עמיתים פוטנציאליים שמתגלים נפלטים כאירועי עמיתים. עיין באירוע העמיתים למטה למידע נוסף.

    Infohash יכול להיות מחרוזת או חיץ. התקשרות חוזרת נקראת כאשר הסתיים בדיקת הרקורסיבית, והיא נקראת עם שני פרמטרים. הראשון הוא שגיאה או null. השני הוא מספר הצמתים שנמצאו עם עמיתים. בדרך כלל אינך צריך להשתמש במידע זה ויכול פשוט להאזין לאירועי עמיתים.

    מחזירה פונקציה הפלה () שתאפשר לנו להפיל את השאילתה.

    DHT.האזן ([יציאה], [כתובת], [התחזות])

    הפוך את ה- DHT להאזין ביציאה הנתונה . אם היציאה אינה מוגדרת, יציאה זמינה נבחרה אוטומטית.

    אם הכתובת אינה מוגדרת, ה- DHT ינסה להאזין בכל הכתובות.

    אם הגדרת ההחזקה היא מחוברת לאירוע ההאזנה.

    מחזיר אובייקט המכיל את פרטי הכתובת עבור שקע ההאזנה של ה- DHT. אובייקט זה מכיל נכסי כתובת, משפחה ויציאה.

    DHT.הכרז (infohash, [יציאה], [Callback])

    הודיעו כי העמיתים, השליטה על צומת השאילתה, מורידה סיקור ביציאה.

    אם תשמיט יציאה, תוגדר אפשרות היציאה המרומזת ועמיתים אחרים ישתמשו ביציאת DHT הציבורית כנמל המוכרז שלך.

    אם DHT.ההכרזה נקראת ואין שולחן ניתוב מטמון, אז DHT.תחילה יבוצע בדיקה כדי לגלות צמתים רלוונטיים ולקבל "אסימונים" תקפים מכל אחד מהם. זה ייקח זמן רב יותר.

    "אסימון" הוא ערך אטום שיש להציג עבור הצומת שיודיע כי עמיתו השולט מוריד סיקור. עליו להציג את האסימון שהתקבל מאותו צומת שאילתה בשאילתה שנערכה לאחרונה עבור עמיתים. זה כדי למנוע מארחים זדוניים להירשם למארחים אחרים לטורנטים. כל ניהול האסימון מטופל באופן פנימי על ידי מודול זה.

    התקשרות חוזרת ייקראו לאחר השלמת פעולת ההכרזה, והיא נקראת עם פרמטר יחיד שהיא שגיאה או null.

    מחזיר את המצב הנוכחי של ה- DHT, כולל צמתים DHT וערכי BEP44.

    < "צמתים": [], "ערכים": <>>

    צמתים DHT, בפרט, מועילים להתמיד ב- DHT לדיסק בין הפעלה מחדש של לקוח bittorrent (כפי שמומלץ על ידי המפרט). כל צומת במערך הוא אובייקט עם מאפייני מארח (מחרוזת) ומאפייני יציאה (מספר).

    כדי לשחזר את צמתי DHT בעת ההפעלה של אובייקט DHT חדש, פשוט לולאה מעל הצמתים במערך והוסיפו אותם בשיטת AddNode.

    const DHT1 = חָדָשׁ DHT(() // קצת זמן עובר . // להרוס את ה- DHT const צמתים = DHT1.Tojson(().צמתים DHT1.להרוס(() // קצת זמן עובר . // לאתחל DHT חדש עם אותה טבלת ניתוב כמו הראשון const DHT2 = חָדָשׁ DHT(() צמתים.לכל אחד((פוּנקצִיָה ((צוֹמֶת)  DHT2.addNode((צוֹמֶת) >)

    הוסף ידנית צומת לטבלת הניתוב של DHT. אם יש מקום בטבלת הניתוב (או שניתן לפנות צומת לא מגיב שיעשה מקום), הצומת יתווסף. אם לא, הצומת לא יתווסף. זה שימושי להתקשר כאשר חוט עמיתים שולח הודעת יציאה כדי לשתף את יציאת ה- DHT שלהם.

    צומת צריך להיראות כך:

     מנחה: NodeHost, נמל: Nodeport >

    להרוס את ה- DHT. סוגר את השקע ומנקה משאבי מבנה נתונים גדולים.

    כתוב עומס שרירותי ל- DHT. (BEP 44).

    עבור כל הבקשות, עליך לציין:

    • OPTS.V - מטען חיץ לכתיבה, פחות מ- 1000 בתים

    אם אתה מציין רק את ה- OPS.V, התוכן נחשב לבלתי ניתן לשינוי והחשיש יהיה פשוט החשיש של התוכן.

    להלן דוגמה פשוטה ליצירת תוכן בלתי ניתן לשינוי ב- DHT:

    יְבוּא DHT מ 'bittorrent-dht' const DHT = חָדָשׁ DHT(() const ערך = בַּלָם.alloc((200).למלא(('א ב ג') DHT.לָשִׂים(( v: ערך >, פוּנקצִיָה ((לִטְעוֹת, בְּלִיל)  לְנַחֵם.שְׁגִיאָה(('שגיאה =', לִטְעוֹת) לְנַחֵם.עֵץ(('hash =', בְּלִיל) >)

    עבור תוכן הניתן להשתנות, החשיש יהיה החשיש של המפתח הציבורי, מבצע.ק . אפשרויות אלה זמינות:

    • OPTS.K - ED25519 חיץ מפתח ציבורי (32 בתים) (נדרש)
    • OPTS.סימן (BUF) - פונקציה ליצירת חיץ חתימה ED25519 (64 בתים) המתאים ל- OPTS.K מפתח ציבורי (חובה)
    • OPTS.SEQ - רצף אופציונלי (מספר שלם), חייב להגדיל באופן מונוטוני (נדרש)
    • OPTS.CAS-רצף קודם לאופציונלי להשוואה ותחליף
    • OPTS.מלח - חיץ מלח אופציונלי שיכלול (

    שים לב ש- BitTorrent BEP44 משתמש ב- ED25519. אתה יכול להשתמש בחבילת ED25519-SuperCop כדי ליצור את החתימות המתאימות, Bittorrent-DHT-Store-Keypair, Bittorrent-DHT-Sodium או לגרסה נוחה יותר.

    כדי לבצע עדכון משתנה, תצטרך ליצור מפתח אליפטי ולארוז ערכים בדיוק על פי המפרט, כמו כך:

    יְבוּא עורכת מ 'bittorrent-dht-sodium' const Keypair = עורכת.keygen(() const ערך = בַּלָם.alloc((200).למלא(('מה שתגיד') // העומס שאתה רוצה לשלוח const OPTS =  ק: Keypair.PK, SEQ: 0, v: ערך, סִימָן: פוּנקצִיָה ((Buf)  לַחֲזוֹר עורכת.סִימָן((Buf, Keypair.SK) > > יְבוּא DHT מ 'bittorrent-dht' const DHT = חָדָשׁ DHT(() DHT.לָשִׂים((OPTS, פוּנקצִיָה ((לִטְעוֹת, בְּלִיל)  לְנַחֵם.שְׁגִיאָה(('שגיאה =', לִטְעוֹת) לְנַחֵם.עֵץ(('hash =', בְּלִיל) >)

    בצורות משתנות או בלתי ניתנות לשינוי, התקשרות חוזרת (שגיאה, חשיש, n) יורה עם שגיאה אם ​​אף צמתים לא הצליחו לאחסן את הערך . N מוגדר את כמות העמיתים שקיבלו את המקום והחשיש, המיקום בו ניתן לאחזר את התוכן הניתן לשינוי או בלתי ניתן לשינוי (עם DHT.קבל (hash)).

    שים לב שעליך להתקשר .לשים () כל שעה לתוכן שאתה רוצה להמשיך בחיים, מכיוון שצמתים עשויים לזרוק צמתים של נתונים מעל שעתיים.

    אם אתה מקבל זוג מפתח/ערך ואתה רוצה להוסיף מחדש ל- DHT שהוא כדי לשמור עליו בחיים אתה יכול פשוט לשים אותו שוב.

    יְבוּא עורכת מ 'bittorrent-dht-sodium' const DHT = חָדָשׁ DHT(( תאשר: עורכת.תאשר >) // עליך לציין את "אמת" param אם ברצונך לקבל תוכן הניתן להשתנות, אחרת NULL יוחזר DHT.לקבל((מַפְתֵחַ, פוּנקצִיָה ((לִטְעוֹת, מילואים)  DHT.לָשִׂים((מילואים, פוּנקצִיָה (()  // הוסף מחדש את מפתח/זוג הערך >) >)

    DHT.קבל (hash, ops, התקשרות חוזרת)

    קרא רשומת נתונים (נוצר עם .לשים ()) מה- DHT. (BEP 44)

    בהינתן hash, מחרוזת משושה או חיץ, תוכן נתוני בדיקה מה- DHT, שולח את התוצאה בהתקשרות (err, res) .

    אפשרויות אלה זמינות:

    • OPTS.אמת - עקוף את ברירת המחדל של פונקציית האימות ED25519 ברירת המחדל המסופקת במהלך הפעלת DHT.
    • OPTS.מלח - חיץ מלח אופציונלי (אם בכלל) ששימש לחישוב החשיש. יש לציין אם נכלל בחשיש.
    • OPTS.מטמון - השתמש בערך התגובה המקומי במטמון כאשר הוא זמין במקום לבצע בדיקת רשת (ברירת מחדל ל- True).

    אובייקטים של Res דומים לאובייקטים של האפשרויות שנכתבו ל- DHT עם .לשים ():

    • מילואים.V - הערך מכניס
    • מילואים.מזהה - הצומת שהחזיר את התוכן
    • מילואים.K - המפתח הציבורי (קיים רק לנתונים הניתנים להשתנות)
    • מילואים.SIG - החתימה (קיימת רק לנתונים הניתנים להשתנות)
    • מילואים.SEQ - הרצף (אופציונלי, קיים רק לנתונים הניתנים להשתנות)

    נפלט כאשר ה- DHT מושקע במלואו (אני.ה. טבלת הניתוב מאוכלסת מספיק דרך צמתי Bootstrap). שים לב שזה בסדר לעשות בדיקות לפני שריפות האירוע 'מוכנות'.

    הערה: אם אתה מאתחל את ה- DHT עם < bootstrap: false >אפשרות, אז האירוע 'מוכן' יורה על הקרציות הבא גם אם אין צמתים בטבלת הניתוב. ההנחה היא שתאכלס ידנית את טבלת הניתוב עם DHT.addNode אם אתה עובר אפשרות זו.

    נפלט כאשר ה- DHT מקשיב.

    DHT.על ('עמית', פונקציה (עמית, אינפוהש, מ) < . >)

    נפלט כאשר נמצא עמית פוטנציאלי. עמית הוא מהצורה . Infohash הוא המידע של סיקור החשיש של הנחיל שאותו שייך העמית. נפלט בתגובה לשיחת בדיקה (infohash).

    DHT.ב- ('שגיאה', פונקציה (שגיאה) < . >)

    נפלט כאשר ל- DHT יש שגיאה קטלנית.

    DHT.על ('צומת', פונקציה (צומת) < . >)

    נפלט כאשר ה- DHT מוצא צומת חדש.

    DHT.ב- ('הכרז', פונקציה (עמית, אינפוהש) < . >)

    נפלט כאשר עמית מכריז על עצמו על מנת להיות מאוחסן ב- DHT.

    DHT.על ('אזהרה', פונקציה (שגיאה) < . >)

    נפלט כאשר ה- DHT מקבל הודעה בלתי צפויה מצומת DHT אחר. זה מידע גרידא.

    • פרוטוקול DHT של BitTorrent
    • Kademlia: מערכת מידע עמיתים לעמית המבוססת על מדד ה- XOR

    MTE מסביר: כיצד פועל גילוי עמיתים של Bittorrent DHT

    גילוי עמיתים הוא חלק מהותי מפרוטוקול Bittorrent. זה&rsquo;S איך ההורדות שלה מתרחשות כל כך מהר: אתה מתחבר למספר אנשים, וכל אחד מהם מעלה לך חתיכה קטנה מהקובץ. תופעה זו יצרה דרך פופולרית מאוד להוריד ולשתף מידע באינטרנט, לגיטימי וגם לא לגיטימי. בלי קשר להשפעות שהיו לה על קניין רוחני, אני&rsquo;M כאן כדי לתאר דבר אחד: איך באמת עובד כל תהליך גילוי העמיתים של Bittorrent DHT. אולי אתה יודע קצת (או הרבה) על המנגנון הזה, אבל בטח אתה&rsquo;סקרן לדעת מה פירוש המונח DHT ואיך העמיתים המופיעים תחתיו מצאו אותך מלכתחילה.

    מה המשמעות של DHT?

    DHT הוא קצר &ldquo;טבלת חשיש מופצת,&rdquo; וזה מייצג מדיום שבאמצעותו אתה מוצא עמיתים, הידועים גם בשם &ldquo;הפעלת אתחול.&rdquo; אני&rsquo;להסביר את זה קצת. רק קחו בחשבון את העובדה שתוכלו למצוא עמיתים דרך ה- DHT.

    מיקום Bittorrent DHT

    בעוד שאנשים רבים אומרים את זה&rsquo;מבוזר, זה&rsquo;S למעשה קשה מאוד לעשות זאת, בהתחשב באופי הבלתי -אסט של האינטרנט. כשאתה מתחבר לאינטרנט, אתה לא&rsquo;לא הודיעו על נוכחותכם למיליארדי המחשבים שכבר היו מחוברים. זה פשוט יבזבז כמויות עצומות של רוחב פס. במקום זאת, ספק שירותי האינטרנט המקומי שלך&rsquo;S נתב, כמו גם היעדים שאתה מתחבר אליהם, הם היחידים המודעים לך&rsquo;אפילו מקוון. זֶה&rsquo;s מה &ldquo;unicast&rdquo; פירושו, בהדיוט&rsquo;s מונחים. Multicast הוא מה שקורה כאשר המחשב שלך נכנס לרשת מקומית. נוכחותו נודעת לכל מחשב אחר באותה רשת משנה, והם&rsquo;עכשיו מודע לנוכחותך. מכיוון שזה לא&rsquo;לא קורה באינטרנט החיצוני, שם&rsquo;אין שום דרך לחבר למעשה מבנה מבוזר לחלוטין, בהתחשב במגבלות של פרוטוקול Bittorrent עצמו.

    כתוצאה מכך, נוטה להיות שני DHTs עיקריים שאתה מתחבר אליהם כשאתה מתחיל להוריד קובץ סיקור: נתב.BitTorrent.com וכן נתב.utorrent.com. במקרה ואתה&rsquo;סקרן מחדש, אתה מתחבר אליהם בנמל 6881. זה&rsquo;זה לא הכרחי לחלוטין כדי לשנן מידע זה. לפעמים נתוני עמיתים מוטמעים בקובץ הסיקור כדי להקל על מציאת עמיתים.

    הפעלת אתחול

    Bitdht-Discovery

    כדי להתחיל לאסוף עמיתים, ראשית יש לאתחל את רצועת האתחול לרשת Torrent. הפעלת אתחול היא רק דרך מפוארת לתאר את תהליך החיבור ל- DHT ומציאת עמיתים. לאחר חיבור, שרת ה- DHT ישלח קומץ כתובות IP עמיתים שאתה&rsquo;אני גם מתחבר ל. הֵם&rsquo;אני ייתן לך את הכתובות של עמיתים המחוברים אליהם, וכן הלאה, וכן הלאה, עד שרשימת העמיתים שלך מציגה את כל העמיתים שמורידים (או זריעה) את הקובץ שאתה&rsquo;מחדש מנסה להשיג. זה&rsquo;כמו לעקוב אחר עץ מהשורשים לענפים.

    תיאורטית, אתה רק צריך כתובת עמיתים אחת אחת כדי להשיג את כל שאר העמיתים, מכיוון שהיא תשתף איתך את שאר הכתובות. זה חוסך עוקבים ו- DHT טון רוחב פס שאחרת היה מבוזבז בשליחת רשימות של עמיתים לכל עמיתים חדשים המחוברים ולהודיע ​​לכל אדם כאשר אחד מהם מתנתק. הטרחה ממוזערת על ידי הפיכת מידע ממסר עמיתים זה לזה.

    אחריך&rsquo;מצא את כל בני גילך, ההורדה שלך מתחילה!

    אם DHTs שם בחוץ, מדוע רוב האנשים עדיין משתמשים בעוקבים?

    DHT יכול להיות מהנה, אך רוב האנשים עדיין משתמשים בגששים כדי להוריד את הנתונים שלהם. זה בגלל האופי המובנה של ה- DHT. לתת&rsquo;אומר שיש לי אתר בו אני מעלה חבורה של יצירות המקור הפתוח שלי כטורנטים. כדי לשלוט באופן מלא במה שקורה לאותם טורנטים, ולהגן על פרטיותם של האנשים המורידים אותם, זה&rsquo;S יותר משתלם בשבילי לארח את הגשש שלי. אתרים המפרסמים חומר הורדה לא חוקיים משתמשים בעוקבים כאמצעי העדפה שלהם לשמור על היבט תת -קרקעי ולשלוט במה שמתפרסם עליהם ומה מוסר.

    עם זאת, לא כל הורדות סיקור אינן חוקיות. שם&rsquo;זה מאגר מאסיבי של פרויקטים של קוד פתוח ורשות הרבים עובד על ידי אנשים שרק רוצים לשתף את מה שיש להם מבלי לבזבז את רוחב הפס של מארחי האינטרנט שלהם.

    מְבוּלבָּל?

    אם אתה&rsquo;עדיין תמהה על ידי המידע המשותף כאן, השאירו תגובה למטה ואנחנו יכולים לדון!

    מיגל לייבא-גומז

    מיגל היה מומחה לצמיחה וטכנולוגיה עסקית כבר יותר מעשור וכתב תוכנה עוד יותר. מהטירה הקטנה שלו ברומניה, הוא מציג נקודות מבט קרות ואנליטיות לדברים המשפיעים על עולם הטכנולוגיה.

    הירשם לניוזלטר שלנו!

    ההדרכות האחרונות שלנו הועברו ישר לתיבת הדואר הנכנס שלך

האם Bitlocker Elt Windows 10? האם ביקסבי עולה כסף?

Related Posts

how_to_stay_safe_on_onlyfans_5

Νίσα

OnlyFans Free Pages vs Paid: How Access Differs

onlyfans_help_center

Νίσα

Budgeting Tips and PPV Across Free OnlyFans Pages

6a0b117e02549eec1a0db52c_infographic_user_growth_bar_chart-1

Νίσα

Safe Browsing Protocols for Zero-Dollar OnlyFans Pages

banner
banner

PROMO

racavedigger.com
© racavedigger.com 2026