多くのインターネットプロトコルがテキストベースであることはありません。実際、テキストベースのプロトコルは少数派だと思います。インターネットで見るほとんどすべてのテキストベースのプロトコルには、同じまたは類似のデータを送信するために人々が発明した少なくとも2つのバイナリプロトコルがあります。
しかし、インターネットトラフィックの大部分がテキストベースのプロトコルを使用しているのは事実です。この事実は、テキストよりも多くのバイナリプロトコルがあるが、バイナリよりもはるかに多くのテキストトラフィックがあると仮定した場合に興味深いです。これは、インターネットで成功しているプロトコルのほとんどがテキストベースであることを意味します。少数のアプリケーション(ビットトレントがその一例です)を除き、バイナリプロトコルは死にがちです。
インターネットの初期には、企業はバイナリプロトコル(たとえば、今日のMSN Webサイトではなく、HTTPに代わるものとされていた独自のMicroSoftネットワークではなくMSN)を設計して使用する傾向がありましたが、軍隊、研究機関、学者はテキストベースのプロトコルを設計および使用します。その理由の一部は、バイナリプロトコルの構築とデバッグが困難であり、軍隊、研究者、学者が暇なときに無料でそれを行っている間に、企業がそれを行うために人々に支払う余裕があることでした(インターネットを開発した人々のほとんどはインターネットの開発に関係のない仕事)。
週末に趣味としてコードを書いていて、自分がしたことに対してお金を払っていないときは、よりシンプルなソリューションであるテキストを選択する傾向があります。そのため、テキストベースのプロトコルは、バイナリプロトコルよりも多くの人々に使用されました。
しかし、それは完全な話ではありません。ネットワークの構築は困難です。とても大変。今日、私たちはインターネットに非常に慣れているため、エンジニアリングの奇跡が何であるかを完全には理解していません。インターネットのほぼすべての側面は、バグ修正から発展しました。たとえば、ルーティングテーブル用にテラバイトのRAMではなく、キロバイト(または最近はメガバイト)でルーターを構築できるため、MACアドレスの代わりにIPアドレスを使用します。解決しようとする問題が多ければ多いほど、それらをデバッグするためにテキストベースのプロトコルを好む傾向があります。低レベルのネットワークプロトコルの開発に十分な経験を積んだ後、アプリケーションプロトコルを開発するときが来たとき、経験豊富なプログラマやエンジニアのほとんどはテキストプロトコルを好む傾向がありました。
個人的な経験から、私はルーターを構築する会社で働いていました。また、テレメトリー機器を構築する会社で働いていたので、TCP / IP、ARP、IEC60870-5-などのバイナリプロトコルを使った多くの経験があります。 101およびDNP3。また、HTTP、POP3、NMEAなどのテキストプロトコルも使用しました。また、ASN.1などのバイナリデータ形式や、JSONやXMLなどのテキストデータ形式も使用しました。私が選択した場合、ほぼ毎回テキストを選択します。バイナリを選択するのは、プロトコルが本当に低レベル(テキストベースのプロトコルを上またはその上に突っ込むことができるように十分に実装する)またはデータが自然にバイナリ(オーディオファイルなど)である場合のみです。