【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层协议

会话

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

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

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

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

守护进程

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

相关推荐
隔窗听雨眠43 分钟前
Nginx网关响应慢排查手记
java·服务器·nginx
IT大白鼠1 小时前
RSTP协议原理与配置详解:快速生成树技术的深度解析
网络·网络协议
人还是要有梦想的1 小时前
linux下用搜狗输入法,中英文切换
linux·运维·服务器
bush42 小时前
嵌入式linux学习记录二
linux·运维·学习
9分钟带帽2 小时前
linux_通过NFS挂载远程服务器的硬盘
linux·服务器
C+++Python2 小时前
BIO、NIO、AIO 区别
网络·nio
VOOHU-沃虎3 小时前
沃虎——网络变压器与RJ45集成连接器选型实战:从百兆到10G、从非PoE到4PPoE
网络
2301_773643623 小时前
华为云存储实验
网络·mysql·华为云
迷枫7123 小时前
DM8 目录结构与常用排查入口梳理
服务器·数据库
ylscode3 小时前
Windows 内核惊现高危提权漏洞 CVE-2026-40369:沙箱隔离失效,SYSTEM 权限唾手可得
网络·安全·安全威胁分析