Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

udp neden güvenilmez ?


Artariel

Öne çıkan mesajlar

öncelikle bildiğim ya da bildiğimi sandığım şeyleri söyleyeyim. udp: ben attım, tutarsan tuttun protokolü. yani paket kesin gönderiliyor (?) ama alıcı alabiliyor mu alamıyor mu. bildiğim kadarıyla olay bu. recv fonksiyonu yalnızca tek sefer çalışıyor, alamadığın veriler gg

peki oyunda veya malum programda gönderilebilecek maksimum paket boyunu biliyorsak ve buna göre receive yapıyorsak güvensiz olan taraf neresi ? sonuçta packet loss olayı tcpde de yok mu
Link to comment
Sosyal ağlarda paylaş

hayir udpnin karsi tarafa gidip gitmeyecegini gitse bozulmadigini bilemezsin, yollayan adam paket yolladigini bilir ama alici taraf udp dinliyorsa paket kendine ulastiginda bilir sadece

receive sana tek bir pakedi donduruyor bufferda bekleyen, kalani cope atmiyor
tekrar receive yapacaksin
cope giden sey receive'in uzerinde calistigi paket
100 byte buffer verirsen 65kbytelik paket sizlere omur olmali, error veriyor truncate ettigine dair ama yarim pakedi de imha ediyor olmasi lazim

udpyi ne amacla dusundugunu soylersen daha net bisey diyebiliriz
Link to comment
Sosyal ağlarda paylaş

TCP'de packet loss olmaz. Layer of abstractionlar var, kablodaki elektrik sinyali -> ethernet protokolü -> ip protokol -> tcp protokolü. IP protokolünde veya altında packet loss olsa bile TCP'nin amacı bunları application layer'a taşımamaktır, ayrıca gönderilen tüm paketlerin tamamen ve sırayla alınmasını garanti eder.

UDP ise gönderirsin; alabilir, almayabilir, eksik alabilir, out of order alabilir. O yüzden position falan udp ile gönderilir bi paket'i alamazsan bile 1 ms sonra yenisini alırsın oyuncu farketmez.

recv ile 1 char okudun bufferda 10 char vardı 9u gitti diye bir olay olduğunu sanmıyorum ama emin değilim.. almaktan kastım buffera girmesi yoksa recv değil
Link to comment
Sosyal ağlarda paylaş

Eralp yazidigini cok ufak duzelteyim, package loss zaten TCP duzeyinde olmaz (olur mu lan yoksa ? kendi kafami karistirdim. heh).

Gerisi anlattiginiz gibi, TCP 3-way handshake ile iletisimin sorunsuz oldugunu kontrol eder, UDP kontrol etmez. Saldim cayira mevlam kayira misali gonderir paketi, basina ne geldigini sallamaz.
Link to comment
Sosyal ağlarda paylaş

TCP'de stream olarak yolladigin icin, yolladigin paket gidene kadar tekrar deneniyo o yuzden online oyun icin gereksiz ve hatta cogu noktada zararli da. Mesela pozisyon, rotasyon gibi bilgileri yollarken her paketin yollanmasindan emin olmana gerek yok cunku arada kaybolan paketin senin objenin hareketine orani cok kucuk kalir. ama pozisyonu tcpyle yolluyo olsaydin kayip paketler olustukca beklemek zorunda kalirdi streamin. eger oyun real time degilse kabul edilebilir bi durum ama diger turlu udp kullanmak sart.

ama chat, item alma, olme vs.. gibi tek seferlik ve oyunun gidisatina etki edecek mesajlari da udp olarak yollamak istersen 'reliable udp' die bi kavram var. karsi tarafin tcpde oldugu gibi kesin almasini sagliyo.

tabii ek olarak tcpnin overheadinin udp'den cok daha buyuk olmasi da var.
Link to comment
Sosyal ağlarda paylaş

TCP nin olayi reliable olmasi, yani tcp gonderdigin dataya guvenebilirsin. TCP nin bir cok fail safe mekanizmasi vardir. Ornegin paketi yollar sonra bir timer calistirir, o timer bitene kadar bi reply gelmezse bu paket kayboldu der ve tekrar atar. Data kaybi olusmaz.

Tabii TCP de verifikasyonlar oldugu icin daha yavas bi teknolojidir. UDP de ise atar ama gitti mi gitmedi mi ugrasmaz, unreliable olur ama daha performansli calisir.

O yuzden http ftp vs bildigin cogu sey TCP den calisir cunku data kaybi kabul edilmez. Oyunlar gibi data kaybinin kabul edilebildigi ve performansin onemli oldugu yerlerde UDP kullanilir. Error checking application layer a tasinir. Yani paket eksik geldiyse oyun ona gore duzeltme yapar.

Kucuk ornek ve modern oyunlarda gecerli bile olmayabilir, teorik acidan al, basit ornek. Ornegin oyunda yuruyosun, birinci karedesin. 2-3-4-5 gidiyor. UDP de 3-4 u kacirdi ve 5 i aldi, seni 2 ye geri atar. (yoksa hile olur zaten)

O yuzden ornegin, browser based oyunlar hic bi zaman web oyunlari kadar real time olamayacak (yeni protokoller icat edilmedigi surece)

Tabii facebook ornegin dunyanin en zeki yazilimcilarinin bulustugu bir yer oldugu icin, orada custom cozumler gelistirilmis. Performansi artirmak icin, tcp yi kaldirmislar UDP ye gecmisler. Az paket kaybi olur demisler, cunku kendi datacenterlarimiz vs error verifikasyonunu application layer a tasiriz, %20-30 bile kar etsek kardir demisler.

Fakat o kadar saglikli networklerde bile dusunuldugunden fazla cikmis kayip. Bu sefer onu iyilestirecek bazi TCP ozelliklerini (hepsini degil), kendi custom protokollerine tasimislar. Yani adamlarin kendine ozel TCP/UDP karisimi protokolu var ic iletisim icin.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...