سؤال

عميل إغلاق المقبس أولا، عندما لا تكون هناك الكثير من البيانات من الخادم، وإغلاق اتصال TCP على ما يرام مثل:

FIN -->
   <-- ACK
   <-- FIN, ACK
ACK -->

عندما يقوم الخادم بإرسال البيانات:

FIN -->
    <-- ACK,PSH
RST -->

واتصال الخادم يأتي إلى حالة الإغلاق والانتعاش هناك لفترة طويلة.

ما هي المشكلة هنا؟ العميل المتعلق أو الخادم ذات الصلة؟ يحدث هذا على Redhat5 للمقابس المحلية.

هذه مقالة - سلعة تحدث حول سبب إرسال "RST"، لكنني لا أعرف لماذا عالق اتصال الخادم عند الإغلاق، ولا ترسل الزعانف.

عدل] لقد تجاهلت أهم المعلومات، يحدث هذا في مضاهاة شبكة Slirp في Qemu. يبدو أنها مشكلة في خطأ Slirp للتعامل مع اتصال وثيق.

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

المحلول 3

هذا معروف خلل ل qemu.

نصائح أخرى

هذا يعني أنه لا توجد بيانات غير مقروءة في الدفق، أن العميل لم ينته القراءة.

يمكنك إجباره عن طريق استخدام SO_LINGER اختيار. هنا الوثائق ذات الصلة لنظام التشغيل Linux (انظر أيضا الخيار نفسه، هنا)، [وهنا وظيفة المطابقة 2] ل Win32.

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

قد يعني أن الخادم لم يغلق المقبس. يمكنك بسهولة معرفة ذلك بسهولة باستخدام "LSOF" لإدراج واصفات الملف مفتوحة من خلال هذه العملية والتي ستضم مآخذ TCP. الإصلاح هو الحصول على العملية دائما إغلاق المقبس عند الانتهاء (حتى في حالات الخطأ وما إلى ذلك)

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