ネットワーク転送におけるバイナリ転送プロトコルとテキスト転送プロトコル

関連するコンテンツが少なすぎて、基本的に何もありません。最終的には、自分の理解の一部を組み合わせて、chatGPT に助けを求めました。

核心に直接行きます

早期的网络协议在传输的时候以字节为单位进行传输,而当字节最高位为1时,通常表示这是一个控制字符,而不是文本字符。因此,只能传输ASCII字符集中的字符(可打印字符)(最高位为0)。

ASCII字符集为八位,首位不参与(始终为0),因此有128个字符。
我认为,很多地方提到的,文本传输协议只支持字符(文本)传输的原因,就是这个字节最高位的问题。

因此,早期想要传输非文本文件(音频,视频等)时,文件的二进制内容,在被分成一个一个字节以后,肯定是不符合“首位不为1”这个要求的,因此,需要用 Base64 编码方式,对文件(二进制)进行编码,变成符合传输要求的内容,然后这个行为,也就是别的地方所说的“将二进制数据转换为(可打印)字符”。
どのような状況でBase64を使用するのでしょうか? Base64はHTTPプロトコルでバイナリデータを送信する際に一般的に使用されますが、HTTPプロトコルはハイパーテキストプロトコルであるため、HTTPプロトコルでバイナリデータを送信する場合にはバイナリデータを文字データに変換する必要があります。ただし、直接変換はできません。ネットワーク送信では印刷可能な文字しか送信できないためです。
印刷可能な文字とは何ですか? ASCII コードによれば、0 ~ 31 および 127 の 33 文字は制御文字に属し、32 ~ 126 の 95 文字は印刷可能文字に属します (具体的な比較関係については、ASCII コードの比較表を参照してください)。つまり、ネットワークです。送信できるのはこの95文字のみです。この範囲外の文字は送信できません。では、他の文字はどのようにして伝わるのでしょうか? 1 つの方法は、Base64 を使用することです。
Base64 は、64 個の印刷可能な文字を使用してバイナリ データを表現する方法です。これらの 64 文字には、大文字と小文字、数字、+ と /、およびギャップを埋めるために使用される特殊文字 = が含まれます。
注: Base64 エンコードでは、8 ビット文字を使用してメッセージ内の 6 ビットを表すため、base64 エンコードされた文字列は元の値より約 33% 大きくなります。
———————————————
著作権に関する声明: この記事は CSDN ブロガー「Little Snail Game」のオリジナル記事であり、CC 4.0 BY-SA 著作権契約に従っており、オリジナルのソースリンクを添付してください。そしてこの発言。
元のリンク: https://blog.csdn.net/local_752/article/details/121970823

Base64 エンコードでは、元のデータを 3 バイトずつグループにした 4 つの印刷可能な文字に変換して、送信要件を満たすようにします (最初のビットは 1 ではありません) が、サイズも大きくなります。拡張 (33% 増加) 後、バイナリ ファイルは印刷可能な文字 (のバイナリ形式) になります。

chatGPT で見つけた関連コンテンツをいくつか載せます

おすすめ

転載: blog.csdn.net/qq_41934338/article/details/129143068