سؤال

ودعونا نقول برنامجي يرسل 1000 بايت عبر الشبكة (UDP). هل يضمن أن المستقبل سوف تتلقى بايت 1000 في "دفعة" واحدة؟ أو ربما انه سوف تحتاج إلى تنفيذ سيفرال "يقرأ" حتى انه سوف تتلقى رسالة برمتها؟ إذا كان في وقت لاحق هذا صحيح، كيف يمكنني التأكد من أن ترتيب الحزم لنفس الرسالة لا تحصل على "الخلط" (بالترتيب)، أو ربما بروتوكول يضمن ذلك؟
على تعديل : هذا هو، لا يمكن أن يتم تقسيم رسالتي إلى الحزم سيفرال؟ (ماذا لو كنت محاولة إرسال رسالة 10000mb، ماذا يحدث بعد ذلك؟)

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

المحلول

وسوف تحصل على كل شيء أو لا شيء.

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

وهناك حد أقصى لحجم الإطار (من 65507 بايت)، وإرسال () جي الحزم من أحجام أكبر سيعود خطأ.

ويجب توفير عازلة كافية لاستقبال الإطار بأكمله في مكالمة واحدة.

يمكن أن تكون مجزأة

وحزم UDP إلى أجزاء IP متعددة، ولكن سوف OS إسقاط حزمة كاملة. وهذا هو بالتالي شفاف إلى التطبيق.

نصائح أخرى

والمتلقي سوف تحصل على حزمة كاملة في مكالمة واحدة. طول الحزمة محدودة، حتى في :

<اقتباس فقرة>   

وطول       حقل 16 بت التي تحدد طول بالبايت كامل   مخطط البيانات: رأس والبيانات. الحد الأدنى   طول 8 بايت منذ هذا هو   طول الرأس. حجم الحقل   يحدد الحد النظري من 65535   بايت (رأس 8 بايت + 65527 بايت   البيانات) عن مخطط بيانات UDP. ال   الحد العملي لطول البيانات   التي تفرضها الكامنة   بروتوكول IPv4 يكون 65507 بايت.

ولكن الحد الحقيقي هو إلى حد أقل بكثير، وعادة ما يكون الأسلم أن نفترض 512 بايت. انظر ما هو أكبر الآمن UDP حزم الحجم على الإنترنت .

أرسلت

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

ولكن، الحزم الخاص بك قد لا حتى تصل، أو أنها قد تصل خارج الترتيب.

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

وأخيرا، إذا كان ذلك ممكنا، قد ترغب في النظر في استخدام TCP بدلا من ذلك.

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

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