لماذا UDP + برنامج موثوق بها نظام الطلبات أسرع من TCP?

StackOverflow https://stackoverflow.com/questions/1200901

  •  05-07-2019
  •  | 
  •  

سؤال

بعض الألعاب اليوم استخدام نظام الشبكة التي تنقل الرسائل عبر UDP ، ويضمن أن الرسائل وموثوق بها أمر.

على سبيل المثال ، RakNet هي لعبة شعبية شبكة المحرك.فإنه يستخدم فقط UDP عن اتصالات لديها نظام كامل لضمان الحزم التي يمكن أن تكون موثوق بها أمر إذا اخترت ذلك.

بلدي السؤال الأساسي هو: ما هو مع ذلك ؟ ليس TCP نفس الشيء كما أمرت وموثوق بها UDP?ما يجعلها أبطأ كثيرا أن الناس يجب أن الأساس إعادة اختراع العجلة ؟

هل كانت مفيدة؟

المحلول

عام/التخصص

  1. TCP هو الغرض العام نظام موثوق به
  2. UDP +كل ما هو غرض خاص موثوقية النظام.

المتخصصة الأمور عادة ما تكون أفضل من الأغراض العامة الأشياء شيء هم المتخصصة.

تيار / رسالة

  1. TCP هو تيار بناء
  2. UDP هو رسالة القائم على

إرسال منفصلة الألعاب المعلومات الخرائط عادة أفضل رسالة المستندة إلى النموذج.إرساله من خلال تيار من الممكن ولكن فظيعة غير فعالة.إذا كنت ترغب في إرسال موثوق كمية كبيرة من البيانات (نقل الملفات) ، TCP هو فعالة جدا.هذا هو السبب في بت تورنت استخدام UDP من أجل السيطرة رسائل TCP البيانات المرسلة.

نصائح أخرى

ونحن تحول من الاعتماد عليها للا يمكن الاعتماد عليها في "الدوري الأساطير" قبل نحو عام بسبب العديد من المزايا التي ومنذ ذلك الحين ثبت أن يكون صحيحا:

1) تصبح المعلومات قديم غير ذي صلة. إذا كنت إرسال حزمة الصحة وأنها لا تصل ... أنا لا أريد أن تضطر إلى الانتظار لتلك الحزمة الصحية نفسها لإعادة عندما أعرف لها تغييرها.

2) النظام هو أحيانا ليس من الضروري. إذا أنا إرسال رسائل مختلفة لأنظمة مختلفة قد لا يكون من الضروري للحصول على تلك الرسائل في النظام. أنا لا تجبر العميل لانتظار رسائل في النظام.

و3) لا يمكن الاعتماد عليها لا يحصل احتياطيا مع الرسائل ... أي انتظار للشكر وتقدير مما يعني أنه يمكنك حل فقدان المسامير بسرعة أكبر بكثير.

و4) يمكنك التحكم يعيد عندما بالضرورة أكثر كفاءة. مثل إعادة التعبئة شيء لم يرسل إلى حزمة أخرى. (TCP لم أعد حزم ولكن يمكنك أن تفعل ذلك بشكل أكثر كفاءة مع المعرفة عن كيفية عمل البرنامج.)

و5) التحكم في التدفق من رسالة مثل رمي الرسائل التي هي أقل أهمية عندما المسامير شبكة فجأة. نظام الشبكة يمكن أن تختار عدم إعادة إرسال الرسائل أقل أهمية عندما يكون لديك خسارة ارتفاع. مع TCP كنت لا تزال لديها طابور من الرسائل التي تحاول إعادة التي قد تكون أولوية أقل.

و6) أصغر حزمة رأس ... لا تحتاج حقا أن أقول الكثير عن ذلك.

وهناك أكثر من ذلك بكثير من الفرق بين UDP و TCP من مجرد الموثوقية والتسلسل:

وفي صلب الموضوع هو أن UDP هو بدون اتصال أثناء TCP هو توصيل . هذا الاختلاف بسيط يؤدي إلى مجموعة من الاختلافات الأخرى التي أنا لن تكون قادرة على تلخيص ريسونبلي هنا. يمكنك أن تقرأ التحليل أدناه للحصول على مزيد من التفاصيل.

TCP

- UDP تحليل مقارن

والجواب في رأيي في كلمتين: "السيطرة على الازدحام"

وTCP يذهب إلى أبعد من ذلك في إدارة عرض النطاق الترددي للمسار - لاستخدام أكثر من ذلك، ولكن لضمان عدم وجود مساحة لتطبيقات أخرى. وهذه مهمة صعبة للغاية، وبطبيعته ليس من الممكن لاستخدام 100٪ من عرض النطاق الترددي 100٪ من الوقت.

ومع UDP، من ناحية أخرى، يمكن للمرء أن جعل البروتوكول الخاص بهم لإرسال الحزم على السلك بأسرع ما تريد - وهذا يجعل بروتوكول دية جدا إلى تطبيقات أخرى، ولكن يمكن الحصول على المزيد من "الأداء" على المدى القصير . من ناحية أخرى، فإنه مع احتمال كبير أنه إذا كانت الظروف مواتية، وهذا النوع من البروتوكولات قد تسهم في انهيار الازدحام .

وTCP هو بروتوكول مهيأ للتيار، في حين UDP هو بروتوكول مهيأ رسالة. وبالتالي TCP يفعل أكثر من مجرد الموثوقية والطلب. انظر هذا المنصب للحصول على مزيد من التفاصيل. في الأساس، وأضاف المطورين RakNet موثوقية ويأمر حين لا تزال تحتفظ أنها بروتوكول مهيأ الرسالة، وهكذا كانت النتيجة أكثر خفيفة الوزن من TCP (والذي له علاقة أكثر).

وهذه المادة قليلا قديمة، لكنه ما زال صحيحا جدا عندما يتعلق الامر الالعاب. وهذا ما يفسر البروتوكولين، والخراب هؤلاء الناس ذهب يحاولون تطوير لعبة الانترنت متعددة. "X-الجناح مقابل التعادل مقاتلة"

الدروس المستفادة (المصات الإنترنت)

وهناك تحفظا واحدا لهذا على الرغم من أنني تشغيل / تطوير لعبة متعددة اللاعبين، ولقد استعملت على حد سواء. UDP كان أفضل بكثير لبلدي التطبيق، ولكن الكثير من الناس لا يمكن أن تلعب مع UDP. أجهزة التوجيه ومثل منعت الاتصالات. حتى لقد غيرت إلى TCP "موثوق". حسنا ... يمكن الاعتماد عليها؟ لا أعتقد ذلك. يمكنك إرسال حزمة، عدم وجود أخطاء، يمكنك إرسال آخر، وأنها تعطل (استثناء) في منتصف الحزمة. الآن الذي الحزم جعل ذلك؟ حتى ينتهي بك الأمر كتابة بروتوكول موثوق ON TOP OF برنامج التعاون الفني، لمحاكاة UDP - ولكن إنشاء باستمرار اتصال جديد عندما تعطل. يستغرق حوالي فعالة.

وUDP + توقف وانتظر ARW = جيدة

وبروتوكول UDP + الانزلاق النافذة = أفضل

وTCP + النافذة المتزحلقة مع إعادة الاتصال؟ = bulkware عديمة القيمة. (IMHO)

وتأثير الجانب الآخر هو تطبيقات متعددة الخيوط. يعمل TCP جيدا لغرفة دردشة نوع شيء، لأن كل غرفة يمكن أن يكون ذلك في موضوع خاص. ويمكن للغرفة عقد 60-100 الناس وتشغيله على ما يرام، حيث أن موضوع غرفة يحتوي على مآخذ لكل مشارك.

وUDP من ناحية أخرى هو أفضل وسيلة ل(IMO) من خلال موضوع واحد، ولكن عندما تحصل على الحزمة، لديك لتحليل لمعرفة ما الذي جاء من (عبر معلومات المرسلة أو RemoteEndPoint)، ثم تمرير هذه البيانات ل الخيط غرف الدردشة بطريقة threadsafe.

والواقع، عليك أن تفعل الشيء نفسه مع TCP، ولكن فقط الاتصال على.

والنقطة الأخيرة. تذكر أن TCP سوف خطأ للتو، وقتل اتصال في أي وقت، ولكن يمكنك إعادة الاتصال في حوالي 0.5 ثانية، وإرسال نفس المعلومات. الشيء الأكثر عجيبة لقد عملت مع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top