TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 549 subscribers
Post #350 231
🔑 جنبه‌های اساسی HTTP
1️⃣کلا HTTP ساده است (HTTP is simple)

به طور کلی طوری طراحی شده است که برای انسان‌ها قابل خواندن باشد، حتی با پیچیدگی‌های اضافه شده در HTTP/2 از طریق کپسوله‌سازی پیام‌های HTTP در Frameها. 📖

پیام‌های HTTP را می‌توان توسط انسان خواند و درک کرد، که آزمایش را برای توسعه‌دهندگان آسان‌تر کرده و پیچیدگی را برای تازه‌واردها کاهش می‌دهد.

2️⃣ HTTP قابل توسعه است (HTTP is extensible)

با معرفی HTTP Headers در HTTP/1.0، این پروتکل به راحتی قابل توسعه و آزمایش است. 🛠 عملکرد جدید حتی می‌تواند از طریق توافق بین یک کلاینت و یک سرور در مورد معناشناسی (semantics) یک هدر جدید معرفی شود.

3️⃣ و HTTP بدون وضعیت است، اما بدون Session نیست (HTTP is stateless, but not sessionless)
بدون وضعیت (Stateless) است: هیچ ارتباطی بین دو درخواستی که به طور متوالی روی یک اتصال انجام می‌شوند، وجود ندارد.

اما در حالی که هسته HTTP خودش بدون وضعیت است، کوکی‌های HTTP اجازه استفاده از Sessionهای با وضعیت (Stateful Sessions) را می‌دهند. با استفاده از قابلیت توسعه هدر، کوکی‌های HTTP به گردش کار اضافه می‌شوند و امکان ایجاد Session در هر درخواست HTTP را برای به اشتراک گذاشتن زمینه (Context) یا همان وضعیت (State) فراهم می‌کنند. 🍪

4️⃣حالا نوبت HTTP و اتصالات (HTTP and connections)

اتصال در لایه انتقال کنترل می‌شود و بنابراین اساساً خارج از حوزه HTTP است. HTTP نیاز ندارد که پروتکل انتقال زیرین مبتنی بر اتصال باشد؛ بلکه تنها نیازمند این است که قابل اعتماد (reliable) باشد، یا پیام‌ها را از دست ندهد (حداقل در چنین مواردی خطا ارائه دهد).

از بین دو پروتکل انتقال رایج در اینترنت، TCP قابل اعتماد است و UDP نیست. بنابراین HTTP بر استاندارد TCP تکیه دارد که مبتنی بر اتصال است. 🌐

⚙️ بهینه‌سازی اتصالات

قبل از اینکه یک کلاینت و سرور بتوانند یک جفت درخواست/پاسخ HTTP را تبادل کنند، باید یک اتصال TCP ایجاد کنند، فرآیندی که نیاز به چندین رفت و برگشت (round-trips) دارد. 🐢

رفتار پیش‌فرض HTTP/1.0 این بود که یک اتصال TCP مجزا برای هر جفت درخواست/پاسخ HTTP باز کند. این کار در هنگام ارسال درخواست‌های متعدد در فاصله زمانی کوتاه، کارایی کمتری دارد.

برای کاهش این نقص، HTTP/1.1 پایپ‌لاینینگ (pipelining) (که پیاده‌سازی آن دشوار بود) و اتصالات پایدار (persistent connections) را معرفی کرد: اتصال TCP زیرین می‌تواند با استفاده از هدر Connection تا حدی کنترل شود.

بعد HTTP/2 یک گام فراتر رفت و با Multiplexing پیام‌ها روی یک اتصال واحد، به گرم نگه داشتن اتصال و کارایی بیشتر کمک کرد.

آزمایش‌هایی برای طراحی یک پروتکل انتقال بهتر که مناسب‌تر برای HTTP باشد، در حال انجام است. برای مثال، Google در حال آزمایش QUIC است که بر پایه UDP ساخته شده تا یک پروتکل انتقال قابل اعتمادتر و کارآمدتر را فراهم کند.
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →