qft
QFT adalah aplikasi kecil untuk transfer file UDP Peer-To-Peer yang cepat (dan sangat andal).
Jika seorang teman mengirimmu ke sini...
...lihat bagian "Rilis" di sidebar. Anda akan melihat tautan berjudul vX.YZ Klik itu, lalu pilih file yang tepat untuk OS Anda: qft
untuk Linux, qft-mac
untuk Mac, dan qft.exe
untuk Windows. Unduh file ini, buat agar dapat dieksekusi di Linux atau Mac, lalu ikuti instruksi teman Anda tentang cara menerima file yang ingin mereka kirimkan kepada Anda.
Penggunaan:
- Temukan pembantu QFT publik (misalnya tudbut.de:4277)
- Pada PC pengirim, masukkan
qft sender <helper> <shared-phrase> <filename>
. - Pada PC penerima, masukkan
qft receiver <helper> <shared-phrase> <filename>
. - Kedua PC akan mulai mentransfer setelah beberapa saat. Jika tidak, coba lagi.
ATAU
- Di kedua PC, masukkan
qft gui
. - Pilih modus
- Pilih file untuk dikirim dan file untuk disimpan
- Perbarui frasa dan kecepatan bit yang dibagikan agar sesuai
- Klik mulai
Argumen:
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]
Apa yang dilakukan oleh para pembantu
Helper BUKAN merupakan relay untuk data, mereka hanya digunakan untuk MEMBANGUN koneksi.
Pembantu ada untuk membantu pembuatan lubang.
- P1 menghubungkan* ke pembantu
- P1 mengirimkan frase tersebut kepada helper
- P1 menunggu jawaban
- Beberapa waktu berlalu
- P2 menghubungkan* ke helper yang sama
- P2 mengirimkan frase tersebut kepada helper
- P2 mendapatkan IP dan port publik P1
- P1 mendapatkan IP dan port publik P2
- P1 dan P2 putuskan sambungan* dari helper
- P1 dan P2 memulai perulangan (sedikit disederhanakan):
- menembakkan paket satu sama lain beberapa kali
- cobalah menerima paket sebanyak-banyaknya dari yang lain
- jika tidak ada yang diterima, ulangi lagi
- jika ada yang diterima, keluar dari loop
- Koneksi antara P1 dan P2 terjalin.
*UDP adalah protokol tanpa koneksi, tidak ada jabat tangan. Kata “koneksi” di sini digunakan sebagai indikator bahwa data akan dipertukarkan antara pihak-pihak yang “terhubung”. Kata "putuskan" di sini digunakan sebagai indikator bahwa tidak ada lagi pertukaran data antara pihak-pihak yang "sebelumnya terhubung".
Membongkar beberapa mitos tentang jaringan P2P
- "P2P sejati hanya mungkin terjadi tanpa NAT" - Baik eksperimen saya maupun wikipedia ingin menjelaskan lebih lanjut tentang pelubangan. Satu-satunya masalah yang saya temukan adalah beberapa penyedia data seluler Jerman, tetapi mengirim file besar melalui data seluler jarang merupakan sesuatu yang ingin Anda lakukan - dan jika demikian, gunakan sesuatu seperti croc atau lubang cacing ajaib, yang bukan sepenuhnya P2P yang sebenarnya. .
- "Croc juga P2P, kenapa ini ada?" - Croc bukan Peer-to-Peer. Croc menggunakan server relay untuk bertukar data antara dua klien (kecuali salah satu klien memiliki pengaturan port-forward, yang hampir tidak pernah terjadi). Itu adalah Client-to-Server-to-Client, yang sebenarnya bukan Peer-to-Peer. Peer-to-Peer berarti dua klien mengirimkan data mereka secara langsung ke satu sama lain, tanpa server. “Peer membuat sebagian dari sumber daya mereka, seperti kekuatan pemrosesan, penyimpanan disk, atau bandwidth jaringan, tersedia langsung untuk peserta jaringan lainnya, tanpa memerlukan koordinasi terpusat oleh server atau host yang stabil.” -Wikipedia
Tip dan Trik
- Anda dapat menambahkan angka di akhir kedua perintah Anda (setelah nama file) untuk meningkatkan kecepatan transfer (lebih rendah = lebih cepat), namun angka yang terlalu kecil dapat menyebabkan tidak dapat diandalkan karena kondisi jaringan lokal, VPN, dll (standarnya adalah 500) . Ini akan mengubah penundaan antara paket yang dikirim.
- Anda juga dapat menambahkan nomor setelah itu . Ini akan mengubah ukuran paket, dan angka yang lebih tinggi di sini memiliki efek yang sama dengan angka yang lebih rendah pada argumen sebelumnya.
- Anda dapat menjalankan helper sendiri, seperti yang disarankan oleh argumen mode "helper". Helper ini sebaiknya dijalankan di server yang dapat dijangkau dari seluruh web (VPS murah pasti bisa).
- Helper tidak harus dijalankan di server publik, mereka juga bekerja di LAN, namun dengan begitu, hanya komputer di LAN yang sama yang dapat menggunakannya.
- Anda dapat mengizinkan streaming (misalnya saat Anda ingin melakukan transmisi dari /dev/stdin) dengan mengatur variabel lingkungan
QFT_STREAM
. - Untuk menggunakan alias qfts dan qftr di linux atau mac, jalankan (ganti
(shell)
dengan nama shell Anda, biasanya bash atau zsh):
echo ' alias qftr="qft receiver tudbut.de:4277" ' >> ~ /.(shell)rc
echo ' alias qfts="qft sender tudbut.de:4277" ' >> ~ /.(shell)rc
source ~ /.(shell)rc
Hal keren
- File ditransfer melalui UDP, tetapi qft memiliki langkah keandalan tambahan untuk menghindari file rusak.
- Koneksi internet tidak dapat diandalkan? Tidak masalah! QFT hanya akan menghentikan sementara transmisi hingga koneksi kembali! Tidak berhasil? Lihat bagian "Melanjutkan transfer yang dihentikan sepenuhnya"!
- Tahukah Anda bahwa Anda dapat melakukan hibernasi atau menangguhkan komputer saat sedang mentransfer dan komputer akan terus melanjutkannya, meskipun hanya satu sisi yang ditangguhkan? (Kecuali jika router Anda memblokir port tersebut, baca bagian "Melanjutkan transfer yang dihentikan sepenuhnya" dalam hal ini)
- QFT dapat menahan beban berat
cuaca kondisi jaringan: ping 1000 ms sama cepatnya dengan ping 10 ms, tingkat kehilangan paket/pengurutan ulang lebih dari 10% dapat ditoleransi (tetapi dapat memperlambat kecepatan, terutama ketika ping tinggi). - Itu ditulis dalam 100% Rust murni .
Lanjutkan transfer yang dihentikan sepenuhnya
Kemungkinan besar Anda tidak memerlukan ini kecuali transfer benar-benar terhenti karena jeda yang SANGAT lama atau komputer dihidupkan ulang, namun jika Anda memerlukannya:
Hentikan qft di kedua ujungnya dan mulai lagi dengan parameter [lewati] di tempatnya (jika Anda tidak menentukan bitrate sebelumnya, defaultnya adalah 256). Ini akan melewati byte tersebut dan melanjutkan ke tempat yang Anda tentukan.
Pemecahan masalah
Dikatakan Connecting...
tetapi tidak terhubung
Salah satu ujung Anda tidak terhubung dengan benar ke helper. Hentikan transfer pada kedua ujungnya dan coba lagi.
Buaya
Banyak orang yang menyebutkan bagaimana ini seperti buaya. Hal ini tidak terjadi, karena croc menggunakan relay yang mengirimkan semua data Anda. Ini merupakan hambatan dan juga berarti admin relai bertanggung jawab atas konten yang dikirimkan. Relai juga mem-buffer banyak data, artinya RAM-nya mungkin terisi jika koneksi pengirim jauh lebih cepat daripada koneksi penerima. Croc yang diberi tag "peer-to-peer" sangat menyesatkan karena jarang menggunakan kemampuan P2P (membutuhkan port-forward untuk melakukan P2P, yang jarang dilakukan). Baca bagian sebelumnya tentang mitos P2P jika menurut Anda Croc selalu bersifat peer-to-peer.
XKCD yang relevan
Pertanyaan Umum
Apa itu penolong?
Seperti yang sudah dijelaskan di atas, ini digunakan untuk menjalin hubungan antara kedua pasangan.
Mengapa seorang penolong dibutuhkan?
Router Anda menggunakan sesuatu yang disebut N etwork A ddress T translation. Hal ini diperlukan karena jika tidak, akan ada terlalu banyak alamat IP yang digunakan dan internet akan berhenti berfungsi selama jam sibuk. Namun NAT ini juga menjadi masalah, karena merupakan lapisan antara PC Anda dan internet terbuka. Ketika ada koneksi masuk baru, NAT tidak akan mengetahui PC mana di LAN Anda yang akan meneruskan koneksi tersebut, sehingga koneksi ditolak begitu saja. Oleh karena itu, setiap perangkat lunak Peer-to-Peer memerlukan server pembantu (juga disebut server "STUN") yang mana kedua rekan akan meminta alamat IP dan port yang lain. Kedua rekan kemudian dapat mengirim banyak koneksi keluar satu sama lain. Jika semuanya berjalan dengan baik, kedua rekan telah mengirimkan koneksi keluar pada waktu yang tepat, menyebabkan kedua NAT berpikir bahwa mereka adalah koneksi keluar, padahal sebenarnya, mereka adalah semacam kombinasi koneksi masuk dan keluar.
TL;DR: Jaringan P2P tidak mungkin dilakukan tanpa server pembantu, karena Router. Sebaliknya, penerusan port akan diperlukan, yang mungkin sulit diatur.
Bagaimana cara membuat pembantu publik/pribadi?
Baca poin ke-2 di bagian Tips 'n Trik.