آنچه در این مبحث می خوانید
پروتکل انتقال فرا متن (Hypertext Transfer Protocol یا HTTP) قلب تپنده وب مدرن است؛ پروتکلی که نحوه ارتباط مرورگرها با سرورها و تبادل اطلاعات را تعریف میکند. درک HTTP مستلزم شناخت لایههای زیربنایی شبکه و مفاهیم کلیدی مانند مدلهای مرجع شبکه و سیستم نام دامنه (DNS) است. این مقاله بهطور جامع به تشریح این مفاهیم و تشریح دقیق نحوه کارکرد پروتکل HTTP میپردازد.
پروتکل چیست؟
در سادهترین تعریف، یک پروتکل (Protocol) مجموعهای از قوانین، قراردادها و استانداردهاست که نحوه تبادل اطلاعات بین دو یا چند موجودیت در یک سیستم ارتباطی را تعریف میکند. این قوانین شامل فرمت پیامها، ترتیب ارسال آنها، و نحوه مدیریت خطاها و قطع ارتباطات هستند. در دنیای شبکهها، پروتکلها تضمین میکنند که دستگاههای مختلف، صرف نظر از سختافزار یا سیستمعاملشان، بتوانند بهطور مؤثر با یکدیگر صحبت کنند. پروتکلها در لایههای مختلفی کار میکنند، از لایههای فیزیکی (مانند نحوه ارسال سیگنال الکتریکی) تا لایههای کاربردی (مانند نحوه درخواست یک صفحه وب).
مدل OSI چیست؟
مدل اتصال متقابل سیستمهای باز (Open Systems Interconnection Model یا OSI) یک چارچوب مفهومی و مرجع استاندارد است که نحوه عملکرد یک سیستم ارتباطی شبکهای را در هفت لایه مجزا توصیف میکند. هدف اصلی مدل OSI، استانداردسازی عملکرد لایههای مختلف شبکه است تا تولیدکنندگان سختافزار و نرمافزار بتوانند محصولات سازگار با یکدیگر تولید کنند. این مدل به تفکیک پیچیدگیهای شبکه کمک کرده و امکان عیبیابی مؤثرتر را فراهم میآورد. هر لایه وظیفه خاصی را بر عهده دارد و خدمات مورد نیاز خود را از لایه زیرین دریافت و خدمات مورد نیاز لایه بالایی را فراهم مینماید.
شرح لایههای OSI
مدل OSI از هفت لایه تشکیل شده است که از پایینترین لایه فیزیکی تا بالاترین لایه کاربردی مرتب شدهاند:
- لایه فیزیکی (Physical Layer – لایه ۱): مسئول انتقال بیتهای خام (۰ و ۱) بر روی محیط فیزیکی (کابلها، فیبر نوری، امواج رادیویی) است. این لایه به ماهیت سیگنالدهی میپردازد.
- لایه پیوند داده (Data Link Layer – لایه ۲): مسئول انتقال قابهای داده (Frames) بین گرههای مجاور در یک شبکه محلی است. این لایه آدرسدهی فیزیکی (MAC Address) و کنترل خطا در سطح لینک را مدیریت میکند.
- لایه شبکه (Network Layer – لایه ۳): وظیفه اصلی آن مسیریابی (Routing) بستهها (Packets) از مبدأ تا مقصد نهایی در شبکههای مختلف است. آدرسدهی منطقی (IP Address) در این لایه تعریف میشود.
- لایه انتقال (Transport Layer – لایه ۴): این لایه مسئول انتقال دادهها بهصورت مطمئن و ترتیبی بین فرآیندهای در حال اجرا در دو میزبان نهایی است. پروتکلهای اصلی آن TCP (مطمئن) و UDP (غیرمطمئن و سریع) هستند.
- لایه نشست (Session Layer – لایه ۵): مسئول ایجاد، مدیریت و پایان دادن به نشستهای ارتباطی بین دو برنامه کاربردی است.
- لایه ارائه (Presentation Layer – لایه ۶): مسئول ترجمه، رمزنگاری و فشردهسازی دادهها است تا اطمینان حاصل شود که دادهها در لایه کاربردی گیرنده قابل فهم هستند (مثلاً تبدیل فرمتهای دادهای).
- لایه کاربرد (Application Layer – لایه ۷): بالاترین لایه است که مستقیماً با نرمافزار کاربر نهایی در ارتباط است. پروتکلهایی مانند HTTP، FTP و SMTP در این لایه عمل میکنند.
DNS چیست؟
سیستم نام دامنه (Domain Name System یا DNS) را میتوان “دفترچه تلفن اینترنت” نامید. از آنجا که انسانها بهخاطر سپردن آدرسهای IP عددی (مانند 192.0.2.1) را دشوار مییابند، DNS سیستمی سلسلهمراتبی برای ترجمه نامهای دامنه خوانا برای انسان (مانند google.com) به آدرسهای IP متناظر است که روترها و کامپیوترها برای هدایت ترافیک از آنها استفاده میکنند. هنگامی که شما یک URL را در مرورگر وارد میکنید، اولین گام، جستجو در سرورهای DNS برای یافتن آدرس IP سرور وبسایت مورد نظر است. این فرآیند شامل پرسوجو از سرورهای بازگشتی (Recursive Resolver)، سرورهای ریشه (Root Servers)، سرورهای دامنههای سطح بالا (TLDs) و در نهایت سرورهای نام معتبر (Authoritative Name Servers) است.
اتصال TCP چیست؟
پروتکل کنترل انتقال (Transmission Control Protocol یا TCP) یک پروتکل اصلی در لایه انتقال (لایه ۴ مدل OSI) است که خدمات ارتباطی مطمئن، مبتنی بر اتصال (Connection-Oriented) و با ترتیب تضمینشده را فراهم میکند. TCP پیش از ارسال دادهها، با استفاده از فرآیندی به نام “دستدهی سهگانه” (Three-Way Handshake)، یک اتصال منطقی بین دو میزبان برقرار میکند. این پروتکل تضمین میکند که تمام بستههای داده بهصورت کامل، بدون تکرار و به ترتیب صحیح به مقصد برسند. اگر بستهای گم شود، TCP بهطور خودکار درخواست ارسال مجدد آن را صادر میکند. HTTP در بالای TCP (و UDP) قرار میگیرد، اما برای تضمین صحت دادهها، از قابلیتهای اطمینانبخشی TCP بهره میبرد.
وب سرور چیست؟
وب سرور (Web Server) سیستمی است که از نرمافزار و سختافزار تشکیل شده است. سختافزار آن، کامپیوتری قدرتمند است که بهطور دائم به اینترنت متصل بوده و فایلهای وبسایت را ذخیره میکند. نرمافزار وب سرور (مانند Apache، Nginx یا IIS) مسئول دریافت درخواستهای HTTP از کلاینتها (مرورگرها)، پردازش این درخواستها (یا اجرای اسکریپتهای لازم) و ارسال پاسخهای HTTP (شامل صفحات HTML، تصاویر یا دادههای JSON) به کلاینت است. وب سرور به عنوان دروازهبان و مجری اصلی پروتکل HTTP در سمت سرور عمل میکند.
طریقه کار پروتکل HTTP
پروتکل HTTP بر اساس مدل درخواست/پاسخ (Request/Response) و بهطور معمول بدون حالت (Stateless) کار میکند و در لایه کاربرد (لایه ۷ OSI) مستقر است. فرآیند کامل کارکرد آن به شرح زیر است:
۱. شروع و اتصال (TCP Handshake):
کلاینت (مرورگر) ابتدا باید یک اتصال TCP مطمئن با وب سرور برقرار کند. این کار از طریق دستدهی سهگانه TCP (SYN، SYN-ACK، ACK) انجام میشود. اگر از HTTPS استفاده شود، در این مرحله یک TLS/SSL Handshake نیز برای رمزنگاری دادهها صورت میگیرد.
۲. ارسال درخواست HTTP (The Request):
کلاینت یک پیام درخواست (HTTP Request Message) به سرور ارسال میکند. این پیام شامل سه بخش اصلی است:
- خط درخواست (Request Line): شامل متد HTTP (مانند
GET,POST,PUT,DELETE)، مسیر منبع مورد نظر (/index.html) و نسخه پروتکل (HTTP/1.1). - سرآیندهای درخواست (Request Headers): شامل متادیتاهایی در مورد درخواست و کلاینت، مانند
Host(نام دامنه)،User-Agent(نوع مرورگر)،Accept-Languageو کوکیها. - بدنه درخواست (Request Body) (اختیاری): در متدهایی مانند
POSTبرای ارسال دادههای فرم یا فایل به سرور استفاده میشود.
۳. پردازش توسط سرور:
وب سرور درخواست دریافتی را پارس (تجزیه) میکند. بر اساس متد و مسیر درخواستی، سرور یکی از کارهای زیر را انجام میدهد:
- اگر درخواست ساده باشد (مانند
GETیک فایل استاتیک)، سرور فایل را از سیستم فایل خود بازیابی میکند. - اگر درخواست پیچیده باشد (مثلاً یک درخواست از یک اپلیکیشن جنگو)، سرور درخواست را به فرآیند سمت سرور (مانند سرور برنامهنویسی پایتون) منتقل میکند تا منطق کد اجرا شده و دادههای مورد نیاز از پایگاه داده استخراج گردند.
۴. ارسال پاسخ HTTP (The Response):
سرور پس از پردازش، یک پیام پاسخ (HTTP Response Message) به کلاینت ارسال میکند که این پیام نیز شامل سه بخش اصلی است:
- خط وضعیت (Status Line): شامل نسخه پروتکل، کد وضعیت HTTP (مانند
200 OK،404 Not Found،500 Internal Server Error) و یک پیام توصیفی مختصر. - سرآیندهای پاسخ (Response Headers): شامل متادیتایی در مورد پاسخ، مانند
Content-Type(نوع محتوا:text/htmlیاapplication/json)،Content-Length(اندازه محتوا)، و دستورالعملهای کش (Caching). - بدنه پاسخ (Response Body): این بخش حاوی دادههای واقعی است که کلاینت درخواست کرده است؛ معمولاً کد HTML یک صفحه وب یا دادههای خام.
۵. پایان و بستن اتصال:
پس از انتقال کامل بدنه پاسخ، اتصال TCP بسته میشود (بسته به نسخه HTTP، ممکن است اتصال برای درخواستهای بعدی مجدداً مورد استفاده قرار گیرد تا سربار برقراری اتصال مجدد کاهش یابد). مرورگر پس از دریافت پاسخ، محتوای بدنه را بر اساس سرآیندها تفسیر کرده و صفحه وب نهایی را برای کاربر رندر میکند.