<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات برنامه نویسی یه مقدار عمیق تر</title>
        <link>https://virgool.io/Programming-in-deep/feed</link>
        <description>برنامه نویسی یه مقدار عمیق تر</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:48:18</pubDate>
        <image>
            <url>https://files.virgool.io/</url>
            <title>برنامه نویسی یه مقدار عمیق تر</title>
            <link>https://virgool.io/Programming-in-deep</link>
        </image>

                    <item>
                <title>فرق بین  http/1 , http/2, http/3</title>
                <link>https://virgool.io/Programming-in-deep/%D9%81%D8%B1%D9%82-%D8%A8%DB%8C%D9%86-http1-http2-http3-foepebnsr1ng</link>
                <description>مدت کوتاهی است که  http/3   توسط IETF معرفی شده  شاید بپرسید http/2  چی بود که حالا ورژن سومش اومده ! :) خب اگه از  grpc  تو پروژه هاتون  استفاده کردید  باید بگم که بصورت پیش فرض  از http/2 استفاده کردید .اصلا مشکل http/1 چی بود که نسخه دومش معرفی شد ؟ مشکل توی Lost شدن packet ها بود  که تحت عنوان  Head-of-line-blocking  شناخته  میشه ، در نسخه اول  http   که هنوز هم به طور گسترده در جهان وب استفاده میشه ،    هر ریکوئست (مثلا  درخواست واکشی فایل css  یا   یا فراخوانی یک EndPoint)   بصورت chunk   به وب سرور ارسال میشه و منتظر پاسخ میمونه ،  این رفت و برگشت packet رو بهش میگن  Round-trip . وقتی که تمام Packet  ها به درستی دریافت شدن ، وب سرور این ها رو  پردازش میکنه و متوجه محتوای ریکوئست میشه حالا  اگر در این بین یک packet  تو اقیانوس گم بشه یا  در اثر رعد و برق از بین بره وب سرور منتظر اون یک packet  لاست شده میمونه  که این رو بهش میگن Head-of-line-blocking.توی  http/2  دیتا این بار بصورت Chunk  شده ارسال نمیشه ،  یک تکنیکی به کار میبره به اسم Multiplexing  هدرها رو و دیتا رو فشرده و سریالایز میکنه  و کل ریکوئست رو بصورت دو تا frame   کاملا مستقل ارسال میکنه : Header-Frame و  Data-frame  که چون کپسوله هستند مشکل لاست شدن پکت ها رو نداریم ، کل فرایند ریکوئست و ریسپانس در یک  Stream  رخ میده .این جوری میشه که سربار سرور کم میشه و سرعت اپلیکیشن ما مث موشک میشه !   واین دلیلی هست که میشه با  grpc  اپلکیشن  Real-time  (مثلا چت دو طرفه) نوشت . عکس زیر شاید منظور حرفای بالا رو بهتر برسونه :تفاوت  http/1   و  http/2اما هرکسی برای خودش برنامه دارد، تا وقتی که اولین مشت می‌خورد توی فکش! بازیکن واقعی، از آن لحظه به بعد مشخص می‌شود! (مایک تامسون - مشت زن آمریکایی) مایک تامسون میگوید وقتی اولین مشت به فک مان خورد، به‌سرعت به فکر کوچک‌سازی یا رهاسازی اهداف و آرزوهایمان می‌افتیم.مشکل  http/2 این هست که با افزایش ازدحام شبکه  اگر این بین یک stream  لاست بشه  کل ریکوئست هم برای سرور قابل شناسایی نیست  ! بر خلاف ورژن قبل تر که منتظر میموند تا packet  لاست شده ، دریافت شود.در  http/1 , http/2     از پروتکل  tcp  استفاده میشه اما در http/3 از  udp  استفاده میشه  خب تفاوت این دو در چیه : یه زمانی که دوره نتورک پلاس رو میدیدم  استاد یه چیزی گفت دیگه فرق این دو رو تا ته متوجه شدم :         Tcp مثل تلفن میمونه ، و Udp مثل  رادیو و تلویزیون : یعنی چی ؟  وقتی که با تلفن تماس بگیری باید  حتما و الزاما یه نفر باشه اونور خط که جوابت رو بده، ولی در رادیو   یا تلویزیون ،  فرستنده کاری به گیرنده نداره و پیامش رو ارسال میکنه هر کس روشن بود میگیره .به زبان فنی تر : Udp  پیام رو BroadCast   میکنه  اما Tcp از روش Peer-to-Peer   استفاده میکنه (داریم در مورد لایه های شبکه صحبت میکنیم )  ، خب روی همین اصل کلی دیگه از تفاوت هاشون هم قابل تشخیص میشه مثلا سرعت Udp خیلی از tcp بیشتر هست (به دلیل اینکه برای دریافت پاسخ صبر نمیکنه)   و خیلی موارد دیگه که از حوصله این بحث خارج میشه .    یه نکته مهم اینه که http/3 امکان فرخوانی از لوکال و LoopbackAddress رو نداره                                                                                            htpp/2  تو سال 2018 معرفی شد .  http/3  تازه معرفی شده  و  Preview  هست  . کتابخونه ها  و فریمورک های و سیستم عامل های زیر ازش ساپورت میکنن : Windosws 11 or windows-Server 2022  C#   . NET 6 Python – http3 and aioquicRust – quiche, neqo, and quinnC – nghttp3 and lsquicGo – quicgoJavaScript – Node.js</description>
                <category>برنامه نویسی یه مقدار عمیق تر</category>
                <author>سیاوش بشارتی نیا</author>
                <pubDate>Mon, 11 Oct 2021 11:45:27 +0330</pubDate>
            </item>
            </channel>
</rss>