Nie jest tak, że wiele protokołów internetowych opiera się na tekście. W rzeczywistości, gdybym zgadywał, powiedziałbym, że protokoły tekstowe należą do mniejszości. Dla prawie każdego protokołu tekstowego, który widzisz w Internecie, istnieją co najmniej dwa protokoły binarne, które ludzie wymyślili, aby wysłać te same lub podobne dane.
Ale prawdą jest, że większość ruchu internetowego korzysta z protokołów tekstowych. Ten fakt jest interesujący, jeśli założymy, że istnieje o wiele więcej protokołów binarnych niż tekst, ale znacznie więcej ruchu tekstowego niż binarny. Oznacza to, że większość udanych protokołów w Internecie jest oparta na tekście. Z wyjątkiem niewielkiej liczby aplikacji (przykładem jest bittorrent) protokoły binarne zwykle giną.
We wczesnych dniach Internetu korporacje miały tendencję do projektowania i używania protokołu binarnego (na przykład MSN, a nie dzisiejszej strony MSN, oryginalnej zastrzeżonej sieci MicroSoft, która miała zastąpić HTTP), podczas gdy wojsko, instytuty badawcze i naukowcy mieli tendencję do zaprojektuj i użyj protokołu tekstowego. Częściowo dlatego, że budowanie i debugowanie protokołów binarnych było trudne, a korporacje stać na to, aby płacić ludziom za to, podczas gdy wojsko, badacze i naukowcy robili to w wolnym czasie za darmo (większość ludzi, którzy opracowali Internet, mieli miejsca pracy niezwiązane z rozwojem Internetu).
Kiedy piszesz kod w weekendy jako hobby i nie zarabiasz za robienie tego, co robisz, zwykle wybierasz prostsze rozwiązanie - tekst. Tak więc protokoły tekstowe były używane przez większą liczbę osób niż protokoły binarne.
Ale to nie jest pełna historia. Budowa sieci jest trudna. Naprawdę trudny. Jesteśmy tak przyzwyczajeni do Internetu, że nie zdajemy sobie w pełni sprawy z tego, jak cudem jest inżynieria. Prawie każdy aspekt Internetu ewoluował w wyniku naprawy błędu. Na przykład używamy adresu IP zamiast adresu MAC, ponieważ pozwala nam budować routery z kilobajtami (lub dzisiejszymi megabajtami) zamiast terabajtów pamięci RAM dla tabeli routingu. Im więcej problemów próbowaliśmy rozwiązać, tym bardziej preferujemy protokoły tekstowe do ich debugowania. Kiedy mieliśmy wystarczające doświadczenie w tworzeniu niskopoziomowych protokołów sieciowych, kiedy przyszedł czas na opracowanie protokołów aplikacji, większość doświadczonych programistów i inżynierów preferowała protokoły tekstowe.
Z własnego doświadczenia pracowałem dla firmy budującej routery, a także pracowałem dla firmy budującej sprzęt telemetryczny, więc mam duże doświadczenie w pracy z protokołami binarnymi, takimi jak TCP / IP, ARP, IEC60870-5- 101 i DNP3. Pracowałem również z protokołami tekstowymi, takimi jak HTTP, POP3 i NMEA. Pracowałem również z binarnymi formatami danych, takimi jak ASN.1 i formatami danych tekstowych, takimi jak JSON i XML. Gdybym miał wybrać, prawie za każdym razem wybrałbym tekst. Jedyny raz, gdy wybieram binarny, to jeśli protokół jest naprawdę niskiego poziomu (wtedy zaimplementuję tylko tyle, że mogę umieścić na nim protokół tekstowy) lub dane są naturalnie binarne (jak pliki audio) .