Дело не в том, что многие интернет-протоколы основаны на тексте. На самом деле, если бы я догадался, я бы сказал, что текстовые протоколы в меньшинстве. Почти для каждого текстового протокола, который вы видите в Интернете, есть как минимум два двоичных протокола, которые люди изобрели для отправки одинаковых или похожих данных.
Но это правда, что большинство интернет- трафика используют текстовые протоколы. Этот факт интересен, если предположить, что двоичных протоколов намного больше, чем текстовых, но намного больше текстового трафика, чем двоичных. Это означает, что большинство успешных протоколов в Интернете основаны на тексте. За исключением небольшого числа приложений (например, битторрент) бинарные протоколы имеют тенденцию к смерти.
В первые дни Интернета корпорации имели тенденцию разрабатывать и использовать двоичный протокол (например, MSN, а не веб-сайт MSN сегодня, оригинальную проприетарную сеть MicroSoft, которая должна была заменить HTTP), в то время как военные, исследовательские институты и ученые стремились к разработать и использовать текстовый протокол. Одной из причин было то, что создание и отладка двоичных протоколов были трудными, и корпорации могут позволить себе платить людям за это, в то время как военные, исследователи и ученые занимались этим в свободное время без оплаты (большинство людей, которые разработали Интернет, имели работа, не связанная с развитием интернета).
Когда вы пишете код по выходным в качестве хобби и вам не платят за то, что вы делаете, вы склонны выбирать более простое решение - текст. Таким образом, текстовые протоколы используются большим количеством людей, чем двоичные протоколы.
Но это еще не все. Построить сеть сложно. Очень трудно. Сегодня мы настолько привыкли к Интернету, что не до конца понимаем, что это за чудо инженерной мысли. Почти все аспекты Интернета возникли из-за исправления ошибок. Например, мы используем IP-адрес вместо MAC-адреса, потому что он позволяет нам создавать маршрутизаторы с килобайтами (или в наши дни мегабайтами) вместо терабайтов ОЗУ для таблицы маршрутизации. Чем больше проблем мы пытались решить, тем больше мы склонны отдавать предпочтение текстовым протоколам для их устранения. Когда у нас было достаточно опыта в разработке сетевых протоколов низкого уровня, когда пришло время разрабатывать прикладные протоколы, большинство опытных программистов и инженеров предпочитали текстовые протоколы.
Исходя из личного опыта, я работал в компании, занимающейся созданием маршрутизаторов, а также в компании, занимающейся созданием телеметрического оборудования, поэтому у меня большой опыт работы с двоичными протоколами, такими как TCP / IP, ARP, IEC60870-5- 101 и ДНП3. Я также работал с текстовыми протоколами, такими как HTTP, POP3 и NMEA. Я также работал с двоичными форматами данных, такими как ASN.1, и текстовыми форматами данных, такими как JSON и XML. Если бы я выбрал, я бы выбрал текст почти каждый раз. Единственный раз, когда я выбрал бы двоичный файл, это если протокол действительно низкоуровневый (тогда я реализовал бы достаточно для того, чтобы я мог добавить текстовый протокол поверх него или его), или данные были естественно двоичными (например, аудиофайлы). ,