czy ktoś ma dobrą definicję tego, co to jest protokół binarny? a czym właściwie jest protokół tekstowy? jak to się ma do siebie pod względem liczby bitów przesłanych w sieci?
oto co Wikipedia mówi o protokołach binarnych:
Protokół binarny to protokół, który jest przeznaczony lub oczekiwany do odczytu przez maszynę, a nie przez człowieka ( http://en.wikipedia.org/wiki/Binary_protocol )
Och przestań!
aby było jasne, jeśli mam plik jpg, w jaki sposób zostałby on przesłany przez protokół binarny, a jak przez tekstowy? oczywiście pod względem bitów / bajtów przesyłanych przewodem.
pod koniec dnia, jeśli spojrzysz na łańcuch, sam jest tablicą bajtów, więc rozróżnienie między dwoma protokołami powinno opierać się na tym, jakie rzeczywiste dane są wysyłane w sieci. innymi słowy, w jaki sposób dane początkowe (plik jpg) są kodowane przed wysłaniem.
Odpowiedzi:
Protokół binarny a protokół tekstowy nie dotyczy tak naprawdę kodowania binarnych obiektów blob. Różnica polega naprawdę na tym, czy protokół jest zorientowany na struktury danych, czy na ciągi tekstowe. Podam przykład: HTTP. HTTP jest protokołem tekstowym, nawet jeśli wysyła obraz jpeg, po prostu wysyła nieprzetworzone bajty, a nie kodowanie tekstu.
Ale to, co sprawia, że HTTP jest protokołem tekstowym, to fakt, że wymiana w celu pobrania pliku jpg wygląda następująco:
Żądanie:
Odpowiedź:
Zauważ, że można to bardzo łatwo upakować znacznie ściślej w strukturę, która wyglądałaby (w C) jakoś
Żądanie:
Odpowiedź:
Gdzie nazwy pól w ogóle nie musiałyby być przesyłane i gdzie, na przykład,
responseType
w strukturze odpowiedzi jest liczba całkowita o wartości 200 zamiast trzech znaków „2” 0 „0”. Tym właśnie jest protokół tekstowy: zaprojektowany tak, aby był przekazywany jako płaski strumień (zwykle czytelnych dla człowieka) wierszy tekstu, a nie jako ustrukturyzowane dane wielu różnych typów.źródło
Oto swoista definicja wykroczenia:
Jest to jeden z tych przypadków, w których bardzo trudno jest znaleźć zwięzłą definicję obejmującą wszystkie przypadki narożne. Ale jest to również jeden z tych przypadków, w których przypadki narożne są całkowicie nieistotne, ponieważ po prostu nie występują w prawdziwym życiu.
Prawie wszystkie protokoły, które napotkasz w prawdziwym życiu, będą wyglądać tak:
[Wyobraź sobie mnóstwo innych niedrukowalnych bzdur. Jednym z wyzwań związanych z przekazaniem różnicy między tekstem a binarnymi jest to, że musisz przekazać tekst :-)]
Lub tak:
[Właśnie wymyśliłem to na miejscu.]
Po prostu nie ma tam zbyt wielu niejasności.
Inną definicją, którą czasami słyszałem, jest
Może ja pokazuję moje nerdiness tutaj, ale nie faktycznie napisany i czytać wiadomości e-mail za pośrednictwem protokołu SMTP i POP3, czytać artykuły usenet przez NNTP i przeglądać strony internetowe za pośrednictwem protokołu HTTP przy użyciu
telnet
, dla żadnego innego powodu niż żeby zobaczyć, czy to rzeczywiście dzieło.Właściwie pisząc to, znowu złapałem gorączkę:
Cholera, minęło sporo czasu, odkąd to zrobiłem. Sporo błędów tam :-)
źródło
Przykłady protokołów binarnych: RTP , TCP , IP .
Przykłady protokołów tekstowych: SMTP , HTTP , SIP .
Powinno to pozwolić na uogólnienie na rozsądną definicję protokołów binarnych i tekstowych.
Wskazówka: po prostu przejdź do przykładowych sekcji lub diagramów. Służą do zilustrowania kołyszącej odpowiedzi Tylera .
źródło
Jak większość z was sugerowała, nie możemy rozróżnić, czy protokół jest binarny, czy tekstowy, po prostu patrząc na zawartość w sieci
AFIK
Protokół binarny - bity to granica Kolejność jest bardzo ważna
Np. RTP
Pierwsze dwa bity to wersja. Następny bit to bit MarkUp
Protokół tekstu - ograniczniki specyficzne dla protokołu Kolejność pól nie jest ważna
Np. SIP
Co więcej, w protokole binarnym możemy podzielić bajt, tj. Pojedynczy bit może mieć określone indywidualne znaczenie; W protokole tekstowym minimalną znaczącą jednostką jest BYTE. Nie możesz podzielić bajtu.
źródło
Oba używają innego zestawu znaków, tekstowego, używają zredukowanego zestawu znaków, binarny zawiera wszystko, co może, nie tylko „litery” i „cyfry” (dlatego wikipedia mówi „istota ludzka”)
powinieneś przeczytać ten Base64
Myślę, że istotą zawężenia zestawu znaków jest zawężenie złożoności i osiągnięcie przenośności, kompatybilności. Trudniej jest ułożyć i zgodzić się z wieloma, aby uszanować szeroki zestaw znaków (lub szeroki cokolwiek). Alfabet łaciński / łaciński i cyfry arabskie są znane na całym świecie. (Oczywiście istnieją inne kwestie związane z redukcją kodu, ale to jest główny)
Powiedzmy, że w protokołach binarnych "kontrakt" między częściami dotyczy bitów, pierwszy bit oznacza to, drugie tamto itd. Lub nawet bajty (ale z możliwością swobodnego używania zestawu znaków bez myślenia o przenośności), na przykład w zamkniętym systemie lub (blisko standardów sprzętowych), jednak jeśli projektujesz system otwarty, musisz wziąć pod uwagę, w jaki sposób twoje kody będą reprezentowane w szerokim zestawie sytuacji, na przykład jak będą reprezentowane w maszynie po drugiej stronie świata ?, więc oto protokoły tekstowe, w których umowa będzie tak standardowa, jak to tylko możliwe. Zaprojektowałem oba i to były powody, binarne dla bardzo niestandardowych rozwiązań oraz tekst dla systemów otwartych i / lub przenośnych.
źródło
Jak możemy wysłać plik obrazu w SOAP: Kliknij tutaj
Pokazuje to, że dane binarne są dołączone jako takie [ZAŁĄCZNIK], a ich odniesienie jest zapisywane w komunikacie SOAP.
Tak więc protokół jest oparty na tekście, a dane [Obraz] to załącznik binarny, którego kodowanie nie jest istotne
Tak więc SOAP jest protokołem tekstowym ze względu na sposób, w jaki określamy nagłówki Soap, a nie faktyczne zakodowane w nim dane.
źródło
Myślę, że źle to zrozumiałeś. To nie protokół określa, jak dane wyglądają na „przewodzie”, ale typ danych określa, którego protokołu należy użyć do ich transmisji. Weźmy na przykład gniazdo tcp, plik jpeg zostanie wysłany i odebrany za pomocą protokołu binarnego, ponieważ są to dane binarne (nieczytelne dla człowieka, bajty mieszczące się w zakresie 32-126 ascii), ale możesz wysłać / odzyskać plik tekstowy z oba protokoły i nie zauważysz różnicy.
źródło
Protokół tekstowy może być zrozumiały i obszerny. Jest to oczywiste, ponieważ wiadomość zawiera nazwy pól tylko w samej wiadomości. Nie możesz zrozumieć, która wartość oznacza w komunikacie protokołu binarnego, jeśli nie odniesiesz się do specyfikacji protokołu.
Jest obszerny, co oznacza, że HTTP jako protokół tekstowy po prostu tworzy proste reguły, ale możesz rozszerzyć strukturę danych, swobodnie dodając nowe nagłówki lub zmieniając typ zawartości, aby transportować różne ładunki. Nagłówki są metadanymi i mają możliwość negocjacji i automatycznej adaptacji.
źródło