protokol biner v. protokol teks


94

apakah ada yang punya definisi yang baik tentang apa itu protokol biner? dan apa sebenarnya protokol teks itu? bagaimana ini dibandingkan satu sama lain dalam hal bit yang dikirim melalui kabel?

inilah yang wikipedia katakan tentang protokol biner:

Protokol biner adalah protokol yang dimaksudkan atau diharapkan untuk dibaca oleh mesin daripada manusia ( http://en.wikipedia.org/wiki/Binary_protocol )

Oh ayolah!

untuk lebih jelasnya, jika saya memiliki file jpg bagaimana itu akan dikirim melalui protokol biner dan bagaimana melalui teks? dalam hal bit / byte yang dikirim melalui kabel tentunya.

pada akhirnya jika Anda melihat sebuah string itu sendiri adalah sebuah array byte sehingga perbedaan antara 2 protokol harus bertumpu pada data aktual apa yang sedang dikirim pada kabel. dengan kata lain, tentang bagaimana data awal (file jpg) dikodekan sebelum dikirim.


kemungkinan duplikat protokol biner vs teks
dkinzer

Jawaban:


169

Protokol biner versus protokol teks tidak benar-benar tentang bagaimana gumpalan biner dikodekan. Perbedaan sebenarnya adalah apakah protokol berorientasi di sekitar struktur data atau di sekitar string teks. Izinkan saya memberi contoh: HTTP. HTTP adalah protokol teks, meskipun ketika mengirimkan gambar jpeg, ia hanya mengirim byte mentah, bukan teks yang mengkodekannya.

Tapi yang membuat HTTP menjadi protokol teks adalah pertukaran untuk mendapatkan jpg terlihat seperti ini:

Permintaan:

GET /files/image.jpg HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.01 [en] (Win95; I)
Host: hal.etc.com.au
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8

Tanggapan:

HTTP/1.1 200 OK
Date: Mon, 19 Jan 1998 03:52:51 GMT
Server: Apache/1.2.4
Last-Modified: Wed, 08 Oct 1997 04:15:24 GMT
ETag: "61a85-17c3-343b08dc"
Content-Length: 60830
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/jpeg

<binary data goes here>

Perhatikan bahwa ini bisa dengan sangat mudah telah dikemas jauh lebih rapat ke dalam struktur yang akan terlihat (dalam C) seperti

Permintaan:

struct request {
  int requestType;
  int protocolVersion;
  char path[1024];
  char user_agent[1024];
  char host[1024];
  long int accept_bitmask;
  long int language_bitmask;
  long int charset_bitmask;
};

Tanggapan:

struct response {
  int responseType;
  int protocolVersion;
  time_t date;
  char host[1024];
  time_t modification_date;
  char etag[1024];
  size_t content_length;
  int keepalive_timeout;
  int keepalive_max;
  int connection_type;
  char content_type[1024];
  char data[];
};

Di mana nama bidang tidak harus dikirim sama sekali, dan di mana, misalnya, responseTypedalam struktur respons adalah int dengan nilai 200, bukan tiga karakter '2' '0' '0'. Itulah yang dimaksud dengan protokol berbasis teks: protokol yang dirancang untuk dikomunikasikan sebagai aliran datar baris teks (biasanya dapat dibaca manusia), bukan sebagai data terstruktur dari berbagai jenis.


19
+1 untuk definisi 1-liner "Perbedaan sebenarnya adalah apakah protokol berorientasi di sekitar struktur data atau di sekitar string teks."
Frank Shearar

2
Tyler, terima kasih atas jawabannya, yang harus saya katakan agak dalam. Skenario geek yang didasarkan pada apa yang kita semua sepakati, pada wire travel hanya 0 dan 1. beri tahu saya apakah ini menangkap apa yang Anda maksud. katakanlah saya ingin mengirim nomor 15 (des) melalui jaringan (Anda memiliki 2 komputer identik melalui jaringan, tidak ada kekacauan besar / kecil indian dll). jika saya akan menggunakan protokol biner (katakanlah saya mengirimkannya melalui soket TCP) ini akan dikirim ke kabel sebagai 00001111 tetapi jika saya akan menggunakan protokol teks itu akan menjadi 00110001 (ASCII untuk char 1) DAN 00110101 (ASCII untuk karakter 5) benar atau tidak? :)
der_grosse

1
Itu benar. Keuntungan melakukannya dengan cara teks tidak hanya dapat dibaca oleh manusia tetapi juga tidak perlu khawatir tentang ketangguhan jika nomor Anda lebih dari satu byte.
Tyler McHenry

1
Saya tidak setuju dengan definisi 1 baris juga dengan contoh pengiriman char 15, untuk melihat perbedaannya, seperti yang saya masukkan dalam jawaban saya, Anda harus mengetahui seluruh charset dan pembatas / protokol, Anda tidak bisa mengatakan berdasarkan contoh data tunggal jika protokolnya berbasis teks atau berbasis biner. Anda bisa "melihat" kabel dan melihat 65 (karakter 'A') dan Anda masih tidak bisa mengatakan itu berbasis teks atau protokol biner. Keduanya bisa memiliki representasi yang sama untuk satu karakter atau tidak, tapi itu tidak fundamental.
Hernán Eche

25

Berikut adalah definisi cop-out:

Anda akan mengetahuinya saat melihatnya.

Ini adalah salah satu kasus di mana sangat sulit untuk menemukan definisi ringkas yang mencakup semua kasus sudut. Tapi itu juga salah satu kasus di mana kasus sudut sama sekali tidak relevan, karena tidak terjadi dalam kehidupan nyata.

Hampir semua protokol yang akan Anda temui dalam kehidupan nyata akan terlihat seperti ini:

> fg,m4wr76389b zhjsfg gsidf7t5e89wriuotu nbsdfgizs89567sfghlkf
>  b9er t8ß03q+459tw4t3490ß´5´3w459t srt üßodfasdfäasefsadfaüdfzjhzuk78987342
< mvclkdsfu93q45324äö53q4lötüpq34tasä#etr0 awe+s byf eart

[Bayangkan banyak omong kosong lain yang tidak bisa dicetak di sana. Salah satu tantangan dalam menyampaikan perbedaan antara teks dan biner adalah Anda harus melakukan penyampaian dalam teks :-)]

Atau seperti ini:

< HELLO server.example.com
> HELLO client.example.com
< GO
> GETFILE /foo.jpg
< Length: 3726
< Type: image/jpeg
< READY?
> GO
< ... server sends 3726 bytes of binary data ...
> ACK
> BYE

[Saya baru saja mengarangnya di tempat.]

Tidak ada banyak ambiguitas di sana.

Definisi lain yang terkadang saya dengar adalah

protokol teks adalah salah satu yang dapat Anda debug menggunakan telnet

Mungkin saya menunjukkan kekonyolan saya di sini, tetapi saya sebenarnya telah menulis dan membaca email melalui SMTP dan POP3, membaca artikel usenet melalui NNTP dan melihat halaman web melalui HTTP menggunakan telnet, tidak ada alasan lain selain untuk melihat apakah itu benar-benar berfungsi.

Sebenarnya, saat menulis ini, saya agak demam lagi:

bash-4.0$ telnet smtp.googlemail.com 25
Trying 74.125.77.16...
Connected to googlemail-smtp.l.google.com.
Escape character is '^]'.
< 220 googlemail-smtp.l.google.com ESMTP Thu, 15 Apr 2010 19:19:39 +0200
> HELO
< 501 Syntactically invalid HELO argument(s)
> HELO client.example.com
< 250 googlemail-smtp.l.google.com Hello client.example.com [666.666.666.666]
> RCPT TO:Me <Me@Example.Com>
< 503 sender not yet given
> SENDER:Me <Me@Example.Com>
< 500 unrecognized command
> RCPT FROM:Me <Me@Example.Com>
< 500 unrecognized command
> FROM:Me <Me@Example.Com>
< 500-unrecognized command
> HELP
< 214-Commands supported:
< 214 AUTH HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP ETRN
> MAIL FROM:Me <Me@Example.Com>
< 250 OK
> RCPT TO:You <You@SomewhereElse.Example.Com>
< 250 Accepted
> DATA
< 354 Enter message, ending with "." on a line by itself
> From: Me <Me@Example.Com>
> To: You <You@SomewhereElse.Example.Com>
> Subject: Testmail
>
> This is a test.
> .
< 250 OK id=1O2Sjq-0000c4-Qv
> QUIT
< 221 googlemail-smtp.l.google.com closing connection
Connection closed by foreign host.

Sial, sudah cukup lama sejak aku melakukan ini. Cukup banyak kesalahan di sana :-)


7

Contoh protokol biner: RTP , TCP , IP .

Contoh protokol teks: SMTP , HTTP , SIP .

Ini akan memungkinkan Anda untuk menggeneralisasi definisi yang wajar dari protokol biner vs teks.

Petunjuk: langsung saja ke bagian contoh, atau diagram. Mereka berfungsi untuk menggambarkan jawaban goyang Tyler .


1
Frank, terima kasih untuk tautannya tetapi ketika saya akan selesai dengan RFC itu akan menjadi 2099 :) Saya ingin beberapa jawaban dari orang-orang yang sudah membacanya. Saya masih memikirkan jawaban Tyler McHenry ...
der_grosse

Harus mengatakan, Berbagi yang hebat.
Iqra.

5

Seperti yang disarankan sebagian besar dari Anda, kami tidak dapat membedakan apakah protokolnya Biner atau teks hanya dengan melihat konten di kawat

AFIK

Protokol biner - Bit adalah batas Urutan sangat penting

Misalnya, RTP

Dua bit pertama adalah versi Bit berikutnya adalah bit MarkUp

Protokol teks - Pembatas khusus untuk protokol Urutan bidang tidak penting

Misalnya, SIP

Satu lagi adalah, dalam protokol biner, kita dapat membagi satu byte, yaitu, satu bit mungkin memiliki arti individu tertentu; Sedangkan dalam protokol teks, unit yang berarti minimum adalah BYTE. Anda tidak dapat membagi satu byte pun.


2

Keduanya menggunakan kumpulan karakter yang berbeda, teks satu, menggunakan kumpulan karakter yang dikurangi, biner mencakup semua yang dapat dilakukannya, tidak hanya "huruf" dan "angka", (itulah mengapa wikipedia mengatakan "manusia")

o lebih jelas, jika saya memiliki file jpg bagaimana itu akan dikirim melalui protokol biner dan bagaimana> melalui teks? dalam hal bit / byte yang dikirim melalui kabel tentunya.

Anda harus membaca Base64 ini

setiap komentar dihargai, saya mencoba untuk mendapatkan inti dari hal-hal di sini.

Saya pikir esensi untuk mempersempit charset, mempersempit kompleksitas, dan jangkauan portabilitas, kompatibilitas. Lebih sulit untuk mengatur dan setuju dengan banyak orang untuk menghormati rangkaian karakter yang luas, (atau apa pun yang luas). Alfabet Latin / Romawi dan angka Arab dikenal di seluruh dunia. (Tentu saja ada pertimbangan lain untuk mengurangi kode, tapi itu yang utama)

Katakanlah dalam protokol biner "kontrak" antara bagian-bagian adalah tentang bit, bit pertama berarti ini, kedua itu, dll .. atau bahkan byte (tetapi dengan kebebasan menggunakan charset tanpa memikirkan portabilitas) misalnya dalam sistem tertutup privat atau (mendekati standar perangkat keras), namun jika Anda merancang sistem terbuka, Anda harus memperhitungkan bagaimana kode Anda akan direpresentasikan dalam berbagai situasi, misalnya bagaimana kode tersebut akan ditampilkan dalam mesin di belahan dunia lain ?, jadi inilah protokol teks di mana kontrak akan menjadi standar mungkin. Saya telah merancang keduanya dan itulah alasannya, biner untuk solusi dan teks yang sangat khusus untuk sistem terbuka atau / dan portabel.


Saya tahu tentang base64 dan apa yang dilakukannya dan ini persis seperti yang ada dalam pikiran saya ketika saya memposting pertanyaan. base64 bagus ketika saya ingin mengirim apa pun dalam representasi ASCII-nya (pengkodean) sehingga itu akan menjadi protokol teks. teknis itu membagi bit-input menjadi pasangan 6, menggunakan tabel pencarian dan seterusnya. Adakah yang bisa memberikan penjelasan serupa tentang cara kerja prokol biner? pertanyaan tambahan: pada tingkat OSI apa kita dapat berbicara tentang protokol biner dan teks dan apa arti sebenarnya dari dunia ini pada tingkat tersebut?
der_grosse

1
Contoh biner adalah protokol tingkat rendah seperti komunikasi serial sederhana ( en.wikipedia.org/wiki/Asynchronous_serial_communication ) atau bagaimana data disimpan dalam memori ( en.wikipedia.org/wiki/Data_structure_alignment ). Tentang OSI..baik karena protokol teks dan biner digunakan untuk merepresentasikan data (tidak hanya untuk komunikasi) mereka tidak perlu berada pada level OSI manapun, katakanlah, saya dapat mengatakan layer 1,2,3,4 memiliki "binary protocol ", dan" text protocol "bisa di 5,6,7.
Hernán Eche

1

Bagaimana kami dapat mengirim file gambar dalam SOAP: Klik di sini

Ini menunjukkan bahwa data biner dilampirkan seperti [LAMPIRAN] dan referensinya disimpan dalam pesan SOAP.

Jadi, protokolnya berbasis teks dan data [Image] adalah lampiran biner yang pengkodeannya tidak relevan

Jadi, SOAP adalah protokol teks karena cara kami menentukan header Soap dan bukan data aktual yang dikodekan di dalamnya.


0

Saya pikir Anda salah. Bukan protokol yang menentukan bagaimana data terlihat di "kabel", tetapi tipe datanya yang menentukan protokol mana yang akan digunakan untuk mengirimkannya. Ambil soket tcp misalnya, file jpeg akan dikirim dan diterima dengan protokol biner karena itu adalah data biner (tidak dapat dibaca manusia, byte yang berada di antara kisaran 32-126 ascii), tetapi Anda dapat mengirim / menerima file teks dengan kedua protokol dan Anda tidak akan melihat perbedaannya.


tidak, saya rasa saya tidak salah. Saya masih mencari definisi (bagus) dari APA itu protokol biner. contoh dengan jpeg adalah untuk mengklarifikasi pertanyaan saya dan tidak ada yang lain, jangan jadikan itu pusat pertanyaan. Saya harus mengatakan bahwa protokol menentukan bagaimana data terlihat ketika dikirim pada kabel lain mengapa itu protokol ??
der_grosse

Saya memberi Anda definisi yang tepat, Anda baru saja membaca dengan cermat. "Protokol biner mengelola byte yang berada di antara rentang 32-126 ascii, juga disebut karakter yang tidak dapat dicetak"
Simone Margaritelli

protokol teks menanganinya juga dengan membaginya menjadi lebih kecil yang sesuai dengan tabel ASCII. dan seterusnya. jadi dalam kasus terbaik adalah definisi Anda tidak jelas. tapi terima kasih atas kontribusinya.
der_grosse

0

Protokol teks bisa cukup jelas dan ekstensif. Cukup jelas karena pesan tersebut menyertakan nama kolom tepat di pesan itu sendiri. Anda tidak dapat memahami arti nilai dalam pesan protokol biner jika Anda tidak merujuk ke spesifikasi protokol.

Ini berarti HTTP sebagai protokol teks yang luas hanya membuat aturan sederhana tetapi Anda dapat memperluas struktur data dengan menambahkan header baru secara bebas atau dengan mengubah jenis konten untuk mengangkut muatan yang berbeda. Dan headernya adalah meta data dan memiliki kemampuan negosiasi dan adaptasi otomatis.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.