Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Uzak ağdan port açmadan sunucuya erişmek
#1
Selam,
Uzun bir süredir işyerinde bulunan sunucudan (sunucu dediğime bakmayın bildiğiniz i3 işlemcili w7 kurulu makina) port açmadan şirketin diğer şubesinde de programı kullanmak için neler yapılması gerektiği ile ilgili araştırma yapıyordum. Sonunda bununla alakalı bir karar verip projeye başlayabildim, 1 hafta kadar oldu vakit buldukça kod yazıyorum. Login işlemini halletmek üzereyim.
Sormak istediğim ; anlatacağım şekilde yazılan bir programda ne gibi sorunlar çıkabileceği.

Proje;
Önce bir server kiralanacak (@pro_imaj sağolsun, kiralandı zaten), servera tcp server programı yazılacak, programı kullanacak makinalara da tcp client programı yazılacak. Clientler asıl programı çalıştırmadan önce yazılan bu ufak client programını çalıştırıp servera bağlanıp login olacak (login işlemini yazıyorum şu aralar). Daha sonra asıl program çalıştırılacak (client yazılımı asıl programın içinde de olabilir tabi). Bu arada tabi serverda bir veritabanında hangi id li makina hangi firmaya ait, firmanın clientimi yoksa server makinasımı hepsi önceden belli (client makinalar servera bağlanırken benzersiz bir ID gönderiyor buda burdan çözülüyor, bi nevi oturum açılıyor yani). Kısaca kiralanan Serverda bir oturum yönetimi oluşturulup kim bağlı, hangi ID hangi firmanın server makinası, hangisi clienti vs.vs. tutuluyor. 
Misal client makinalardan biri açtı programı bağlandı. Cari hesap formunu açtı, açarken program client exe ye bana şu carileri, şu sıralamada şu kadar adet ver dedi. Client bu komutu alıp  json formatında servera gönderdi, server aldı veriyi baktı bir istek var, session tablosuna baktı bu clientin serveri, şu client dedi, ve seçtiği cliente şu idli client senden cari hesapları şu şekilde istiyor dedi, isteği alan client makina Veri tabanına bağlanıp verileri çekti, json formatında TCPServera gönderdi, al sonuç bu dedi, Server aldığı veriyi isteği yapan client e al bakalım sonuçlar bunlar dedi ve işlem bitti.

Biraz karmaşık anlatmış olabilirim kusura bakmayın. Bu şekilde çalışan bir programda ne gibi sorunlar ortaya çıkabilir sizce? Server kapanırsa sakat felan diye düşünmeyin kapanmıcak şekilde ayarlanıcak (2-3 server kullanılacak). İnternet olmazsa program zaten uzak ağdan çalışmıcak. Veriler şifreli bir şekilde gidiyor zaten. Aktarılacak veri boyutu max 10k gibi bir boyut olacak ki bu bile büyük bir veri aktarımı bizce. Aynı anda (şu anda kullanan firma sayısına bakarsak) Max 100 kişi civarında kullanacak, tabi ileride satışlar patlarsa ne olur bilemem Smile
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#2
Daha önce Linkleri Görebilmeniz İçin Giriş yap veya Üye OlHole Punching olayı tam bunun için aslında ama karar sizin.
Sizin çalışma mantığınızda iki yönlü trafiğin tamamı server'ın üzerinden gidiyor. Server'da gereksiz veri transferi oluşuyor. Kullanılacak sistem çok yoğunsa bu sorun olabilir.

Ayrıca "reverse ssh"i araştırabilirsiniz.
There's no place like 127.0.0.1
WWW
Cevapla
#3
(05-11-2017, Saat: 08:00)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlDaha önce Linkleri Görebilmeniz İçin Giriş yap veya Üye OlHole Punching olayı tam bunun için aslında ama karar sizin.
Sizin çalışma mantığınızda iki yönlü trafiğin tamamı server'ın üzerinden gidiyor. Server'da gereksiz veri transferi oluşuyor. Kullanılacak sistem çok yoğunsa bu sorun olabilir.

Ayrıca "reverse ssh"i araştırabilirsiniz.

 Yakın zaman içinde Hole punching için verilen kodlar ve kaynaklar ile bir sunum hazırlayacağım hocam, ek olarak @esistem hocam port açmadan iş yapmak benim hedefimdi Hole punching işinizi görecektir  Blush
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#4
Server tarafında DataSnap kullanabilirsiniz. Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol ı otomatik yönetebiliyor. Size sadece Load-Balance işlemi kalıyor. Login işlemi sonrası oturum için bir Token üretebilir, istemci makineler her sorguda bu Token ile işlem yapabilir. Bunların hepsi bir tarafa "ben olsam" madem ki bir RESTful alt yapı kuruyorsunuz. Server tarafında kesinlikle Node.JS kullanırdım. Açıkçası performansı inanılmaz. http üzerinden çalıştığı için port problemi tamamen ortadan kayboluyor.
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#5
(05-11-2017, Saat: 12:02)hyperxman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol Yakın zaman içinde Hole punching için verilen kodlar ve kaynaklar ile bir sunum hazırlayacağım

4 gözle bekliyoruz
There's no place like 127.0.0.1
WWW
Cevapla
#6
Selam,
Evet server üzerinde oldukça yoğun bir trafik oluşacak orası kesin, bende müşterilerimle aynı programı kullandığım için trafiğin ne olacağını biliyorum ki benden çok çok daha fazla yoğun kullanan müşterilerim var, kısaca test olayı kusursuz olacak diyebiliriz Smile Hole Punching hakkında bende sizin gibi çok araştırma yaptım, udp zaten benim işimi çözmüyor zira bana canlı bağlantı lazım, tcp içinse %70-80 çalışıyor demişler, ben bunu bazı cihazlarda çalışmıyor diye algıladım o yüzden bulaşmıyayım diyorum. rverse ssh ı detaylı araştırmadım. DataSnap inceleyebiliriz, en büyük dert server in clientleri yönetmesi zaten, kimden ne geldi kime gidicek dönen veri tekrar kime yönlendirilecek vs.vs. oldukç karmaşık bi olay (gerçi şimdilik çözdüm ama bakalım ne olcak). İletişim için zaten Token kullanılıyoruz, her defasında birçok kontrol yapmaktansa bir kez oturum açıldığında token üretilip sürekli bunun üzerinden kontroller yapılıp veriler dağıtılıyor. Nodejs olayınada bakarız ilerde, zaten öyle bişide lazım olucak.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#7
Merhaba,
Hole Punching ve benzeri protokollerin hangi amaçlarla kullanıldığına bakarak (Proje Ar-Ge aşamasında), bir iletişim protokol seçilmesi gerektiği kanaatindeyim.
Hole Punching yöntemi, ticari bir uygulamada kullanılabilir mi? Örneği var mı? 
Bilindik ticari/endüstriyel uygulamalar neden bu yöntemi kullanmıyor?
Veri transferinde kullanmış olduğu yöntem, veri kayıpları veya güvenlik zaafiyetine neden olur mu?
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
#8
En başta Skype.
VOIP uygulamalarının bir çoğunda, belki de tamamına yakını.
P2P uygulamarda...
There's no place like 127.0.0.1
WWW
Cevapla
#9
(06-11-2017, Saat: 10:15)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlEn başta Skype.
VOIP uygulamalarının bir çoğunda, belki de tamamına yakını.
P2P uygulamarda...

Ticariden kastım; muhasebe, erp, crm vb. bir uygulamalarda kullanılabilir mi? esistem, bu yöntemi kullanacağı uygulamadan kısaca Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol Bu uygulamada Hole Punching yönteminin kullanılması doğru mudur? Sistemi az çok bilenler/araştıranların yorumunu merak ettim.
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
#10
Bence astarı-yüzünden pahalıya gelir Smile
Yukarıda da bahsedildiği gibi; UDP ile uygulanması kolay ama böyle bir uygulama için güvensiz bir alt yapı olur. TCP ile uygulanması da çok daha zor.
Ben olsam müşterilerden port yönlendirme isterdim Wink
There's no place like 127.0.0.1
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question Uzak Bir Bilgisayar İçin Port Ekleme? hyperxman 21 822 22-11-2017, Saat: 00:03
Son Yorum: nguzeller
  Delphi'de Basit Bir Uzak Masaüstü Uygulaması savasabd 2 406 27-09-2017, Saat: 22:16
Son Yorum: savasabd
  Usb port aç kapa Lord_Ares 7 362 29-07-2017, Saat: 00:10
Son Yorum: Lord_Ares
  2 program aynı port kullanabilir mi? Shou 9 550 15-01-2017, Saat: 01:30
Son Yorum: Tuğrul HELVACI
  Bulut sunucuya veri yükleme/indirme yhackup 11 804 06-01-2017, Saat: 10:12
Son Yorum: DelphiCan



Konuyu Okuyanlar: 1 Ziyaretçi