网络传输中的 二进制传输协议 和 文本传输协议

相关内容太少了,基本等于没有,最后求助了 chatGPT,结合了一部分自己的理解

直接上核心

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

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

因此,早期想要传输非文本文件(音频,视频等)时,文件的二进制内容,在被分成一个一个字节以后,肯定是不符合“首位不为1”这个要求的,因此,需要用 Base64 编码方式,对文件(二进制)进行编码,变成符合传输要求的内容,然后这个行为,也就是别的地方所说的“将二进制数据转换为(可打印)字符”。
什么情况下我们会用到Base64呢?Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是超文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。
什么是可打印字符?在ASCII码中规定,0-31、127这33个字符属于控制字符,32-126这95个字符属于可打印字符(具体对照关系可参见 ASCII码对照表),也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。那么该怎么才能传输其他字符呢?其中一种方式就是使用Base64。
Base64,就是使用64个可打印字符来表示二进制数据的方法。这64个字符中包括大小写字母、数字、+和/,还有用来补缺的特殊字符=。
注意:由于base64编码用了8位字符来表示信息中的6个位,所以base64编码字符串大约比原始值扩大了33%。
————————————————
版权声明:本文为CSDN博主「小蜗牛游戏」的原创文章,遵循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
今日推荐