네트워크 전송에서 바이너리 전송 프로토콜 및 텍스트 전송 프로토콜

관련 콘텐츠가 너무 적고 기본적으로 아무것도 없으며 마침내 chatGPT에 도움을 요청하여 내 이해의 일부를 결합했습니다.

핵심으로 바로 이동

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

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

因此,早期想要传输非文本文件(音频,视频等)时,文件的二进制内容,在被分成一个一个字节以后,肯定是不符合“首位不为1”这个要求的,因此,需要用 Base64 编码方式,对文件(二进制)进行编码,变成符合传输要求的内容,然后这个行为,也就是别的地方所说的“将二进制数据转换为(可打印)字符”。
어떤 상황에서 Base64를 사용합니까? Base64는 일반적으로 HTTP 프로토콜 하에서 바이너리 데이터를 전송하는데 사용되는데, HTTP 프로토콜은 하이퍼텍스트 프로토콜이기 때문에 HTTP 프로토콜 하에서 바이너리 데이터를 전송할 때 바이너리 데이터를 문자 데이터로 변환하는 것이 필요하다. 그러나 직접 변환은 불가능합니다. 네트워크 전송은 인쇄 가능한 문자만 전송할 수 있기 때문입니다.
인쇄 가능한 문자는 무엇입니까? ASCII 코드에 따르면 33개의 문자 0-31 및 127은 제어 문자에 속하고 95개의 문자 32-126은 인쇄 가능한 문자에 속합니다(구체적인 비교 관계는 ASCII 코드 비교표 참조). 전송은 95자만 전송할 수 있으며, 이 범위를 벗어나는 문자는 전송할 수 없습니다. 그렇다면 다른 문자는 어떻게 전송할 수 있습니까? 한 가지 방법은 Base64를 사용하는 것입니다.
Base64는 64개의 인쇄 가능한 문자를 사용하여 이진 데이터를 나타내는 방법입니다. 이 64자는 대문자와 소문자, 숫자, + 및 /, 특수 문자 =를 포함하여 간격을 채웁니다.
참고: base64 인코딩은 8비트 문자를 사용하여 메시지에서 6비트를 나타내므로 base64 인코딩 문자열은 원래 값보다 약 33% 더 큽니다.
————————————————
저작권: 이 기사는 CC 4.0 BY-SA 저작권 계약에 따라 CSDN 블로거 "Little Snail Game"의 원본 기사입니다. 원본 소스 링크를 첨부하십시오. 그리고 이 진술.
원본 링크: https://blog.csdn.net/local_752/article/details/121970823

Base64 인코딩은 원본 데이터를 3바이트 그룹의 인쇄 가능한 4개 문자로 변환하므로 전송 요구 사항(첫 번째 비트는 1이 아님)을 충족하지만 크기도 커집니다. 증가(33% 증가) 후 바이너리 파일은 인쇄 가능한 문자(바이너리 형식)가 됩니다.

chatGPT에서 찾은 관련 콘텐츠를 넣습니다.

추천

출처blog.csdn.net/qq_41934338/article/details/129143068