Справа не в тому, що багато інтернет-протоколів є текстовими. Насправді, якби я здогадувався, я б сказав, що текстові протоколи є меншиною. Практично для кожного текстового протоколу, який ви бачите в Інтернеті, є щонайменше два двійкові протоколи, які люди винайшли для надсилання одних і тих же або подібних даних.
Але це правда, що більшість інтернет- трафіку використовують текстові протоколи. Цей факт цікавий, якщо припустити, що існує багато більше бінарних протоколів, ніж текстових, але набагато більше текстового трафіку, ніж двійкових. Це означає, що більшість успішних протоколів в Інтернеті є текстовими. За винятком невеликої кількості застосунків (один із прикладів - bittorrent) бінарні протоколи, як правило, гинуть.
У перші дні Інтернету корпорації прагнули розробляти та використовувати бінарний протокол (наприклад, MSN, а не веб-сайт MSN сьогодні, оригінальна власна мережа MicroSoft, яка повинна була замінити HTTP), тоді як військові, науково-дослідні інститути та вчені розробити та використовувати текстовий протокол. Частина причини полягала в тому, що складання та налагодження бінарних протоколів було важким, і корпорації можуть дозволити собі платити людям за це, тоді як військові, дослідники та науковці робили це у вільний час без оплати (більшість людей, які розвивали Інтернет, мали робочі місця, не пов'язані з розвитком Інтернету).
Коли ви пишете код у вихідні дні як хобі і не платите за те, що робите, ви схильні вибирати простіше рішення - текст. Тож текстові протоколи звикли більшість людей, ніж двійкові протоколи.
Але це ще не повна історія. Побудувати мережу важко. Дійсно важко. Сьогодні ми так звикли до Інтернету, що не до кінця усвідомлюємо, що це за диво інженерії. Майже кожен аспект Інтернету розвивався з виправлення помилок. Наприклад, ми використовуємо IP-адресу замість MAC-адреси, оскільки це дозволяє нам будувати маршрутизатори лише кілобайт (або в ці дні мегабайти) замість терабайтів оперативної пам’яті для таблиці маршрутизації. Чим більше і більше проблем ми намагалися вирішити, тим більше ми віддаємо перевагу текстовим протоколам для їх налагодження. Коли ми мали достатньо досвіду розробки мережевих протоколів низького рівня, коли прийшов час розробляти протоколи додатків, більшість досвідчених програмістів та інженерів, як правило, віддавали перевагу текстовим протоколам.
З особистого досвіду я працював у маршрутизаторі компанії, а також працював у телевізійному обладнанні обладнання, тому маю великий досвід роботи з бінарними протоколами, такими як TCP / IP, ARP, IEC60870-5- 101 та DNP3. Я також працював з текстовими протоколами, такими як HTTP, POP3 та NMEA. Я також працював з бінарними форматами даних, такими як ASN.1 та текстовими форматами даних, такими як JSON та XML. Якби я вибирав, я вибирав би текст майже кожного разу. Єдиний раз, коли я вибрав бинарний, - це якщо протокол насправді низького рівня (тоді я б реалізував достатньо, щоб я міг розкласти текстовий протокол зверху чи він) або дані, природно, бінарні (наприклад, аудіофайли) .