یکی از مباحثی که تو مهندسی به نظرم خیلی مهمه abstraction و abstractionهای درسته. چطور جزئیات لایه پایین رو پنهان کنیم ولی کارایی رو حفظ کنیم و چطوری مدل سطح بالای دقیقتری طراحی کنیم.
یکی از چیزایی که به عنوان web developer احتمالا خیلی باهاش درگیر میشین استاندارد HTTPئه که در لایههای پایین از TCP (و یا جدیدا از UDP در http3) استفاده میکنه.
بخوام دقیق تر بگم، ما در زمان استفاده فقط به یک ریکوئست GET یا POST فکر میکنیم ولی اون زیر یه سوکت TCP باز میشه و یه سری اطلاعات ارسال و دریافت میشه. حالا یه چیزی مثل مرورگر که دهها درخواست به یک یا چند سرور باید بفرسته چی؟ چطوری و چند تا سوکت TCP باز میکنه؟ چه زمانی میبنده و آیا میشه از یک کانکشن TCP همزمان چند تا درخواست http رو عبور داد؟
توی http1.1 یه ایدههایی زده بودن ولی خیلی خوب نبود و عملا نمیشد یه سرور دیپلوی کرد که به درستی ازش استفاده کنه. این ویژگی که اسمش پایپلاینه میگه چند تا درخواست رو میشه از طریق یک tcp connection واحد فرستاد ولی پاسخها باید به ترتیب از سمت سرور بیاد.
از طرف دیگه توی http2 امکان multiplexing اضافه شد که شرط ترتیب پاسخها رو حذف میکنه و سرور میتونه هر پاسخی رو که آماده شد برای کلاینت بفرسته.
https://stackoverflow.com/questions/34478967/what-is-the-difference-between-http-1-1-pipelining-and-http-2-multiplexing
Post #3295
2.04K