SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs

تحليل SNI مقابل ALPN في مصافحات TLS. تشخيص فشل تفاوض HTTP/2، والرجوع h2 مقابل http/1.1، وملحقات ClientHello، واستجابات ServerHello ALPN، ومشكلات إنهاء الوكيل في Wireshark PCAPs.

tls alpn, http2 negotiation, clienthello, serverhello, h2, http/1.1 fallback, تحليل بي كاب

العديد من حوادث "HTTP/2 لا تعمل" هي في الحقيقة مشكلات تفاوض TLS ALPN. يبحث المستخدمون عن "TLS ALPN pcap"، و"HTTP2 الاحتياطي إلى HTTP/1.1"، و"ALPN h2 غير متفاوض عليه"، و"ClientHello ALPN Extension"، و"ServerHello المحدد بروتوكول"، و"لماذا يستخدم المتصفح HTTP/1.1" عندما يجب أن تدعم نقطة النهاية HTTP/2 لكن حركة المرور تتراجع.

تعتبر جراحة PCAP مفيدة لأن أدلة ALPN تعيش في مصافحة TLS. إذا كان الالتقاط يتضمن ClientHello وServerHello، فيمكنك غالبًا إثبات ما إذا كان العميل قد عرض h2، أو ما إذا كان الخادم قد حدده، أو ما إذا كان الوكيل قد أنهى TLS، أو ما إذا كان الاتصال لم تتح له فرصة للتفاوض على HTTP/2.

ما يفعله ALPN

يعنيALPN التفاوض على بروتوكول طبقة التطبيق. فهو يسمح للعميل والخادم بالاتفاق على بروتوكول التطبيق أثناء إعداد TLS.

قيم ALPN الشائعة:

  • h2 لـ HTTP/2 عبر TLS.
  • http/1.1 لـ HTTP/1.1.
  • معرفات البروتوكول الأخرى للأنظمة المتخصصة.

إذا لم يقدم العميل h2، فلن يتمكن الخادم من تحديده. إذا لم يحدد الخادم h2، فلن يستخدم الاتصال HTTP/2 حتى إذا كان الخادم يدعم HTTP/2 في مكان آخر.

الأعراض الشائعة

تظهر حالات فشل ALPN على النحو التالي:

  • يستخدم المتصفح HTTP/1.1 بدلاً من HTTP/2.
  • فشل اتصال gRPC.
  • يعمل CDN ولكن الأصل لا يعمل.
  • عكس بروتوكول تخفيض الوكيل.
  • يقوم موازن التحميل بإنهاء TLS وإعادة توجيه HTTP/1.1.
  • يقول تطبيق الهاتف المحمول خطأ في البروتوكول.
  • لا تظهر مقاييس الخادم أي حركة مرور H2.
  • يعمل HTTP/2 مع اسم مضيف واحد وليس اسم مضيف آخر.

غالبًا ما يتم تصحيح هذه الأعراض في طبقة HTTP، ولكن قد تكون الإجابة في تفاوض TLS.

ClientHello الأدلة

يمكن لـ ClientHello إظهار ما إذا كان العميل قد عرض ALPN والبروتوكولات التي أعلن عنها.

أسئلة مفيدة:

  • هل امتداد ALPN موجود؟
  • هل يشمل العرض h2؟
  • هل يشمل أيضًا "http/1.1"؟
  • هل SNI موجود وصحيح؟
  • ما هو إصدار TLS المقدم؟
  • هل يتم الالتقاط قبل أن ينهي الوكيل TLS؟

إذا كان h2 غائبًا عن ClientHello، فلن يتمكن الخادم من اختيار HTTP/2. قد يكون السبب هو تكوين مكتبة العميل، أو مكدس TLS القديم، أو خيار HTTP/2 المعطل، أو عميل وكيل يفتح اتصالاً جديدًا.

ServerHello الأدلة

يجب على جانب الخادم تحديد بروتوكول واحد من قائمة ALPN الخاصة بالعميل.

المشاكل:

  • يختار الخادم http/1.1 فقط.
  • يحذف الخادم استجابة ALPN.
  • فشلت مصافحة الخادم قبل تحديد ALPN.
  • عدم تطابق الشهادة أو SNI يوجه إلى مضيف ظاهري افتراضي.
  • يدعم TLS terminator h2 على الجانب العام ولكن ليس على الجانب العلوي.

يمكن أن تفصل أدلة الحزمة دعم الخادم عن التوجيه وسلوك الوكيل.

SNI وALPN معًا

غالبًا ما يكون SNI وALPN متصلين. قد يحدد اسم المضيف المحدد بواسطة SNI إعدادات الشهادة والمضيف الظاهري والبروتوكول التي سيتم تطبيقها.

مثال الفشل:

  • يقدم العميل h2.
  • يرسل العميل SNI خاطئًا.
  • يقوم الخادم بإرجاع الشهادة الافتراضية.
  • المضيف الظاهري الافتراضي لا يقوم بتمكين HTTP/2.
  • يعود الاتصال إلى http/1.1.

في هذه الحالة، المشكلة ليست "HTTP/2 معطل عالميًا". إنه توجيه اسم المضيف.

إنهاء الوكيل وموازن التحميل

غالبًا ما تؤدي عمليات النشر الحديثة إلى تقسيم TLS:

client -> CDN or load balancer -> reverse proxy -> origin

gRPC and ALPN

For gRPC troubleshooting, preserve:

Fallback is not always failure

Debug checklist

Use this workflow:

Final diagnosis

<!-- pcap-localized-evidence-foundation-v1:start -->

إجابة مبنية على الحزم لموضوع «SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs»

الإجابة المباشرة هي أن label في أداة التحليل أو رسالة التطبيق لا تكفي لتحديد السبب. ابدأ بنقطة الالتقاط واتجاه التدفق، ثم أثبت آخر حد بروتوكول نجح وأول حد فشل. في «SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs» يجب أن يستطيع مراجع آخر العثور على packet أو gap أو interval الذي يدعم الجملة، وأن يعرف ما الذي يمكن أن ينفيها.

ضع الالتقاط على خريطة المسار

سجّل client وserver وأي proxy أو load balancer أو NAT أو firewall بينهما. اكتب interface ومكان الالتقاط والساعة ونظام التشغيل وهل ترى الاتجاهين. capture قرب client يثبت ما وصل إلى client، لكنه لا يثبت أن server لم يرسل شيئًا. capture قرب server يثبت الإرسال عند تلك النقطة، لكنه لا يثبت عبور المسار. إذا اختلف ملفان من نقطتين، صحّح clock offset وطابق flow tuple وTCP sequence أو معرف المعاملة قبل مقارنة الزمن.

تحقق من سلامة القياس: snap length، dropped packets، offload، capture filter،حدود ring buffer ووقت البدء. checksum غير الصحيح في capture على host قد يكون offload artifact. segment كبير قد يكون نتيجة GRO/TSO وليس packet واحدًا على السلك. packet غائب من ملف محدود لا يصبح network loss قبل إثبات أن نقطة القياس كان يجب أن تراه.

اقرأ الحدود بالترتيب

الحد دليل النجاح دليل الفشل المفيد
Link وIP الاتجاه والعناوين والمسار متسقة ARP/NDP مفقود، ICMP، MTU أو asymmetry
TCP SYN وSYN-ACK وACK مع sequence صحيح retransmission أو RST أو zero window أو timeout
TLS ClientHello وServerHello وتقدم handshake alert أو SNI/ALPN/certificate boundary
التطبيق request كامل ورد مرتبط به status أو gap أو إغلاق قبل الرد
تجربة المستخدم زمن الاستجابة أو failure window stall مرتبط بحد مثبت

توقف عند أول حد بلا دليل نجاح. إذا لم يكتمل TCP، لا تبدأ بتفسير HTTP. إذا وصل request إلى proxy ولم يظهر على upstream، فالحد يقع داخل proxy أو مساره. إذا وصل إلى upstream ولم يظهر response قبل policy timeout، افصل application delay عن فقد network بالنظر إلى ACK والتقدم في bytes.

افصل الملاحظة عن الفرضية

الملاحظة قابلة للإشارة: «أرسل client bytes حتى sequence محدد، ثم كرر المرسل segment ثلاث مرات ولم يصل ACK متقدم عند نقطة الرصد». الفرضية هي «المسار أسقط segment». قد تنفيها capture أخرى ترى ACK أو تظهر أن نقطة الالتقاط فقدت records. اكتب لكل فرضية دليلًا مؤيدًا ودليلًا يمكن أن يرفضها.

لا تجعل كلمة retransmission أو duplicate ACK حكمًا على المالك. reordering وloss وcapture artifact وreceiver delay قد تنتج علامات متشابهة. اربط direction وsequence وACK وSACK وRTT وwindow ووقت التطبيق. وفي DNS أو DHCP اربط transaction ID والعناوين والمحاولات، وفي HTTP اربط request/response، وفي TLS اربط اتجاه handshake بدل الاعتماد على لون packet.

حافظ على الأصل قبل التحرير

احسب checksum للملف الأصلي واجعله read-only في القضية. أنشئ working copy للتصفية والقص وإخفاء البيانات. سجّل كل عملية: المدخل، نوع التحويل، وقت التنفيذ، packet count قبل وبعد، checksum الناتج وسبب التغيير. إذا عدّلت timestamp أو حذفت packet، اذكر أن النسخة لم تعد مناسبة لقياس بعض التوقيت أو التسلسل.

عند إخفاء البيانات، استبدل addresses وidentifiers بصورة ثابتة حتى يبقى نفس endpoint قابلًا للتتبع. لا تحذف ports أو directions أو lengths إذا كانت ضرورية للحكم. افصل secret mapping عن التقرير المشترك. استخدم نطاق الالتقاط والتصدير لمراجعة حدود الملف، ونظرة PCAP Surgery العامة لتسليم نسخة مشتقة مع سجل قابل للتدقيق.

QA قبل نشر الإجابة

اسأل: هل العنوان والجواب يتناولان flow نفسه؟ هل كل زمن يذكر الساعة المستخدمة ونقطتي القياس؟ هل أول failure boundary محدد؟ هل alternative explanation مكتوبة؟ هل يمكن إعادة الاختبار بتغيير واحد؟ هل الأصل محفوظ؟ الإجابة الجيدة تحدد أيضًا حدودها: «يثبت هذا الملف سلوكًا قرب client خلال interval محدد؛ لا يثبت ما حدث داخل server».

كلمات Semrush لا تُوزع آليًا على المقالات. العبارة العامة الموثقة PCAP analyzer يملكها مسار المنتج وحده؛ هذه الصفحة تبقى على سؤالها التقني ولا تدعي volume أو KD غير موجود.

<!-- pcap-localized-evidence-foundation-v1:end --><!-- multilingual-blog-closeout:start -->

إجابة مباشرة وحدود القبول

الإجابة المختصرة عن «SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs» هي: تحليل SNI مقابل ALPN في مصافحات TLS. تشخيص فشل تفاوض HTTP/2، والرجوع h2 مقابل http/1.1، وملحقات ClientHello، واستجابات ServerHello ALPN، ومشكلات إنهاء الوكيل في Wireshark PCAPs. تعامل مع هذه العبارة كنتيجة يجب التحقق منها، لا كوعد ينطبق على كل إدخال أو جهاز أو مشروع أو بيئة. النتيجة المكتملة تسجل الحالة الأولية والإجراء الدقيق والمخرج المرئي والشرط الذي يثبت اكتمال المهمة في PCAP Surgery.

إجراء يبدأ من الأدلة

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

نقطة التحقق 1: SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs

حوّل «SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs» إلى عبارة نجاح أو فشل يستطيع شخص آخر تكرارها. حدد ما يجب أن يظهر وما يجب أن يغيب وما إجراء الاستعادة الآمن. اترك المشروع أو الالتقاط الأصلي دون تغيير حتى تجتاز النسخة المصححة الاختبار نفسه.

نقطة التحقق 2: تحليل SNI مقابل ALPN في مصافحات TLS. تشخيص فشل تفاوض HTTP/2، والرجوع h2 مقابل http/1.1، وم

تعامل مع «تحليل SNI مقابل ALPN في مصافحات TLS. تشخيص فشل تفاوض HTTP/2، والرجوع h2 مقابل http/1.1، وملحقات ClientHello، واستجابات ServerHello ALPN، ومشكلات إنهاء» كبوابة قبول مستقلة لموضوع «SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs». سجل الحالة قبل الإجراء وأول تغير ظاهر والحالة النهائية. إذا اختلفت النتيجة عن الهدف الموصوف، فارجع إلى آخر نقطة مؤكدة بدل الاستمرار اعتمادًا على افتراضات.

نقطة التحقق 3: ما يفعله ALPN

حوّل «ما يفعله ALPN» إلى عبارة نجاح أو فشل يستطيع شخص آخر تكرارها. حدد ما يجب أن يظهر وما يجب أن يغيب وما إجراء الاستعادة الآمن. اترك المشروع أو الالتقاط الأصلي دون تغيير حتى تجتاز النسخة المصححة الاختبار نفسه.

نقطة التحقق 4: الأعراض الشائعة

تعامل مع «الأعراض الشائعة» كبوابة قبول مستقلة لموضوع «SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs». سجل الحالة قبل الإجراء وأول تغير ظاهر والحالة النهائية. إذا اختلفت النتيجة عن الهدف الموصوف، فارجع إلى آخر نقطة مؤكدة بدل الاستمرار اعتمادًا على افتراضات.

نقطة التحقق 5: ClientHello الأدلة

حوّل «ClientHello الأدلة» إلى عبارة نجاح أو فشل يستطيع شخص آخر تكرارها. حدد ما يجب أن يظهر وما يجب أن يغيب وما إجراء الاستعادة الآمن. اترك المشروع أو الالتقاط الأصلي دون تغيير حتى تجتاز النسخة المصححة الاختبار نفسه.

نقطة التحقق 6: ServerHello الأدلة

تعامل مع «ServerHello الأدلة» كبوابة قبول مستقلة لموضوع «SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs». سجل الحالة قبل الإجراء وأول تغير ظاهر والحالة النهائية. إذا اختلفت النتيجة عن الهدف الموصوف، فارجع إلى آخر نقطة مؤكدة بدل الاستمرار اعتمادًا على افتراضات.

نقطة التحقق 7: SNI وALPN معًا

حوّل «SNI وALPN معًا» إلى عبارة نجاح أو فشل يستطيع شخص آخر تكرارها. حدد ما يجب أن يظهر وما يجب أن يغيب وما إجراء الاستعادة الآمن. اترك المشروع أو الالتقاط الأصلي دون تغيير حتى تجتاز النسخة المصححة الاختبار نفسه.

نقطة التحقق 8: إنهاء الوكيل وموازن التحميل

تعامل مع «إنهاء الوكيل وموازن التحميل» كبوابة قبول مستقلة لموضوع «SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs». سجل الحالة قبل الإجراء وأول تغير ظاهر والحالة النهائية. إذا اختلفت النتيجة عن الهدف الموصوف، فارجع إلى آخر نقطة مؤكدة بدل الاستمرار اعتمادًا على افتراضات.

نقطة التحقق 9: gRPC and ALPN

حوّل «gRPC and ALPN» إلى عبارة نجاح أو فشل يستطيع شخص آخر تكرارها. حدد ما يجب أن يظهر وما يجب أن يغيب وما إجراء الاستعادة الآمن. اترك المشروع أو الالتقاط الأصلي دون تغيير حتى تجتاز النسخة المصححة الاختبار نفسه.

نقطة التحقق 10: Fallback is not always failure

تعامل مع «Fallback is not always failure» كبوابة قبول مستقلة لموضوع «SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs». سجل الحالة قبل الإجراء وأول تغير ظاهر والحالة النهائية. إذا اختلفت النتيجة عن الهدف الموصوف، فارجع إلى آخر نقطة مؤكدة بدل الاستمرار اعتمادًا على افتراضات.

مصفوفة القبول

النقطة الدليل الواجب حفظه شرط النجاح
SNI vs ALPN: تحليل مصافحة TLS وتفاوض HTTP/2 في Wireshark PCAPs الحالة الأولية وإجراء واحد والحالة الناتجة يستطيع مشغل ثان تكرار النتيجة
تحليل SNI مقابل ALPN في مصافحات TLS. تشخيص فشل تفاوض HTTP/2، والرجوع h2 مقابل http/1.1، وملحقات ClientHello، واستجابات S الحالة الأولية وإجراء واحد والحالة الناتجة يستطيع مشغل ثان تكرار النتيجة
ما يفعله ALPN الحالة الأولية وإجراء واحد والحالة الناتجة يستطيع مشغل ثان تكرار النتيجة
الأعراض الشائعة الحالة الأولية وإجراء واحد والحالة الناتجة يستطيع مشغل ثان تكرار النتيجة
ClientHello الأدلة الحالة الأولية وإجراء واحد والحالة الناتجة يستطيع مشغل ثان تكرار النتيجة
ServerHello الأدلة الحالة الأولية وإجراء واحد والحالة الناتجة يستطيع مشغل ثان تكرار النتيجة

عزل الفشل والاستعادة والتسليم

توقف عند أول حد يفشل. احتفظ بالمصدر أو المشروع أو الجلسة أو الالتقاط، وأنشئ نسخة قبل التحرير المدمر، وغيّر متغيرًا واحدًا في كل تجربة. إعادة سير واسع بعد عدة تغييرات قد تعطي نتيجة مختلفة من دون تفسير السبب.

افصل غياب الدليل عن دليل الغياب. قد تعني الشاشة الفارغة إدخالًا أو نطاقًا أو مرشحًا أو صلاحية أو جهازًا أو فترة أو حالة مشروع خاطئة. أثبت مسار الالتقاط أو الاستيراد قبل تفسير decoder أو المحرر أو التقرير أو التصدير.

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

أسئلة وأجوبة

ما أسرع بداية موثوقة؟

استخدم أصغر حالة ممثلة، واكتب النتيجة المتوقعة، وغيّر متغيرًا واحدًا. أثبت المسار الأساسي قبل إضافة المرشحات أو التأثيرات أو التعديلات أو الأتمتة أو مصدر أكبر.

ما الأدلة التي ينبغي حفظها؟

احتفظ بهوية الإدخال والإصدار والمنصة والإعدادات والإجراء الدقيق وأول انتقال غير متوقع والمخرج النهائي. أغلق المشروع أو الجلسة أو التقرير أو التصدير وأعد فتحه.

متى يجب تكرار الإجراء؟

كرره بعد تغيير مؤثر في التطبيق أو النظام أو driver أو firmware أو النموذج أو المصدر أو سير العمل. احتفظ بالحالة المقبولة السابقة كأساس مقارنة دون تعديل.

متى تصبح المهمة جاهزة للتسليم؟

عندما يستطيع شخص مخول آخر تحديد الإدخال وتكرار الإجراء ورؤية النتيجة نفسها وفهم القيود وفتح الأثر المحفوظ دون الاعتماد على حالة محلية غير موثقة.

أدلة مرتبطة

تغطي الصفحات التالية باللغة نفسها المراحل المجاورة من دون تغيير المالك القانوني لهذا الموضوع:

<!-- multilingual-blog-closeout:end -->