【Linux】应用层自定义协议与序列化

目录

背景

序列化与反序列化

会话

守护进程


背景

1、再次理解应用层的协议

2、小bug:C与S之间通过buffer传输数据是有问题的,要是有多个C,那么会不会把A的头像拼接到B的昵称里面去呢?如下图所示,因此,出现了序列化与反序列化。

序列化与反序列化

1、序列化:在C端把结构体整成一个字符串

2、反序列化:在S端把字符串解开交给上层

3、能不能不用序列化,用二进制传输?可以,但是不建议,因为C要是用C++写的,S用Python写的会不兼容。但是为啥OS都用二进制可以,因为OS都是用C写的。

4、TCP两台主机之间通信:本质就是从缓冲区中拿数据发数据。

5、在任何⼀台主机上,TCP连接既有发送缓冲区,⼜有接受缓冲区,所以,在内核中,可以在发消息 的同时,也可以收消息,即全双⼯。这就是为什么⼀个tcpsockfd读写都是它的原因。实际数据什么时候发,发多少,出错了怎么办,由TCP控制,所以TCP叫做传输控制协议

6、通信的本质:拷贝!!

面向字节流:可能接收方只收到一部分内容,不能收到完整的报文信息。对方发可能没发全,我读也可能读不全。

UDP是面向报文的,可以保证每次读取是完整的,但是TCP是面向字节流的,不能保证。

OSI7层协议

会话

多个进程组都在一个会话中

会话中,只能有一个前台进程,其他都是后台进程

一个会话中,要是包含一个服务器进程,要是把这个会话杀掉,那么这个服务器也不能提供服务了,因此为了防止服务器与任何会话关联,我们一般在这个会话中创建服务器进程后,会把这个服务器进程放到另外一个新的会话中,此时,这个新会话中的服务器进程就叫做守护进程。

对守护进程,把它的读和写的端口都重定向到一个类似黑洞的文件中

守护进程

守护进程的脱离终端 ,简单说就是:让进程和启动它的终端窗口彻底切断所有关联,即使关闭这个终端、甚至登出服务器,进程也能在系统后台一直运行------ 不再依赖终端的任何资源,也不受终端的任何操作影响。

相关推荐
白帽攻防录7 小时前
SRC 挖洞:Roundcube 预认证 SQL 注入深度复盘,CVE-2026-48842 preg_replace 转义绕过怎么打穿邮件系统
网络·数据库·sql·网络安全·sql注入
左手の明天7 小时前
SLIP 协议封装与解析详解:原理、C 代码与实战案例
linux·c语言·开发语言·c++
꯭自꯭闭꯭7 小时前
达梦SQL优化相关
linux·运维·数据库·sql
一条破秋裤8 小时前
Linux 共享内存通信:POSIX 共享内存与 mmap
linux·运维·服务器
贵州山魈羡民8 小时前
【玩转手机】通过 Podroid 上的 Alpine 部署 1Panel,把微型服务器装进口袋
运维·服务器
谷哥的小弟10 小时前
CentOS Stream浴火重生
linux·运维·centos
要吃这碗饭10 小时前
深入理解 TCP 协议:从三次握手到可靠传输
网络·网络协议·tcp/ip
程序员-Benothing10 小时前
Shell输入输出详解:read、echo、printf、颜色输出
linux·运维·服务器
和裕10 小时前
全纸结构重型纸箱能否满足 1 吨以上设备出口熏蒸豁免要求?通关合规性全解析
大数据·运维·网络·人工智能·算法
FPGA小徐11 小时前
从 NEMU 到 AbstractMachine:程序、运行时环境与 AM 完全解析
linux·运维·服务器