سؤال

وأردت أن أعرف لماذا يستخدم UDP في RTP بدلا من TCP؟. الرئيسية أدوات الاتصالات عبر بروتوكول الإنترنت المستخدمة الوحيد UDP كما أنا اختراق بعض الاتصالات عبر بروتوكول الإنترنت OSS.

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

المحلول

وكما أشار DJ بها، TCP هو حول الحصول على دفق بيانات موثوق بها، وسوف تبطئ نقل، وإعادة الإرسال معطوب حزم، من أجل تحقيق ذلك.

وUDP لا يهتمون الاعتماد على الاتصالات، ولن يبطئ أو إعادة نقل البيانات.

إذا طلبك يحتاج دفق بيانات موثوق بها، على سبيل المثال، لاسترداد ملف من خادم ويب، يمكنك اختيار TCP.

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

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

نصائح أخرى

ولقد أعطيت الكثير من الأجوبة جيدة، ولكن أود أن أشير شيء واحد بشكل صريح:

وأساسا تيار بيانات كاملة هو الشيء الجميل أن يكون في الوقت الحقيقي السمعية / البصرية، ولكن ليست ضرورية تماما (كما أشار آخرون):

والحقيقة الهامة هي أن بعض البيانات التي تصل في وقت متأخر جدا لا قيمة لها. ما هو جيد البيانات المفقودة لالإطار الذي ينبغي أن تم عرضها قبل ثانية؟

إذا كنت لاستخدام TCP (الذي يضمن أيضا الترتيب الصحيح لجميع البيانات)، فإنك لن تكون قادرة على الحصول على بيانات أكثر ما يصل إلى التاريخ وحتى ينتقل القديم بشكل صحيح. وهذا أمر سيء على نحو مضاعف: عليك أن تنتظر لاعادة البث من البيانات القديمة <م> و البيانات الجديدة (والتي يتم الآن تأخير) من المحتمل أن يكون تماما كما لا قيمة لها

.

وهكذا RTP يفعل نوعا من انتقال أفضل جهد في أنه يحاول نقل جميع البيانات المتاحة في الوقت المناسب، ولكن لا يحاول إعادة الإرسال البيانات التي تم فقدان / تلف أثناء النقل (*). وغني فقط على الحياة، وتأمل أن البيانات الحالية أكثر أهمية يحصل هناك بشكل صحيح.

و(*) في الواقع أنا لا أعرف تفاصيل RTP. ربما لا محاولة لإعادة الإرسال، ولكن إذا كان كذلك فإنه لن تكون عدوانية مثل TCP هو (والذي لن يقبل أي وقت مضى البيانات المفقودة).

والآخرون هم الصحيح، ولكن لا أقول لكم حقا السبب الحقيقي لماذا. Saua نوع من تلميحات في ذلك، ولكن هنا إجابة أكثر اكتمالا.

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

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

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

وتأخير الثاني 1 من إعادة الإرسال يعني أنه سيكون الآن 1 ثانية من الوقت قلت شيئا حتى سمعت ذلك. يعني ثان 1 التأخر للمرة الثانية الآن حان 2 ثانية من الوقت أقول شيئا حتى تسمع ذلك. هذا هو التراكمي للعبت البيانات مرة أخرى في نفس المعدل الذي يتحدث بها، وهلم جرا ...

وRTP يمكن أن يكون مهيأ للاتصال، ولكن بعد ذلك سيكون لإسقاط (أو القفز) البيانات لمواكبة أخطاء الإرسال على أي حال، فلماذا يزعج مع الحمل الزائد؟

والحزم من الناحية الفنية RTP يمكن معشق عبر اتصال TCP. هناك الكثير من الأجوبة كبيرة نظرا هنا. نقطتين طفيفة إضافية:

وRFC 4588 يصف كيف يمكن للمرء أن استخدام إعادة الإرسال مع البيانات RTP. معظم العملاء التي تتلقى تيارات RTP توظيف عازلة لحساب غضب في الشبكة التي عادة 1-5 ثواني طويلة والذي يعني وجود الوقت المتاح لإعادة نقل لتلقي البيانات المطلوبة.

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

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

وRTP غير حساس إلى حد ما إلى فقدان الحزمة، لذلك لا يتطلب موثوقية TCP.

وUDP لديها أقل من النفقات العامة لرؤوس بحيث حزمة واحدة يمكن أن تحمل المزيد من البيانات، لذلك يستخدم النطاق الترددي للشبكة بشكل أكثر كفاءة.

وUDP يوفر نقل البيانات بسرعة أيضا.

وهكذا UDP هو خيار واضح في مثل هذه الحالات.

وإلى جانب كل الآخرين إجابات لطيفة وصحيحة هذا المقال يعطي فهما جيدا حول الاختلافات بين TCP و UDP.

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

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

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

ومجرد ملاحظة: يتم إعطاء كل علبة أرسلت في تيار RTP عدد واحد أعلى من predecessor.This لها يسمح الوجهة عبتي لتحديد ما إذا كان أي الحزم مفقودة. إذا حزمة وmising، وأفضل عمل لجهة اتخاذ هو لتقريب vaue المفقودة عن طريق الاستيفاء. Retranmission ليس خيارا proctical منذ الحزمة إعادة إرسال سيكون متأخرا جدا لتكون مفيدة.

وأود أن أضيف بسرعة إلى ما قال مات H ردا على الجواب Stobor ل. ذكر مات H أن RTP على حزم UDP يمكن checksum'ed بحيث إذا معطوبة لانها سوف تحصل على تستاء. هذا هو في الواقع ميزة اختيارية على معظم أنظمة الهواتف. في النجمة، على سبيل المثال، يمكنك تمكين اختبارية / تعطيل على RTP فوق حركة مرور UDP في ملف التكوين rtp.conf مع السطر التالي:

rtpchecksums=yes ; or no if you prefer

وهتاف!

ووفي الوقت الحقيقي بروتوكول نقل هو بروتوكول الشبكة المستخدمة لتقديم يتدفقون السمعية وسائل الاعلام الفيديو عبر الإنترنت، وبالتالي تمكين عبر بروتوكول الإنترنت الصوت (الصوت عبر بروتوكول الإنترنت).

ويستخدم RTP عموما مع بروتوكول إرسال الإشارات، مثل SIP، الذي يحدد الاتصالات عبر الشبكة. يمكن لتطبيقات RTP استخدام بروتوكول التحكم بالإرسال (TCP)، ولكن معظم استخدام بروتوكول مخطط بيانات المستخدم (UDP) بدلا من ذلك لأن UDP يسمح لسرعة تسليم البيانات.

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