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

会话

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

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

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

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

守护进程

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

相关推荐
吴建旭 智宅焕3 小时前
智能家居全国交付中执行端能力跃迁的架构设计:从标准装调到交付专家的系统化路径
网络·网络协议·智能家居
lzx_0024 小时前
Linux 进程(三) 从进程状态到僵尸进程、孤儿进程
linux·服务器
Eyfcom6 小时前
〖全球化架构 05〗跨国网络专线优化:QUIC 协议与 SD-WAN 在跨境传输中的实战
网络·架构·跨境物流快递系统·全球化架构
FlightYe6 小时前
音视频修炼之容器与协议(四):RTSP详解
android·linux·ffmpeg·音视频·dash
Dream Cosmos7 小时前
传输层协议之UDP
网络·网络协议·udp
刘马想放假7 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
kloc8 小时前
聊天室项目入口网关子服务的实现
linux·c++
GeW8 小时前
深圳APEC峰会倒计时:数据库与Linux运维的"隐形考场"
linux
梦到啥说啥9 小时前
Linux网络编程:UDP网络协议
linux·网络协议·udp
鸿蒙开发爱好者10 小时前
下班后做的小工具和小游戏,我把它们整理成了 WyanHub
网络·人工智能·职场和发展·个人开发