Dari apa yang saya mengerti, tidak ada cara untuk mengirim paket ke komputer di jaringan lokal dari luar jaringan, kecuali kita tahu mekanisme routing yang digunakan oleh router.
Dengan asumsi kita memiliki set-up yang terlihat seperti ini:
Computer-A, IP 192.168.1.2 (gateway default 192.168.1.1)
Computer-B, IP 192.168.1.3 (gateway default 192.168.1.1)
Router-C, IP 192.168.1.1 (IP eksternal 1.1.1.1)
Router-D (IP eksternal 2.2.2.2)
Komputer-A, Komputer-B, dan Router-C milik jaringan lokal yang sama. Router-D ingin mengirim data ke Komputer-A, tetapi tidak dapat melakukan ini tanpa melalui Router-C.
Sekarang Router-C akan meneruskan paket ke Computer-A jika port tujuan adalah 1000, dan akan meneruskan paket ke Computer-B jika port tujuan adalah 2000. Namun yang pasti, satu-satunya perangkat yang mengetahui mekanisme routing ini adalah Router-C itu sendiri! Bahkan Komputer-A maupun Komputer-B tidak akan mengetahuinya, kan?
Jadi Router-D dapat mengirim paket ke Komputer-A jika ia mengirim paket ke Router-C melalui port 1000, tetapi bagaimana Router-D tahu untuk mengirim paket melalui port 1000, dan tidak mengatakan port 1001?
Bagaimana program peer-to-peer seperti Bittorrent dapat mengatasi masalah ini? Satu-satunya solusi yang dapat saya pikirkan adalah untuk Router-D mengirim paket ke Router-C melalui semua port, sehingga diteruskan ke Computer-A, tetapi apakah ada solusi yang lebih baik?
sumber
Pertanyaan Anda menyentuh inti Internet dan definisi perutean. Dalam contoh Anda, Router D mengirim data ke Komputer A berdasarkan pada dua premis:
Skenario Anda tampaknya menganggap opsi pertama - Router D ingin mengirim ke Komputer A. Tapi bagaimana cara sampai di sana? Itu melakukannya melalui penggunaan tabel routing yang dibagi oleh router antara satu sama lain.
Router C secara teratur mengirimkan pembaruan ke semua router yang tahu tentang - termasuk Router D - bahwa ia "mengetahui" 192.168. * "Jaringan (pada kenyataannya - ini tidak akan terjadi karena jaringan itu tidak dialihkan - itu dianggap pribadi. Tetapi abaikan itu.) Jadi, Router D sudah tahu bahwa Router C tahu jaringan itu.
Jadi, ketika data diperuntukkan untuk Komputer A, itu ditangani oleh jaringan terlebih dahulu. Jadi, Router D bertanya, "Saya perlu menemukan jaringan 192.168. *. Apakah saya mengetahuinya? Tidak. Apakah saya mengenal orang lain yang melakukannya? Ya. Router C tidak. Bagaimana saya bisa sampai ke router C? Melalui 2.2 saya. 2.2 antarmuka. "
Router D kemudian mengirimkan data ke Router C. Router C mendapatkannya dan berkata, "Oh, saya punya data dari Router D tapi itu untuk jaringan 192.168. Apakah saya tahu jaringan itu? Ya, melalui jaringan 192.168.1.1 saya" Dan kemudian ke depan itu.
Ada beberapa pekerjaan lain yang harus dilakukan untuk menyelesaikan pengalamatan IP dan MAC, tapi saya membahas perutean, per se, bukan ARP dan jaringan lokal.
Anda akan melihat asumsi pertama Anda - router jarak jauh harus tahu mekanisme perutean - tidak ikut bermain di sini. Router D tidak peduli jika Router C menggunakan EIGRP, RIP, RIPv2, OSPF, atau apa pun. Yang penting hanyalah mendapat pembaruan. (Tentu saja, cara mendapatkan pembaruan penting untuk memastikan keduanya tetap selaras. Tapi sekali lagi, itu masalah yang berbeda.)
Asumsi kedua Anda - bahwa nomor port merupakan faktor dalam perutean - juga salah. Router (umumnya) tidak memerlukan informasi port untuk membuat keputusan routing. (Itu telah sedikit berubah, karena beberapa teknologi jaringan baru dan berlaku terutama untuk firewall dan proksi, tetapi masih asumsi yang lebih luas masih berlaku untuk router "benar".)
Melanjutkan dengan contoh Anda, Router C akan meneruskan data pada port 1000 (per skenario Anda) karena mungkin ada layanan di Komputer A mengharapkan data pada port tertentu. Tetapi hanya tahu yang harus dilakukan karena Router D mengirimnya ke port 1000. Dan router D hanya mengirimkannya ke port itu karena pencetus data mengirimnya ke Router D di port itu.
Saya tidak mengerti bahwa Anda memasukkan bittorrent atau program P2P sebagai cerminan dari pertanyaan yang Anda ajukan. Penjelasan yang sama akan berlaku. Router juga dapat dikonfigurasi dengan port trigger yang menghubungkan perangkat tertentu (atau IP) dengan port tertentu. Sehingga ketika lalu lintas datang di port 1234, router tahu untuk mengirim data ke Device ABCD. Ini biasanya terkait dengan port TCP keluar. yaitu Jika saya mengirim lalu lintas di port 7890, router tahu lalu lintas masuk akan di port 1234 dan mengirimkannya kepada saya.
Tetapi pemicu port tidak terkait dengan keputusan routing (jarak jauh) - sebaliknya hal itu berkaitan dengan tabel MAC / IP internal yang digunakan router untuk LAN.
Perbarui / edit : Untuk menjawab dan menguraikan lebih lanjut setelah komentar Anda. Router D tahu Komputer A hanya dengan alamat IP-nya (192.168.2.2). Tapi Router C tahu Komputer A dengan alamat IP dan alamat MAC-nya. MAC (Kontrol Akses Media) adalah pengidentifikasi 48-bit unik (biasanya ...) yang ditentukan oleh standar internasional. Setiap perangkat yang terhubung ke LAN (berkabel dan nirkabel) seharusnya memiliki alamat MAC yang unik.
Router (Router C) mengaitkan alamat IP dan alamat MAC bersama-sama dalam sebuah tabel (tabel alamat MAC). Jadi ketika lalu lintas masuk ke Router C, dan router menyadari "lokal" -nya, itu melakukan pencarian tabel alamat MAC. Router kemudian benar-benar mengubah informasi pengalamatan frame.
Itu merekonstruksi (menulis ulang) informasi tujuan Layer 2 untuk memiliki alamat MAC tujuan dari Komputer A tetapi menjaga informasi alamat IP (Layer 3) tetap sama.
Jika rute TIDAK tahu alamat MAC. Atau tidak memiliki hubungan IP-MAC di tabelnya, ia melakukan sesuatu yang disebut ARP (address resolution protocol) untuk bertanya "HEY, semua orang di jaringan ini. Apakah Anda memiliki alamat MAC ini?" Atau kadang-kadang - "Semua orang, Apa alamat MAC Anda?"). Perangkat / perangkat yang sesuai merespons dan router membuat tabel IP-MAC-nya.
sumber
Port Triggering. Bagaimana server web mengirim halaman web kepada Anda setelah Anda memintanya? Karena Anda sudah memintanya. Saat Anda memintanya, router tahu untuk mengharapkan balasan dan ketika mendapatkannya, meneruskannya ke PC yang sesuai. Beberapa program ditulis untuk memicu pembukaan untuk mengantisipasi sinyal dari PC tertentu, bahkan jika seseorang tidak benar-benar dalam perjalanan.
Beberapa model memiliki server pusat yang digunakan untuk komunikasi dasar. Sebagai contoh:
Server sekarang tahu semua file yang dimiliki Client1 dan Client2.
Client1 hanya membodohi router untuk membuka port itu untuk Client2.
Dalam beberapa kasus, seperti BitTorrent atau Napster asli (iirc), Anda harus meneruskan porta pada router Anda agar dapat bekerja secara optimal.
Sejauh klien lain mengetahui port mana yang akan disambungkan pada awalnya, itu karena klien Anda memberi tahu swarm atau server port mana yang Anda gunakan. BitTorrent sering menggunakan pelacak dan yang melacak port mana yang digunakan oleh klien mana.
sumber