Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4.67/5 - 3 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Uzak Bir Bilgisayar İçin Port Ekleme?
#1
Question 
Herkese iyi forumlar,



Genelde port açma işlemi olarak UPnP tekniğini kullanırdım. Ama bu tekniğin her modem türü ile uyuşuk olmaması bazı bilgisayarlarda problem yaşatıyor. Hole Punching yöntemi adında bir teknik söylenmişti bana (@Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol). Hole Punching için araştırma yapıp deneme yapmama rağmen bir türlü aklım basmadı. Bu konu hakkında bilgisi olan arkadaşlardan yardım istiyorum.



Teşekkürler,
İyi çalışmalar.
Cevapla
#2
Merhaba,

Şu linkte teorik bilgi veriliyor ( Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol )

Şurada almanlar kendi aralarında bunu münazara etmişler ( Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol )

ve şöyle bir kaynak kod ortaya çıkmış, başlangıç için yeterli bir örnek olduğundan bahsetmişler;

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Deneme imkanım olmadığı için çalışıp çalışmadığı konusunda bir fikrim yok, siz deneyip buradan sonuçları bizimle paylaşır mısınız.
Cevapla
#3
Çok fazla bilgi sahibi değilim ama en azından bildiklerimi paylaşayım, belki işinize yarar. Ayrıca konu hakkında bilgisi olanlar varsa ben de dört gözle cevap bekliyorum. Çünkü  merak ettiğim bir konu.

Hole Punching yöntemi kabaca şöyle; İki farklı uygulama bir biri ile iletişim kurmak istiyor ama bunlardan birisi yada her ikisi modemin(daha doğrusu Linkleri Görebilmeniz İçin Giriş yap veya Üye Olkullanan bir cihazın) arkasında olduğunda direk olarak iletişim kuramıyorlar. Çünkü her ikisinin de direk olarak bağlantı kurulabilecek IP adresleri ve portları belli değildir. (Her iki uçtaki modemin dış/gerçek IPsi bilinse bile bu bağlantı kurmak için yeterli değildir). Böyle bir durumda her 2 uç noktadaki yazılımlar ortak bir sunucuyla bağlantı kurarlar. Sunucu ile bağlantı kurulduğu anda istemci uçların IP adresleri ve bağlantı için kullandıkları portları bilinmiş olur. Yani aslında modemler üzerinde bizim için birer kapı açılmış olur. Sunucu bu bilgileri her 2 uç nokta ile paylaştıktan sonra artık bu 2 nokta bir biri ile bağlantı kurmak için tüm bilgilere sahip olmuş olur. Bundan sonra sunucuya ihtiyaç kalmaz. 

Genelde VoIP uygulamaları, P2P uygulamaları  bu şekilde çalışır. Skype da bu yöntemi kullanıyordu benim araştırma yaptığım zamanlarda. Son durumu bilmiyorum.
There's no place like 127.0.0.1
WWW
Cevapla
#4
(26-10-2017, Saat: 00:01)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Şu linkte teorik bilgi veriliyor ( Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol )

Şurada almanlar kendi aralarında bunu münazara etmişler ( Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol )

ve şöyle bir kaynak kod ortaya çıkmış, başlangıç için yeterli bir örnek olduğundan bahsetmişler;

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Deneme imkanım olmadığı için çalışıp çalışmadığı konusunda bir fikrim yok, siz deneyip buradan sonuçları bizimle paylaşır mısınız.

 Çok teşekkürler hocam, en kısa süre içerisinde deneyip sonucu bildireceğim.

(26-10-2017, Saat: 00:02)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÇok fazla bilgi sahibi değilim ama en azından bildiklerimi paylaşayım, belki işinize yarar. Ayrıca konu hakkında bilgisi olanlar varsa ben de dört gözle cevap bekliyorum. Çünkü  merak ettiğim bir konu.

Hole Punching yöntemi kabaca şöyle; İki farklı uygulama bir biri ile iletişim kurmak istiyor ama bunlardan birisi yada her ikisi modemin(daha doğrusu Linkleri Görebilmeniz İçin Giriş yap veya Üye Olkullanan bir cihazın) arkasında olduğunda direk olarak iletişim kuramıyorlar. Çünkü her ikisinin de direk olarak bağlantı kurulabilecek IP adresleri ve portları belli değildir. (Her iki uçtaki modemin dış/gerçek IPsi bilinse bile bu bağlantı kurmak için yeterli değildir). Böyle bir durumda her 2 uç noktadaki yazılımlar ortak bir sunucuyla bağlantı kurarlar. Sunucu ile bağlantı kurulduğu anda istemci uçların IP adresleri ve bağlantı için kullandıkları portları bilinmiş olur. Yani aslında modemler üzerinde bizim için birer kapı açılmış olur. Sunucu bu bilgileri her 2 uç nokta ile paylaştıktan sonra artık bu 2 nokta bir biri ile bağlantı kurmak için tüm bilgilere sahip olmuş olur. Bundan sonra sunucuya ihtiyaç kalmaz. 

Genelde VoIP uygulamaları, P2P uygulamaları  bu şekilde çalışır. Skype da bu yöntemi kullanıyordu benim araştırma yaptığım zamanlarda. Son durumu bilmiyorum.
 Değerli bilgileriniz için teşekkürler hocam, bu konuyu bir halledersem artık ölsem de gam yemem  Big Grin
Cevapla
#5
(26-10-2017, Saat: 00:02)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÇok fazla bilgi sahibi değilim ama en azından bildiklerimi paylaşayım, belki işinize yarar. Ayrıca konu hakkında bilgisi olanlar varsa ben de dört gözle cevap bekliyorum. Çünkü  merak ettiğim bir konu.

Hole Punching yöntemi kabaca şöyle; İki farklı uygulama bir biri ile iletişim kurmak istiyor ama bunlardan birisi yada her ikisi modemin(daha doğrusu Linkleri Görebilmeniz İçin Giriş yap veya Üye Olkullanan bir cihazın) arkasında olduğunda direk olarak iletişim kuramıyorlar. Çünkü her ikisinin de direk olarak bağlantı kurulabilecek IP adresleri ve portları belli değildir. (Her iki uçtaki modemin dış/gerçek IPsi bilinse bile bu bağlantı kurmak için yeterli değildir). Böyle bir durumda her 2 uç noktadaki yazılımlar ortak bir sunucuyla bağlantı kurarlar. Sunucu ile bağlantı kurulduğu anda istemci uçların IP adresleri ve bağlantı için kullandıkları portları bilinmiş olur. Yani aslında modemler üzerinde bizim için birer kapı açılmış olur. Sunucu bu bilgileri her 2 uç nokta ile paylaştıktan sonra artık bu 2 nokta bir biri ile bağlantı kurmak için tüm bilgilere sahip olmuş olur. Bundan sonra sunucuya ihtiyaç kalmaz. 

Genelde VoIP uygulamaları, P2P uygulamaları  bu şekilde çalışır. Skype da bu yöntemi kullanıyordu benim araştırma yaptığım zamanlarda. Son durumu bilmiyorum.
O zaman olay basit gibi kalıyor, standart bir TCP server yazılacak. Programın çalıştığı her CLIENT de birer TCP Client yazılımı olacak, servera bağlanıp ben buyum, id'im bu diyecek. Herhangi bir Client, ben şu id'li Client'e bağlanmak istiyorum dediğinde Server ikisi arasında bilgi alışverişini yönetecek. 

acaba doğrumu anladım ?
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#6
Maalesef o kadar basit değil Sad
Sizin bahsettiğiniz şekilde tüm trafik sunucu üzerinden akar. Bunu da normal şartlarda kimse istemez. Düşünsenize Skype'ta yaptığınız tüm video görüşmeleri Skype'ın sunucuları üzerinden gidecek! İdeali; sunucu her iki tarafı bir biri ile tanıştırıp aradan çekilmeli.

TCP ile yapmaya kalkarsanız iş daha zor. UDP ile başlamak en mantıklısı. UDP, "connectionless" bir protokol olduğu için TCP'ye göre hole puncing yöntemini uygulamak çok daha kolay.
Şöyle ki; A noktası sunucu ile bağlantı kurdu. Artık A'nın bağlantı bilgileri elimizde var. Aynı şekilde B noktası da sunucu ile bağlantı kurdu. Daha sonra A noktası sunucuya "ben B ile bağlantı kurmak istiyorum" diyor. Sunucu B'ye istek gönderiyor. B onaylarsa, B'nin bilgilerini A'ya veriyor. Artık A, B ile bağlantı kurabilir. BURADA ÖNEMLİ OLAN NOKTA; B zaten sunucu ile bağlantı kurduğu için açık bir kapısı var. Ve UDP protokolü kullandığı için o açık kapıdan A giriş yapabilir. 

TCP uçtan uca bir bağlantı sağlar. B noktası, sunucu ile TCP üzerinden bağlantı kurmuş olsaydı, A'nın bu açık kapıyı kullanması(normal şartlarda) mümkün değildi. Ama UDP'de durum farklı. UDP karşı tarafın varlığından "haberdar değil" diyebiliriz. Bu sebeple karşı taraf A noktası yada sunucu olabilir.

Biraz karışık oldu sanırım kusura bakmayın. Ben de deneyip, uygulamasını yapmadım ama araştırıp anlayabildiklerim bunlar oldu.
There's no place like 127.0.0.1
WWW
Cevapla
#7
Tekrardan merhabalar,

@uparlayan hocanın vermiş olduğu uygulamayı denedim, localden tracker.exe'yi açtıktan sonra p2p.exe'yi açınca tracker.exe'de bağlandı bilgisi geldi, buraya kadar problem yok dedim. Dosyayı server'a atınca deneyince hiçbir tepki ile karşılaşmadım. İşaretlemiş olduğum portu online bir site aracılığı ile kontrol ettirince de kapalı olduğu gözlemledim.

Sonuç olarak;
Ya benim kullanım tarzımda sorun var veya oluşturulan program sadece local için yapılmış. Umarım bu sorunu sizin yardımınız ile çözmeyi başarabilirim.


Saygılarımla,
İyi çalışmalar.
Cevapla
#8
Merhaba,
Sorunun çözümüne ulaşma adına yapmak istediğiniz proje hakkında kısa bir bilgi verebilir misiniz?
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#9
(26-10-2017, Saat: 16:15)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Sorunun çözümüne ulaşma adına yapmak istediğiniz proje hakkında kısa bir bilgi verebilir misiniz?

 Merhaba hocam,

Projeden öte tecrübe kazanmak istediğim bir konu, hemen hemen her yerde uzak iletişim artık çok önemli olmuş. Şu projede şunu kullanayım diyorum, kim uğraşacak UPnP ile diyip o özellikten mahrum kalıyorum. Bir proje üzerinde eğer örnek verecek olursam. Mesela ben projeme yardım/destek bölümü yaptım ve programda online yazışma kullanılabiliyor, bunun için server-client mantığında benim port açmam gerekecek. Bu yüzden bu konuyu benim öğrenmem şart olmuş artık hocam  Big Grin Big Grin
Cevapla
#10
(26-10-2017, Saat: 16:11)hyperxman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTekrardan merhabalar,

@uparlayan hocanın vermiş olduğu uygulamayı denedim, localden tracker.exe'yi açtıktan sonra p2p.exe'yi açınca tracker.exe'de bağlandı bilgisi geldi, buraya kadar problem yok dedim. Dosyayı server'a atınca deneyince hiçbir tepki ile karşılaşmadım. İşaretlemiş olduğum portu online bir site aracılığı ile kontrol ettirince de kapalı olduğu gözlemledim.

Sonuç olarak;
Ya benim kullanım tarzımda sorun var veya oluşturulan program sadece local için yapılmış. Umarım bu sorunu sizin yardımınız ile çözmeyi başarabilirim.


Saygılarımla,
İyi çalışmalar.

Serverde çalıştırdığın tracker.exe,işaretlediğim dediğin port p2p.exe'nin aldığı port değil mi?Yani runtime olarak aldığı,bağlandğı port değil doğru mu?
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Quick Report ile boş satır ekleme boreas 1 66 10-04-2018, Saat: 18:53
Son Yorum: boreas
  Uzak masaüstünde çalışan program, bağlantı kesildiğinde hata veriyor canbir 0 109 16-03-2018, Saat: 18:50
Son Yorum: canbir
  Youtube için kesin çözüm nedir Lord_Ares 20 640 24-02-2018, Saat: 08:47
Son Yorum: Lord_Ares
  Başlık ekleme Dostk 2 254 01-02-2018, Saat: 14:23
Son Yorum: Abdullah ILGAZ
Information Delphi Mail Gönderme İçin Alternatif hyperxman 4 746 27-12-2017, Saat: 21:14
Son Yorum: hyperxman



Konuyu Okuyanlar: 2 Ziyaretçi