پشته پروتکل
پشته پروتکل یا پشته شبکه (انگلیسی: Network stack) پیاده‌سازی مجموعه پروتکل شبکه‌های کامپیوتری یا یک خانواده پروتکل است. برخی از این اصطلاحات به‌صورت متقابل مورد استفاده قرار می‌گیرند اما بطور دقیق، مجموعه، تعریف پروتکل‌های ارتباطی است و پشته، پیاده‌سازی نرم‌افزار آنهاست.
پروتکل‌های تکی در یک مجموعه اغلب با یک هدف واحد در ذهن طراحی می‌شوند. این مدولار سازی طراحی و ارزیابی را ساده می‌کند. از آنجا که هر ماژول پروتکل معمولاً با دو ماژول دیگر ارتباط برقرار می‌کند، آنها معمولاً به عنوان لایه‌هایی در یک پشته پروتکل تصور می‌شوند. پایین‌ترین پروتکل همیشه با تعامل سطح پایین با سخت‌افزار ارتباطات سروکار دارد. هر لایه بالاتر قابلیت‌های اضافی را اضافه می‌کند. برنامه‌های کاربر معمولاً فقط با بالاترین لایه‌ها سر و کار دارند.
درپیاده سازی عملی، پشته‌های پروتکل اغلب به سه بخش اصلی تقسیم می‌شوند: رسانه، حمل و نقل و برنامه‌های کاربردی. یک سیستم عامل یا پلتفرم خاص اغلب دارای دو رابط نرم‌افزاری کاملاً تعریف شده‌است: یکی بین لایه‌های رسانه و حمل و نقل و دیگری بین لایه‌های حمل و نقل و برنامه‌ها. رابط رسانه به حمل و نقل تعریف می‌کند که چگونه نرم‌افزار پروتکل حمل و نقل از انواع رسانه و سخت‌افزار خاص استفاده کند و با درایور دستگاه در ارتباط است. به عنوان مثال، این سطح رابط چگونگی گفتگوی نرم‌افزار انتقال TCP / IP را با کنترل‌کننده رابط شبکه تعریف می‌کند. نمونه‌هایی از این رابط‌ها شامل ODI و NDIS در محیط Microsoft Windows و DOS است. رابط برنامه به حمل و نقل نحوه استفاده برنامه‌های کاربردی از لایه‌های حمل و نقل را تعریف می‌کند. به عنوان مثال، این سطح رابط، چگونگی صحبت یک برنامه مرورگر وب با نرم‌افزار حمل و نقل TCP / IP را تعریف می‌کند. نمونه‌هایی از این رابط‌ها شامل پریزهای Berkeley و System V STREAMS در محیط‌های یونیکس مانند و Winsock برای مایکروسافت ویندوز است.
T ~ ~ ~ T سه کامپیوتر B, A و C را در نظر بگیرید. A و B هر دو دارای تجهیزات رادیویی هستند و می‌توانند از طریق امواج هوایی با استفاده از یک پروتکل شبکه مناسب (مانند IEEE 802.11) ارتباط برقرار کنند.
B و C از طریق کابل به هم متصل می‌شوند و از آن برای تبادل داده استفاده می‌کنند (همچنان با کمک پروتکل مثلاً پروتکل نقطه به نقطه). اگرچه، هیچ‌یک از این دو پروتکل قادر به انتقال اطلاعات از A به C نیستند، زیرا این رایانه‌ها از نظر مفهومی در شبکه‌های مختلف هستند. برای اتصال آنها یک پروتکل بین شبکه ای لازم است.
می‌توان این دو پروتکل را با هم ترکیب کرد تا یک سوم قدرتمند را به وجود آورد که هم بر انتقال کابل و هم از طریق بی‌سیم تسلط دارد، اما برای هر ترکیب پروتکل احتمالی یک پروتکل عالی متفاوت لازم است. ساده‌تر است که پروتکل‌های پایه را کنار گذاشت و یک پروتکل را طراحی کرد که بتواند در بالای هر یک از آنها کار کند (پروتکل اینترنت نمونه ای است). ین باعث می‌شود هر یک از دو پروتکل پشته شود. پروتکل بین شبکه ای با هر یک از پروتکل‌های پایه به زبان ساده‌تر خود ارتباط برقرار خواهد کرد. پروتکل‌های پایه مستقیماً با یکدیگر صحبت نخواهند کرد.
درخواست به رایانه A برای ارسال یک قطعه داده به C توسط پروتکل بالایی انجام می‌شود، که (از هر طریق) می‌داند که C از طریق B قابل دستیابی است؛ بنابراین، به پروتکل بی‌سیم دستور می‌دهد که بسته داده را به B منتقل کند. در این کامپیوتر، کنترل‌کننده‌های لایه پایین، بسته را به پروتکل بین شبکه ای منتقل می‌کنند، که با تشخیص اینکه B مقصد نهایی نیست، دوباره عملکردهای سطح پایین را فراخوانی می‌کنند. این بار، برای ارسال داده به C از پروتکل کابل استفاده می‌شود. آنجا، بسته دریافت شده دوباره به پروتکل بالایی منتقل می‌شود، که (با در نظر گرفتن C مقصد) آن را به پروتکل یا برنامه بالاتر در C منتقل می‌کند.