qft
QFT هو تطبيق صغير لنقل ملفات UDP السريع (والموثوق به حقًا) من نظير إلى نظير.
إذا أرسلك صديق إلى هنا...
...انظر إلى قسم "الإصدارات" على الشريط الجانبي. من المفترض أن ترى رابطًا بعنوان vX.YZ انقر فوقه، ثم اختر الملف المناسب لنظام التشغيل لديك: qft
لنظام التشغيل Linux، qft-mac
لنظام التشغيل Mac، و qft.exe
لنظام التشغيل Windows. قم بتنزيل هذا الملف، واجعله قابلاً للتنفيذ في حالة Linux أو Mac، ثم اتبع تعليمات صديقك حول كيفية استلام الملف الذي أراد إرساله إليك.
الاستخدام:
- ابحث عن مساعد QFT عام (على سبيل المثال tudbut.de:4277)
- على جهاز الكمبيوتر المرسل، أدخل
qft sender <helper> <shared-phrase> <filename>
. - على جهاز الكمبيوتر المتلقي، أدخل
qft receiver <helper> <shared-phrase> <filename>
. - يجب أن يبدأ كلا الجهازين في النقل بعد فترة قصيرة. إذا لم يفعلوا ذلك، حاول مرة أخرى.
أو
- على كلا الجهازين، أدخل
qft gui
. - حدد الوضع
- حدد ملفًا لإرساله وملفًا للحفظ فيه
- قم بتحديث العبارات المشتركة ومعدل البت للمطابقة
- انقر فوق ابدأ
الحجج:
qft helper <bind-port>
qft sender <helper-address>:<helper-port> <phrase> <filename> [send-delay] [bitrate] [skip]
qft receiver <helper-address>:<helper-port> <phrase> <filename> [bitrate] [skip]
ماذا يفعل المساعدون
المساعدون ليسوا مرحلات للبيانات، بل يتم استخدامهم فقط لتأسيس الاتصال.
المساعدون موجودون للمساعدة في ثقب الثقوب.
- يتصل P1* بالمساعد
- يرسل P1 العبارة إلى المساعد
- P1 ينتظر الرد
- يمر بعض الوقت
- يتصل P2* بنفس المساعد
- يرسل P2 العبارة إلى المساعد
- يحصل P2 على عنوان IP العام والمنفذ الخاص بـ P1
- يحصل P1 على عنوان IP العام والمنفذ الخاص بـ P2
- يتم قطع اتصال P1 وP2* عن المساعد
- يبدأ P1 وP2 حلقة (مبسطة قليلاً):
- إطلاق حزمة على بعضها البعض عدة مرات
- حاول تلقي أكبر عدد ممكن من الحزم من الآخر
- إذا لم يتم تلقي أي شيء، قم بالتكرار مرة أخرى
- إذا تم تلقي واحد، الخروج من الحلقة
- تم إنشاء الاتصال بين P1 وP2.
*UDP هو بروتوكول بدون اتصال، ولا توجد مصافحة. وتستخدم كلمة "اتصال" هنا كمؤشر على أنه سيتم تبادل البيانات بين الأطراف "المتصلة". يتم استخدام كلمة "قطع الاتصال" هنا كمؤشر على أنه لن يتم تبادل المزيد من البيانات بين الأطراف "المتصلة سابقًا".
فضح بعض الخرافات حول شبكات P2P
- "P2P الحقيقي ممكن فقط بدون NAT" - ترغب كل من تجربتي وموقع ويكيبيديا في الحصول على كلمة حول ثقب الثقب. المشكلة الوحيدة التي وجدتها هي بعض موفري بيانات الهاتف المحمول الألمان، ولكن إرسال ملفات كبيرة عبر بيانات الهاتف المحمول نادرًا ما يكون أمرًا تريد القيام به - وإذا كان الأمر كذلك، فاستخدم شيئًا مثل croc أو الثقب السحري، وهي ليست حقيقية تمامًا في مجال P2P .
- "Croc هو P2P أيضًا، لماذا يوجد هذا؟" - كروك ليس نظير إلى نظير. يستخدم Croc خادم ترحيل لتبادل البيانات بين العميلين (ما لم يكن لدى أحد العميلين إعداد منفذ للأمام، وهو ما لا يحدث أبدًا). هذا هو عميل إلى خادم إلى عميل، وهو ليس في الحقيقة نظير إلى نظير. نظير إلى نظير يعني أن عميلين يرسلان بياناتهما مباشرة إلى بعضهما البعض، بدون خادم. "يجعل الأقران جزءًا من مواردهم، مثل طاقة المعالجة أو تخزين القرص أو النطاق الترددي للشبكة، متاحًا مباشرة للمشاركين الآخرين في الشبكة، دون الحاجة إلى التنسيق المركزي بواسطة الخوادم أو المضيفين المستقرين." - ويكيبيديا
نصائح وحيل
- يمكنك إضافة رقم إلى نهاية كلا الأمرين (بعد اسم الملف) لتعزيز سرعات النقل (أقل = أسرع)، ولكن الرقم الصغير جدًا قد يسبب عدم الموثوقية بسبب ظروف الشبكة المحلية، والشبكات الافتراضية الخاصة (VPN)، وما إلى ذلك (الافتراضي هو 500) . سيؤدي هذا إلى تعديل التأخير بين الحزم المرسلة.
- ويمكنك أيضًا إضافة رقم بعد ذلك . سيعدل حجم الحزمة، والرقم الأعلى هنا له تأثيرات مشابهة للرقم الأقل في الوسيطة السابقة.
- يمكنك تشغيل المساعد بنفسك، كما تقترح وسيطة وضع "المساعد". يجب ببساطة تشغيل هذا المساعد على خادم يمكن الوصول إليه من جميع أنحاء الويب (سوف يقوم VPS الرخيص بذلك بالتأكيد).
- ليس من الضروري تشغيل المساعدين على خادم عام، فهم يعملون في شبكة LAN أيضًا، ولكن بهذه الطريقة، لن تتمكن سوى أجهزة الكمبيوتر الموجودة في نفس الشبكة المحلية من استخدامها.
- يمكنك السماح بالبث (على سبيل المثال عندما تريد الإرسال من /dev/stdin) عن طريق تعيين المتغير البيئي
QFT_STREAM
. - لاستخدام الأسماء المستعارة qfts و qftr على Linux أو mac، قم بتشغيل (استبدال
(shell)
باسم الصدفة الخاص بك، عادةً bash أو zsh):
echo ' alias qftr="qft receiver tudbut.de:4277" ' >> ~ /.(shell)rc
echo ' alias qfts="qft sender tudbut.de:4277" ' >> ~ /.(shell)rc
source ~ /.(shell)rc
أشياء رائعة
- يتم نقل الملفات عبر UDP، ولكن لدى qft إجراءات موثوقية إضافية مطبقة لتجنب الملفات المعطلة.
- اتصال إنترنت غير موثوق؟ لا مشكلة! سيقوم QFT ببساطة بإيقاف الإرسال مؤقتًا حتى يعود الاتصال! لا يعمل؟ راجع قسم "استئناف النقل المتوقف بالكامل"!
- هل تعلم أنه يمكنك إسبات جهاز الكمبيوتر الخاص بك أو تعليقه أثناء النقل وسيستمر من حيث بقي، حتى عندما يتم تعليق جانب واحد فقط؟ (ما لم يقم جهاز التوجيه الخاص بك بحظر المنفذ، اقرأ قسم "استئناف النقل المتوقف بالكامل" في هذه الحالة)
- يمكن لـ QFT أن يتحمل الثقل
طقس ظروف الشبكة: 1000 مللي ثانية من اختبار الاتصال بنفس سرعة 10 مللي ثانية من اختبار الاتصال، ويتم التسامح مع معدلات فقدان/إعادة ترتيب الحزم التي تزيد عن 10% (ولكن يمكن أن تؤدي إلى إبطاء السرعة، خاصة عندما يكون اختبار الاتصال مرتفعًا). - إنه مكتوب بنسبة 100% من الصدأ النقي .
استئناف عملية النقل المتوقفة بالكامل
على الأرجح لن تحتاج إلى هذا إلا إذا توقف النقل تمامًا بسبب توقف مؤقت طويل جدًا أو إعادة تشغيل الكمبيوتر، ولكن إذا قمت بذلك:
أوقف qft على كلا الطرفين وابدأ تشغيله مرة أخرى باستخدام المعلمة [skip] في مكانها (إذا لم تحدد معدل البت من قبل، فالمعدل الافتراضي هو 256). سوف يتخطى تلك البايتات ويستمر في المكان الذي حددته.
استكشاف الأخطاء وإصلاحها
تقول Connecting...
ولكن لا تتصل
أحد أطرافك لم يتصل بشكل صحيح بالمساعد. أوقف النقل من كلا الطرفين وحاول مرة أخرى.
تمساح
لقد ذكر الكثير من الناس كيف يشبه هذا التمساح. ليس كذلك، لأن croc يستخدم مرحلًا يتم من خلاله إرسال جميع بياناتك. يعد هذا عنق الزجاجة ويعني أيضًا أن مسؤولي الترحيل مسؤولون عن المحتوى الذي يتم إرساله. يقوم المرحل أيضًا بتخزين الكثير من البيانات مؤقتًا، مما يعني أن ذاكرة الوصول العشوائي (RAM) الخاصة به قد تمتلئ إذا كان اتصال المرسل أسرع بكثير من اتصال المتلقي. يعد تصنيف Croc على أنه "نظير إلى نظير" أمرًا مضللًا في أحسن الأحوال لأنه نادرًا ما يستخدم إمكانات P2P (يتطلب منفذًا للأمام للقيام بتقنية P2P، وهو أمر نادرًا ما يتم القيام به). اقرأ القسم السابق حول أساطير P2P إذا كنت تعتقد أن Croc هو دائمًا نظير إلى نظير.
XKCD ذات الصلة
التعليمات
ما هو المساعد؟
كما هو موضح أعلاه، يتم استخدامه لتأسيس الاتصال بين الشريكين.
لماذا هناك حاجة إلى مساعد؟
يستخدم جهاز التوجيه الخاص بك شيئًا يسمى N etwork A ddress T ranslation. إنه مطلوب لأنه بخلاف ذلك، سيكون هناك عدد كبير جدًا من عناوين IP قيد الاستخدام وسيتوقف الإنترنت عن العمل خلال أوقات الانشغال. ومع ذلك، يمثل NAT مشكلة أيضًا، لأنه عبارة عن طبقة بين جهاز الكمبيوتر الخاص بك والإنترنت المفتوح. عندما يكون هناك اتصال وارد جديد، لن يعرف NAT جهاز الكمبيوتر الموجود في شبكة LAN الخاصة بك لإعادة توجيه الاتصال إليه، لذلك يتم رفض الاتصال ببساطة. وبالتالي فإن أي برنامج نظير إلى نظير يحتاج إلى خادم مساعد (يُسمى أيضًا خادم "STUN") والذي سيطلب منه كلا النظيرين عنوان IP والمنفذ الخاص بالآخر. يمكن لكلا النظيرين بعد ذلك إرسال مجموعة من الاتصالات الصادرة لبعضهما البعض. إذا سارت الأمور على ما يرام، فإن كلا النظيرين قد أرسلا رسالة صادرة في التوقيت المناسب، مما يجعل كل من NAT يعتقد أنهما اتصالات صادرة، في حين أنهما في الواقع عبارة عن مزيج من الاتصالات الواردة والصادرة.
TL;DR: شبكة P2P مستحيلة بدون خادم مساعد، بسبب أجهزة التوجيه. ستكون إعادة توجيه المنفذ مطلوبة بخلاف ذلك، الأمر الذي قد يكون من الصعب إعداده.
كيفية جعل المساعد العام / الخاص؟
اقرأ النقطة الثانية في قسم النصائح والحيل.