**شیوه‌نامه ارتباطات**، **قرارداد ارتباطات** یا **پروتکل ارتباطات** در شبکه‌های رایانه‌ای به مجموعه قوانینی گفته می‌شود که چگونگی ارتباطات را قانونمند می‌کند. نقش پروتکل در کامپیوتر مانند نقش زبان برای انسان است. برای مطالعهٔ یک کتاب نوشته‌شده به فارسی باید خواننده شناخت مناسبی از زبان فارسی داشته باشد. برای ارتباط موفقیت‌آمیز دو دستگاه در شبکه، باید هر دو دستگاه از یک پروتکل یکسان استفاده کنند.

### تاریخچه

اصطلاح *پروتکل* در زمینه تبادل داده‌ها اولین بار در یک تفاهم‌نامه استفاده شد. تفاهم‌نامه‌ای که با عنوان *پروتکل برای استفاده در شبکه تبادل داده NPL* توسط راجر اسکانتلبوری و کیت بارتلت در آوریل ۱۹۶۷ نوشته شده‌است.

در آرپانت، در سال ۱۹۶۹، شروع ارتباط هاست به هاست با پروتکل ۱۸۲۲ بود که نحوهٔ انتقال پیام به یک IMP را تعریف می‌کرد. برنامه کنترل شبکه برای ARPANET برای اولین بار در سال ۱۹۷۰ اجرا شد. رابط NCP با پیاده‌سازی پروتکل‌های ارتباطی سطح بالاتر به نرم‌افزار کاربردی اجازه می دهد تا در سراسر ARPANET متصل شود. این یک نمونهٔ اولیه از مفهوم لایه بندی پروتکل بود.

تحقیقات شبکه در اوایل دهه ۱۹۷۰ توسط رابرت ای. کان و وینت سرف منجر به تدوین برنامه کنترل انتقال (TCP) شد. مشخصات RFC&nbsp;675  آن توسط Cerf با Yogen Dalal و Carl Sunshine در دسامبر ۱۹۷۴ نوشته شده‌است، درحالی که هنوز که یک طراحی یکپارچه است.

گروه کاری شبکه بین‌المللی با یک استاندارد دیتاگرام بدون اتصال موافقت کرد که در سال ۱۹۷۵ به CCIT ارائه شد اما توسط ITU یا ARPANET پذیرفته نشد. تحقیقات بین‌المللی، علی‌الخصوص کارهای Rémi Després، به توسعه استاندارد X.25، مبتنی بر مدارهای مجازی توسط ITU-T در ۱۹۷۶، کمک کرد. تولیدکنندگان رایانه پروتکل‌های اختصاصی مانند معماری شبکه سیستم‌ها ی (IBM(SNA، شرکت تجهیزات دیجیتال DECent و سیستم‌های شبکه زیراکس را ایجاد کردند.

ساختار TCP به عنوان پشته پروتکل مدولار دوباره طراحی شد. در اصل به آن *IP / TCP گفته می‌شد و* در سال ۱۹۸۲ در SATNET و در ژانویه ۱۹۸۳ بر روی ARPANET نصب شد. همان‌طور که در RFC&nbsp;1122  وRFC&nbsp;1123  ذکر شده‌است، توسعهٔ یک مجموعه پروتکل کامل تا سال ۱۹۸۹، پایه و اساس رشد TCP / IP را به عنوان یک مجموعه پروتکل جامع به عنوان جزء اصلی اینترنت در حال ظهور بنا نهاد.

کار بین‌المللی در مورد یک مدل مرجع برای استانداردهای ارتباطی منجر به مدل OSI شد که در سال ۱۹۸۴ منتشر شد. برای مدتی در اواخر دهه ۱۹۸۰ و اوایل دهه ۱۹۹۰، مهندسان، سازمان‌ها و کشورها درمورد اینکه کدام استاندارد، مدل OSI یا مجموعه پروتکل اینترنت ، بهترین و قوی‌ترین شبکه‌های رایانه ای را ایجاد می‌کند، به دو قطب تقسیم شدند.

### مفهوم

اطلاعاتی که از طریق شبکه یا رسانه‌های دیگر بین دستگاه‌ها رد و بدل می‌شوند، طبق قوانین و قراردادهایی اداره می‌شوند که می‌توانند در جزئیات پروتکل ارتباطات تنظیم شوند. ماهیت ارتباطات، داده‌های واقعی رد و بدل شده و هرگونه رفتار وضعیتمحور، توسط این مشخصات (جزئیات پروتکل ارتباطات) تعریف می‌شود. در سیستم‌های محاسبات دیجیتال، قوانین را می‌توان با الگوریتم‌ها و ساختارهای داده بیان کرد. پروتکل‌ها برای ارتباط الگوریتم‌ها یا زبان‌های برنامه‌نویسی برای محاسبات هستند.

سیستم عامل‌ها معمولاً مجموعه ای از فرایندهای هماهنگ را در اختیار دارند که داده‌های مشترک را برای برقراری ارتباط با یکدیگر دستکاری می‌کنند. این ارتباط توسط پروتکل‌های قابل درک اداره می‌شود، که می‌توانند در خودِ کد فرایند قرار گیرند. در مقابل، چون حافظه مشترک وجود ندارد، سیستم‌های ارتباطی باید با استفاده از یک رسانه انتقال مشترک با یکدیگر ارتباط برقرار کنند. انتقال لزوماً قابل اعتماد نیست و ممکن است سیستم‌های متفاوت از سخت‌افزار یا سیستم عامل‌های مختلفی استفاده کنند.

برای پیاده‌سازی پروتکل شبکه، ماژول‌های پروتکلِ نرم‌افزار با یک چارچوب پیاده‌سازی شده روی سیستم عامل ماشین ارتباط برقرار می‌کنند. این چارچوب عملکرد شبکه سیستم عامل را پیاده‌سازی می‌کند. وقتی الگوریتم‌های پروتکل به زبان برنامه‌نویسی قابل حمل بیان می‌شوند، ممکن است نرم‌افزار پروتکل از سیستم عامل مستقل شود. معروف‌ترین چارچوب‌ها مدل TCP / IP و مدل OSI هستند.

در زمان توسعه اینترنت ، لایه بندی انتزاعی به عنوان یک طراحی موفق برای طراحی کامپایلر و سیستم عامل اثبات شده بود و با توجه به شباهت‌های بین زبان‌های برنامه‌نویسی و پروتکل‌های ارتباطی، برنامه‌های شبکه یکپارچه در ابتدا به پروتکل‌های همکاری تجزیه می‌شدند. این باعث ایجاد مفهوم پروتکل‌های لایه ای می‌شود که امروزه پایهٔ طراحی پروتکل را تشکیل می‌دهد.

سیستم‌ها معمولاً از یک پروتکل تکی برای انتقال داده استفاده نمی‌کنند. بلکه از مجموعه ای از پروتکل‌ها استفاده می‌کنند، که بعضاً مجموعه پروتکل نامیده می‌شود. برخی از شناخته شده‌ترین مجموعه‌های پروتکل TCP / IP , IPX / SPX، X.25، AX.25 و AppleTalk هستند.

پروتکل‌ها را می‌توان بر اساس عملکرد در گروه‌ها تقسیم کرد، به عنوان مثال، یک گروه از پروتکل‌های حمل و نقل وجود دارد. ویژگی‌ها بر روی لایه‌ها ترسیم می‌شوند، هر لایه یک کلاس متمایز از مشکلات مربوط به خود را حل می‌کند. به عنوان مثال: برنامه‌های کاربری، حمل و نقل، اینترنت و توابع رابط شبکه. برای انتقال پیام، باید از هر لایه یک پروتکل انتخاب شود. انتخاب پروتکل بعدی با ادامه دادن پیام با انتخاب پروتکل برای هر لایه انجام می‌شود.

نیازهای پایه
------------

دستیابی به داده‌ها از طریق شبکه، تنها بخشی از مشکل یک پروتکل است. داده‌های دریافت شده باید ارزیابی شود، بنابراین یک پروتکل باید شامل قوانینی باشد که داده را توصیف می‌کند. این نوع قوانین بیان کنندهٔ *نحوه ی* ارتباط است. قوانین دیگر تعیین می‌کنند که آیا داده‌ها برای زمینه ای که در آن مبادله انجام می‌شود، معنی دار هستند یا خیر. این نوع قوانین بیان کنندهٔ *معنادار بودن* ارتباطات است.

پیام‌ها برای برقراری ارتباط در سیستم‌های ارتباطی ارسال و دریافت می‌شوند؛ بنابراین پروتکل‌ها باید قوانین حاکم بر انتقال را مشخص کنند. به‌طور کلی، بسیاری از موارد زیر باید مورد توجه قرار گیرند:

قالبهای داده برای تبادل داده
پیام‌های بیتی دیجیتالی رد و بدل می‌شوند. بیت‌ها در قسمت‌ها تقسیم می‌شوند و هر فیلد اطلاعات مربوط به پروتکل را حمل می‌کند. از نظر مفهومی پیام بیتی به دو قسمت *header* و *payload تقسیم می‌شود*. پیام واقعی در payload حمل می‌شود. قسمت header شامل فیلدهای مرتبط با عملکرد پروتکل است. پیام بیتی که طولانی‌تر از حداکثر واحد انتقال (MTU) باشد، به قطعات مناسب تقسیم می‌شوند.
قالب‌های آدرس برای تبادل داده
آدرس‌ها برای شناسایی فرستنده و گیرنده(ها) استفاده می‌شوند. آدرس‌ها در ناحیه هدرِ پیامِ بیتی هستند، و به گیرنده‌ها اجازه می‌دهد تا تشخیص دهند که پیام‌ها مورد توجه هستند یا خیر، باید پردازش شوند یا باید از آنها صرف نظر شود. ارتباط بین فرستنده و گیرنده با استفاده از یک جفت آدرس *(آدرس فرستنده، آدرس گیرنده) قابل شناسایی است*. معمولاً به ازای برخی از مقادیر، آدرس معنی خاصی می‌دهد؛ مثلاً اگه مقدار همهٔ اجزای آدرس برابر عدد ۱ باشد، به معنی همه گیر بودن پیام است؛ بنابراین ارسال به این آدرس باعث می‌شود که پیام به همهٔ اجزاء شبکه محلی ارسال شود. قوانینی که معنی‌های مقادیر متفاوت آدرس را توصیف می‌کنند در مجموع یک *طرح آدرس دهی هستند*.
تطبیق آدرس
گاهی پروتکل‌ها باید یک آدرس از یک طرح را به آدرس در طرح دیگری تبدیل کنند؛ مثلاً تبدیل یک آدرس IP به یک آدرس MAC اترنت. از این به عنوان تطبیق *آدرس یاد می‌شود*.
مسیریابی
گاهی سیستم‌ها مستقیماً به هم متصل نیستند. در این حالت سیستم‌های واسطه ای که در طول *مسیر* به گیرنده(ها) مورد نظر وجود دارند که فرستنده برای ارسال داده، ابتدا داده را به این واسطه‌ها ارسال می‌کند و واسطه‌ها نیز پیام را تا گیرنده ارسال می‌کنند باید پیام‌ها را از طرف فرستنده ارسال کنند. در اینترنت ، شبکه‌ها با استفاده از روترها متصل می‌شوند. به اتصال شبکه‌ها از طریق روترها کار *اینترنتی گفته می‌شود*.
تشخیص خطاهای انتقال
شناسایی خطا در شبکه‌هایی که امکان خراب شدن داده‌ها وجود دارد، ضروری است. در یک رویکرد مشترک، CRC ناحیه داده به انتهای بسته‌ها اضافه می‌شود و این امکان را برای گیرنده فراهم می‌کند تا تفاوت‌های ناشی از فساد را تشخیص دهد. گیرنده بسته‌ها را در مورد اختلاف CRC رد می‌کند و به نوعی برای انتقال مجدد ترتیب می‌دهد.
سپاسگزاریها
تأیید دریافت صحیح بسته‌ها برای ارتباطات اتصال محور مورد نیاز است. تقدیرنامه‌ها از گیرنده‌ها به فرستنده‌های مربوط ارسال می‌شوند.
از دست دادن اطلاعات - وقفه و تلاش مجدد
بسته‌ها ممکن است در شبکه گم شوند یا در انتقال به تأخیر بیفتند. برای کنار آمدن با این مسئله، تحت برخی پروتکل‌ها، یک فرستنده ممکن است در مدت زمان معینی انتظار دریافت صحیح از گیرنده را داشته باشد؛ بنابراین، در مهلت زمانی، فرستنده ممکن است نیاز به انتقال مجدد اطلاعات داشته باشد.  در صورت قطع پیوند دائمی ، انتقال مجدد هیچ تأثیری ندارد بنابراین تعداد انتقال مجدد محدود است. فراتر از حد مجاز مجدد خطا محسوب می‌شود.
جهت جریان اطلاعات
اگر انتقال فقط در یک جهت به‌صورت همزمان در پیوندهای نیمه دوبلکس یا از طریق یک فرستنده در یک بار به عنوان یک رسانه مشترک انجام شود، باید جهت دهی شود. این به عنوان کنترل دسترسی رسانه ای شناخته می‌شود. ترتیبات باید در نظر گرفته شود تا در صورت برخورد یا مشاجره دو طرف به‌طور همزمان انتقال یا مایل به انتقال باشند.
کنترل توالی
اگر bit bitهای طولانی به قطعات تقسیم شده و سپس به صورت جداگانه روی شبکه ارسال شوند، ممکن است قطعات از دست بروند یا به تأخیر بیفتند یا در برخی از انواع شبکه‌ها مسیرهای مختلف را به مقصد برسانند. در نتیجه، قطعات ممکن است از توالی خارج شوند. انتقال مجدد می‌تواند منجر به قطعات تکراری شود. با علامت گذاری قطعات با اطلاعات ترتیب در فرستنده، گیرنده می‌تواند آنچه را که از دست داده یا کپی شده‌است، تعیین کند، درخواست انتقال مجدد لازم را دارد و پیام اصلی را دوباره جمع‌آوری می‌کند.
کنترل جریان
هنگامی که فرستنده سریعتر از گیرنده یا تجهیزات شبکه میانی می‌تواند انتقال‌ها را پردازش کند ، کنترل جریان لازم است. کنترل جریان را می‌توان با پیام رسانی از گیرنده به فرستنده پیاده‌سازی کرد.
صف کشیدن
فرایندهای ارتباطی یا ماشین‌های دولتی از صف (یا "بافر")، معمولاً صف‌های FIFO، برای رسیدگی به پیام‌های ترتیب ارسال شده استفاده می‌کنند و ممکن است گاهی چندین صف با اولویت بندی متفاوت داشته باشند.

منابع
-----

1. ↑  فرهنگستان زبان و ادب فارسی، در رشته‌های مهندسی مخابرات و رایانه و فناوری اطلاعات، واژهٔ «قرارداد» را برابر «پروتکل» نهاده‌است. از جمله: «قراردادهای دسترسی» برابر «access protocols» در رشتهٔ مهندسی مخابرات و «قرارداد اینترنت» برابر «access protocols» در رشتهٔ رایانه و فناوری اطلاعات
2. ↑  Cambell-Kelly, Martin (1987). "Data Communications at the National Physical Laboratory (1965-1975)". *Annals of the History of Computing* (به انگلیسی). **9** (3/4): 221–247. doi:10.1109/MAHC.1987.10023.
3. ↑  *Interface Message Processor: Specifications for the Interconnection of a Host and an IMP*, Report No. 1822, Bolt Beranek and Newman, Inc. (BBN)
4. ↑  "NCP – Network Control Program" بایگانی‌شده در ۲ آوریل ۲۰۱۹ توسط Wayback Machine, Living Internet
5. ↑  Cerf, V.; Kahn, R. (1974). "A Protocol for Packet Network Intercommunication" (PDF). *IEEE Transactions on Communications*. **22** (5): 637–648. doi:10.1109/TCOM.1974.1092259. ISSN 1558-0857. The authors wish to thank a number of colleagues for helpful comments during early discussions of international network protocols, especially R. Metcalfe, R. Scantlebury, D. Walden, and H. Zimmerman; D. Davies and L. Pouzin who constructively commented on the fragmentation and accounting issues; and S. Crocker who commented on the creation and destruction of associations.
6. ↑  McKenzie, Alexander (2011). "INWG and the Conception of the Internet: An Eyewitness Account". *IEEE Annals of the History of Computing*. **33** (1): 66–71. doi:10.1109/MAHC.2011.9. ISSN 1934-1547.
7. ↑  Schwartz, Mischa (2010). "X.25 Virtual Circuits - TRANSPAC IN France - Pre-Internet Data Networking [History of communications]". *IEEE Communications Magazine*. **48** (11): 40–46. doi:10.1109/MCOM.2010.5621965. ISSN 1558-1896.
8. ↑  Rybczynski, Tony (2009). "Commercialization of packet switching (1975-1985): A Canadian perspective [History of Communications]". *IEEE Communications Magazine*. **47** (12): 26–31. doi:10.1109/MCOM.2009.5350364. ISSN 1558-1896.
9. ↑  "TCP/IP Internet Protocol" بایگانی‌شده در ۲ آوریل ۲۰۱۳ توسط Archive-It, Living Internet
10. ↑  Russell, Andrew L. "Rough Consensus and Running Code' and the Internet-OSI Standards War" (PDF). IEEE Annals of the History of Computing.
11. ↑  "Standards Wars" (PDF). 2006. `{{cite journal}}`: Cite journal requires `|journal=` (help)
12. ↑  Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, "They (protocols) are to communication what programming languages are to computation"
13. ↑  Comer 2000, Sect. 1.3 - Internet Services, p. 3, "Protocols are to communication what algorithms are to computation"
14. ↑  Ben-Ari 1982, chapter 2 - The concurrent programming abstraction, p. 18-19, states the same.
15. ↑  Ben-Ari 1982, Section 2.7 - Summary, p. 27, summarizes the concurrent programming abstraction.
16. ↑  Marsden 1986, Section 6.1 - Why are standards necessary?, p. 64-65, uses BSC as an example to show the need for both standard protocols and a standard framework.
17. ↑  Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, explains this by drawing analogies between computer communication and programming languages.
18. ↑  Sect. 11.10 - The Disadvantage Of Layering, p. 192, states: layering forms the basis for protocol design.
19. ↑  Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, states the same.
20. ↑  Comer 2000, Sect. 11.3 - The Conceptual Layers Of Protocol Software, p. 178, "Each layer takes responsibility for handling one part of the problem."
21. ↑  Comer 2000, Sect. 11.11 - The Basic Idea Behind Multiplexing And Demultiplexing, p. 192, states the same.
22. ↑  Marsden 1986, Chapter 3 - Fundamental protocol concepts and problem areas, p. 26-42, explains much of the following.
23. ↑  Comer 2000, Sect. 7.7.4 - Datagram Size, Network MTU, and Fragmentation, p. 104, Explains fragmentation and the effect on the header of the fragments.
24. ↑  Comer 2000, Chapter 4 - Classful Internet Addresses, p. 64-67;71.
25. ↑  Marsden 1986, Section 14.3 - Layering concepts and general definitions, p. 187, explains address mapping.
26. ↑  Marsden 1986, Section 3.2 - Detection and transmission errors, p. 27, explains the advantages of backward error correction.
27. ↑  Marsden 1986, Section 3.3 - Acknowledgement, p. 28-33, explains the advantages of positive only acknowledgment and mentions datagram protocols as exceptions.
28. ↑  Marsden 1986, Section 3.4 - Loss of information - timeouts and retries, p. 33-34.
29. ↑  Marsden 1986, Section 3.5 - Direction of information flow, p. 34-35, explains master/slave and the negotiations to gain control.
30. ↑  Marsden 1986, Section 3.6 - Sequence control, p. 35-36, explains how packets get lost and how sequencing solves this.
31. ↑  Marsden 1986, Section 3.7 - Flow control, p. 36-38.

1. ↑  Failure to receive an acknowledgment indicates that either the original transmission or the acknowledgment was lost. The sender has no means to distinguish these cases and therefore, to ensure all data is received, must make the conservative assumption that the original transmission was lost.