(Tidak yakin apakah ini harus di situs pertukaran stack unix ...)
Ketika saya membuat socket saya menggunakan IPv4 dan nomor port. Jadi jika saya tahu keduanya, tapi ada router yang diatur (pada jaringan rumah; hanya belajar tentang soket, dan bereksperimen), bagaimana saya mengakses klien di LAN itu? Jadi katakanlah saya berada di seorang teman di komputer mereka, dan saya ingin terhubung ke soket di komputer di rumah saya yang ada di LAN saya, jika saya menggunakan alamat IP publik saya sebagai tuan rumah soket, bagaimana ia tahu untuk pergi ke komputer saya? Apakah saya perlu mengatur port forwarding atau sesuatu di router? (menggunakan C dan Python, jika itu penting)
Jawaban:
Ya, router perlu tahu untuk meneruskan paket yang masuk ke komputer Anda. Ini biasanya dilakukan dengan salah satu cara berikut:
sumber
Solusi "Mode Mudah" adalah mengatur ipv6 untuk semua komputer yang terlibat. Jika router / ISP tidak / tidak akan mendukungnya, Anda dapat menggunakan SixXs (atau serupa) untuk menyambungkan konektivitas ipv6 ke kotak Anda.
Kemudian, dengan menggunakan alamat ipv6, semuanya seharusnya berfungsi .
sumber
Di ujung Anda, router menggunakan NAT sehingga ia tahu port eksternal yang sesuai dengan klien internal mana.
Di ujung lain, semacam penerusan port diperlukan.
sumber
Saya berbicara di sini tentang router NAT yang merupakan mayoritas router rumah.
Jika Anda menghubungkan ke port di komputer lain, itu harus melalui router dengan baik kecuali jika router telah memblokir port itu.
Jika Anda mengharapkan komputer lain terhubung ke komputer Anda, Anda harus membuat pengaturan khusus di router untuk meneruskan port tertentu ke PC Anda.
Pilihan bahasa tidak membuat sedikit perbedaan.
sumber
Tujuan utama router adalah melakukan routing lapisan internetwork (layer 2/3) (Internet Protocol v4 dan / atau v6 dan ICMP). Soket harus dilakukan dengan layer transport (layer 3/4) dan meskipun router mungkin dapat berinteraksi dengan port (port forwarding menjadi salah satu contoh) kebanyakan tidak peduli (port firewall pada router akan menjadi contoh lain dari di mana ia akan melakukannya, tetapi itu sering dilakukan dengan kotak yang sama sekali berbeda yang disebut firewall ).
sumber