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

会话

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

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

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

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

守护进程

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

相关推荐
luj_17686 小时前
残熵算法实时化三大瓶颈突破
c语言·开发语言·网络·经验分享·算法
吴懿不在7 小时前
某次热身赛re方向wp WORDS 51,500 READ 172 MIN base64,
网络
RisunJan9 小时前
Linux命令-rlogin(远程登录)
linux·运维
深圳恒讯10 小时前
菲律宾云服务器与传统VPS的架构差异
运维·服务器·架构
蓝天下的守望者10 小时前
svt_apb_if里的宏定义问题
运维·服务器·数据库
小林ixn10 小时前
从“玩具工具”到“跨语言利器”:MCP 协议实战解析
运维·服务器·网络
2603_9547083112 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全
其实防守也摸鱼12 小时前
蓝队相关知识学习(1)---常用堡垒机和服务器
服务器·功能测试·学习·网络安全·网络攻击模型·攻防对抗·蓝队
青岛前景互联信息技术有限公司12 小时前
以新标准为底座,前景互联打造高危场景智能接处警新体系
大数据·网络·人工智能
大飞记Python13 小时前
Linux命令速查手册(测试开发4年实战总结,附PDF)
linux·网络·pdf