TCP الموثوقية النقل
نحن جميعًا على دراية ببروتوكول TCP كبروتوكول نقل موثوق به ، ولكن كيف يضمن موثوقية النقل؟
لتحقيق انتقال موثوق ، يجب مراعاة العديد من العوامل ، مثل فساد البيانات والخسارة والازدواجية والظهور خارج الطلب. إذا كان لا يمكن حل هذه المشكلات ، فلا يمكن تحقيق انتقال موثوق.
لذلك ، يستخدم TCP آليات مثل رقم التسلسل ، والرد على الإقرار ، والتحكم في إعادة تقديم ، وإدارة الاتصال ، والتحكم في النوافذ لتحقيق انتقال موثوق.
في هذه الورقة ، سوف نركز على النافذة المنزلق ، والتحكم في التدفق والتحكم في الازدحام في TCP. تتم تغطية آلية إعادة الإرسال بشكل منفصل في القسم التالي.
التحكم في تدفق الشبكة
يعد التحكم في تدفق الشبكة أو معرفته بأنه التحكم في حركة المرور في الشبكة هو في الواقع مظهر من مظاهر العلاقة الدقيقة بين المنتجين والمستهلكين. ربما صادفت هذا السيناريو كثيرًا في العمل أو في المقابلات. إذا تجاوزت قدرة المنتج على إنتاج قدرة المستهلك بشكل كبير على الاستهلاك ، فسوف يتسبب ذلك في نمو قائمة الانتظار إلى أجل غير مسمى. في حالة أكثر خطورة ، قد تعرف أنه عندما تتراكم رسائل RabbitMQ أكثر من اللازم ، يمكن أن تسبب تدهور الأداء لخادم MQ بأكمله. وينطبق الشيء نفسه على TCP ؛ إذا تركت دون رادع ، فسيتم وضع الكثير من الرسائل في الشبكة ، وسيتجاوز المستهلكون قدرتهم ، بينما سيواصل المنتجون إرسال رسائل مكررة ، والتي ستؤثر بشكل كبير على أداء الشبكة.
لمعالجة هذه الظاهرة ، يوفر TCP آلية للمرسل للتحكم في مقدار البيانات المرسلة بناءً على سعة الاستقبال الفعلية للمستقبل ، والتي تعرف باسم التحكم في التدفق. يحافظ المتلقي على نافذة استلام ، بينما يحافظ المرسل على نافذة إرسال. تجدر الإشارة إلى أن هذه النوافذ مخصصة فقط لاتصال TCP واحد وليس جميع الاتصالات تشترك في نافذة.
يوفر TCP التحكم في التدفق باستخدام متغير لنافذة الاستلام. تمنح نافذة الاستلام المرسل مؤشراً على مقدار مساحة ذاكرة التخزين المؤقت التي لا تزال متوفرة. يتحكم المرسل في مقدار البيانات المرسلة وفقًا لسعة القبول الفعلية للمستقبل.
يقوم مضيف المتلقي بإخطار مرسل حجم البيانات التي يمكن أن يتلقاها ، ويرسل المرسل إلى هذا الحد. هذا الحد هو حجم النافذة ، تذكر رأس TCP؟ يوجد حقل نافذة استلام ، يتم استخدامه للإشارة إلى عدد البايتات التي يكون المستلم قادرًا أو على استعداد لتلقيها.
سوف يرسل مضيف المرسل بشكل دوري حزمة مسبار النافذة ، والتي يتم استخدامها لاكتشاف ما إذا كان مضيف المتلقي لا يزال قادرًا على قبول البيانات. عندما يكون المخزن المؤقت للمستقبل في خطر التفيض ، يتم ضبط حجم النافذة على قيمة أصغر لتوجيه المرسل للتحكم في مقدار البيانات المرسلة.
فيما يلي رسم تخطيطي للتحكم في تدفق الشبكة:
التحكم في الازدحام الشبكة
قبل تقديم التحكم في الازدحام ، نحتاج إلى أن نفهم أنه بالإضافة إلى نافذة الاستلام ونافذة الإرسال ، هناك أيضًا نافذة احتقان ، والتي تستخدم بشكل أساسي لحل المشكلة بالمعدل الذي يبدأ المرسل في إرسال البيانات إلى نافذة الاستلام. لذلك ، يتم الحفاظ على نافذة الازدحام من قبل مرسل TCP. نحتاج إلى خوارزمية لتحديد مقدار البيانات المناسبة لإرسالها ، لأن إرسال القليل من البيانات أو الكثير من البيانات ليس مثاليًا ، وبالتالي مفهوم نافذة الازدحام.
في التحكم السابق في تدفق الشبكة ، كان ما تجنده هو المرسل الذي يملأ ذاكرة التخزين المؤقت للمستقبل بالبيانات ، لكننا لم نكن نعرف ما كان يحدث في الشبكة. عادةً ما تكون شبكات الكمبيوتر في بيئة مشتركة. نتيجة لذلك ، قد يكون هناك ازدحام على الشبكة بسبب التواصل بين المضيفين الآخرين.
عندما يتم ازدحام الشبكة ، إذا استمر إرسال عدد كبير من الحزم ، فقد يتسبب ذلك في حدوث مشاكل مثل التأخير وفقدان الحزم. في هذه المرحلة ، ستقوم TCP بإعادة إرسال البيانات ، لكن إعادة الإرسال سيزيد من العبء على الشبكة ، مما يؤدي إلى تأخير أكبر وفقدان المزيد من الحزم. هذا يمكن أن يدخل في دورة مفرغة والحفاظ على أكبر.
وبالتالي ، لا يمكن لـ TCP تجاهل ما يحدث على الشبكة. عندما يتم ازدحام الشبكة ، تضحي TCP بنفسه عن طريق تقليل مقدار البيانات التي ترسلها.
لذلك ، يتم اقتراح التحكم في الازدحام ، والذي يهدف إلى تجنب ملء الشبكة بأكملها بالبيانات من المرسل. لتنظيم مقدار البيانات التي يجب على المرسل إرسالها ، يحدد TCP مفهومًا يسمى نافذة الازدحام. ستقوم خوارزمية التحكم في الازدحام بضبط حجم نافذة الازدحام وفقًا لدرجة الازدحام للشبكة ، وذلك للتحكم في مقدار البيانات التي يرسلها المرسل.
ما هي نافذة الازدحام؟ ما علاقة هذا مع نافذة إرسال؟
نافذة الازدحام هي متغير الدولة الذي يحتفظ به المرسل الذي يحدد مقدار البيانات التي يمكن للمرسل إرسالها. تتغير نافذة الازدحام ديناميكيًا وفقًا لمستوى الازدحام للشبكة.
نافذة الإرسال عبارة عن حجم نافذة متفق عليه بين المرسل والمستقبل الذي يشير إلى مقدار البيانات التي يمكن أن يتلقاها المتلقي. ترتبط نافذة الازدحام ونافذة الإرسال ؛ عادة ما تكون نافذة الإرسال مساوية لأدنى الازدحام واستلام النوافذ ، أي SWND = min (CWND ، RWND).
يتغير نافذة الازدحام CWND على النحو التالي:
إذا لم يكن هناك ازدحام في الشبكة ، أي لا يحدث أي مهلة إعادة الإرسال ، تزداد نافذة الازدحام.
إذا كان هناك احتقان في الشبكة ، تنخفض نافذة الازدحام.
يحدد المرسل ما إذا كانت الشبكة مزدحمة من خلال ملاحظة ما إذا كانت حزمة إقرار ACK قد تم استلامها في غضون الوقت المحدد. إذا لم يتلقى المرسل حزمة إقرار ACK في الوقت المحدد ، فسيتم اعتبار أن الشبكة مزدحمة.
بالإضافة إلى نافذة الازدحام ، فقد حان الوقت لمناقشة خوارزمية التحكم في احتقان TCP. تتكون خوارزمية التحكم في احتقان TCP من ثلاثة أجزاء رئيسية:
بداية بطيئة:في البداية ، تكون نافذة الازدحام CWND صغيرة نسبيًا ، ويزيد المرسل من نافذة الازدحام بشكل كبير للتكيف بسرعة مع قدرة الشبكة.
تجنب الازدحام:بعد أن تتجاوز نافذة الازدحام عتبة معينة ، يزيد المرسل نافذة الازدحام بطريقة خطية لإبطاء معدل نمو نافذة الازدحام وتجنب التحميل الزائد للشبكة.
الانتعاش السريع:في حالة حدوث الازدحام ، يقوم المرسل بنقص نافذة الازدحام ويدخل إلى حالة الاسترداد السريعة لتحديد موقع استرداد الشبكة من خلال ACKs المكررة المستلمة ، ثم يستمر في زيادة نافذة الازدحام.
بداية بطيئة
عند إنشاء اتصال TCP ، يتم تعيين نافذة الازدحام CWND في البداية على قيمة الحد الأدنى MSS (حجم القطعة القصوى). وبهذه الطريقة ، يكون معدل الإرسال الأولي حوالي MSS/RTT بايت/ثانية. عادةً ما تكون النطاق الترددي المتاح الفعلي أكبر بكثير من MSS/RTT ، لذلك يريد TCP العثور على معدل الإرسال الأمثل ، والذي يمكن تحقيقه عن طريق البدء البطيء.
في عملية البدء البطيء ، سيتم تهيئة قيمة نافذة الازدحام CWND إلى 1 MSS ، وفي كل مرة يتم الاعتراف بقطعة الحزمة المرسلة ، ستزداد قيمة CWND بواسطة MSS ، أي أن قيمة CWND ستصبح 2 MSS. بعد ذلك ، تتضاعف قيمة CWND لكل نقل ناجح لقطاع الحزم ، وهلم جرا. تظهر عملية النمو المحددة في الشكل التالي.
ومع ذلك ، لا يمكن أن ينمو معدل الإرسال دائمًا ؛ النمو يجب أن ينتهي في وقت ما. لذا ، متى يزيد معدل الإرسال؟ عادة ما تنتهي البداية البطيئة الزيادة في معدل الإرسال في واحدة من عدة طرق:
الطريقة الأولى هي حالة فقدان الحزم أثناء عملية إرسال البداية البطيئة. عند حدوث فقدان الحزمة ، يقوم TCP بتعيين نافذة ازدحام المرسل CWND إلى 1 وإعادة تشغيل عملية البداية البطيئة. في هذه المرحلة ، يتم تقديم مفهوم SSThresh Ssthold Plank ، الذي تكون قيمته الأولية نصف قيمة CWND التي تولد فقدان الحزمة. أي عندما يتم اكتشاف الازدحام ، فإن قيمة ssthresh هي نصف قيمة النافذة.
الطريقة الثانية هي الارتباط المباشر مع قيمة عتبة SSThresh البطيئة. نظرًا لأن قيمة ssthresh هي نصف قيمة النافذة عند اكتشاف الازدحام ، فقد يحدث فقدان الحزمة مع كل مضاعفة عندما يكون CWND أكبر من ssthresh. لذلك ، من الأفضل تعيين CWND على ssthresh ، مما سيؤدي إلى تحول TCP إلى وضع التحكم في الازدحام وبدء التشغيل البطيء.
الطريقة الأخيرة التي يمكن أن تنتهي بها البداية البطيئة هي إذا تم اكتشاف ثلاثة ACKs زائدة عن الحاجة ، فإن TCP يقوم بإعادة الإرسال السريع ويدخل حالة الاسترداد. (إذا لم يكن من الواضح سبب وجود ثلاث حزم ACK ، فسيتم شرحها بشكل منفصل في آلية إعادة الإرسال.)
تجنب الازدحام
عندما يدخل TCP دولة مكافحة الازدحام ، يتم تعيين CWND على نصف عتبة الازدحام SSThresh. هذا يعني أنه لا يمكن مضاعفة قيمة CWND في كل مرة يتم فيها استلام قطاع الحزم. بدلاً من ذلك ، يتم اعتماد نهج محافظ نسبيًا حيث تزداد قيمة CWND بمقدار MSS واحد فقط (طول قطاع الحزمة القصوى) بعد اكتمال كل ناقل حركة. على سبيل المثال ، حتى إذا تم الاعتراف بـ 10 شرائح حزم ، فإن قيمة CWND ستزداد فقط بمقدار MSS واحد. هذا نموذج نمو خطي وله أيضًا حد أعلى على النمو. عند حدوث فقدان الحزمة ، يتم تغيير قيمة CWND إلى MSS ، ويتم ضبط قيمة ssthresh على نصف CWND. أو سيوقف أيضًا نمو MSS عند استلام 3 استجابات ACK زائدة عن الحاجة. إذا كان لا يزال يتم استلام ثلاثة ACKs المتكررة بعد النصف من قيمة CWND ، يتم تسجيل قيمة ssthresh على أنها نصف قيمة CWND ويتم إدخال حالة الاسترداد السريعة.
الانتعاش السريع
في حالة الاسترداد السريعة ، تتم زيادة قيمة نافذة الازدحام CWND بمقدار واحد MSS لكل من ACK المتكرر ، أي ACK التي لا تصل بالتسلسل. هذا هو الاستفادة من شرائح الحزم التي تم نقلها بنجاح في الشبكة لتحسين كفاءة الإرسال قدر الإمكان.
عند وصول ACK من قطاع الحزمة المفقودة ، يقلل TCP من قيمة CWND ثم يدخل حالة تجنب الازدحام. هذا هو التحكم في حجم نافذة الازدحام وتجنب زيادة زيادة احتقان الشبكة.
في حالة حدوث مهلة بعد حالة مراقبة الازدحام ، تصبح حالة الشبكة أكثر خطورة وتهاجر TCP من حالة تجنب الازدحام إلى حالة البداية البطيئة. في هذه الحالة ، يتم تعيين قيمة نافذة الازدحام CWND على 1 MSS ، ويتم ضبط الحد الأقصى لطول قطاع الحزمة ، وقيمة عتبة SSTresh البطيئة على نصف CWND. الغرض من ذلك هو زيادة حجم نافذة الازدحام بعد تعافي الشبكة لموازنة معدل الإرسال ودرجة احتقان الشبكة.
ملخص
كبروتوكول نقل موثوق به ، يقوم TCP بتنفيذ نقل موثوق به حسب رقم التسلسل ، والإقرار ، والتحكم في إعادة الإرسال ، وإدارة الاتصال والتحكم في النوافذ. من بينها ، تتحكم آلية التحكم في التدفق في مقدار البيانات التي يرسلها المرسل وفقًا لسعة الاستلام الفعلية للمستقبل ، والتي تتجنب مشاكل ازدحام الشبكة وتدهور الأداء. تتجنب آلية التحكم في الازدحام حدوث احتقان الشبكة عن طريق ضبط مقدار البيانات المرسلة من قبل المرسل. ترتبط مفاهيم نافذة الازدحام ونافذة إرسال بعضها البعض ، ويتم التحكم في كمية البيانات في المرسل عن طريق ضبط حجم نافذة الازدحام ديناميكيًا. بداية بطيئة وتجنب الازدحام والانتعاش السريع هي الأجزاء الرئيسية الثلاثة من خوارزمية التحكم في الازدحام TCP ، والتي تعدل حجم نافذة الازدحام من خلال استراتيجيات مختلفة للتكيف مع قدرة الشبكة والازدحام.
في القسم التالي ، سنقوم بفحص آلية إعادة نقل TCP بالتفصيل. تعتبر آلية إعادة الإرسال جزءًا مهمًا من TCP لتحقيق انتقال موثوق. إنه يضمن نقل البيانات الموثوقة عن طريق إعادة إرسال البيانات المفقودة أو التالفة أو المتأخرة. سيتم تقديم مبدأ التنفيذ واستراتيجية آلية إعادة الإرسال وتحليلها بالتفصيل في القسم التالي. ابقوا متابعين!
وقت النشر: FEB-24-2025