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

会话

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

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

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

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

守护进程

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

相关推荐
IMPYLH15 分钟前
HTML 的 <samp> 元素
前端·网络·html
tedcloud1236 小时前
Wand-Enhancer 怎么搭建?开源 Wand 客户端增强与远程控制工具介绍
大数据·服务器·人工智能·开源·音视频
Databuff7 小时前
AI SSH工具,集齐SSH、SFTP、知识库RAG、AI助手
网络·人工智能·ssh
Jeremy_WW7 小时前
QSFP/QSFP-DD/OSFP 通用管理接口规范(CMIS)解读:13 Page 9Fh
网络·网络协议·信息与通信·光模块·cmis
Emily156853598707 小时前
ABB CI867K01 3BSE043660R1
服务器·plc·dcs·abb·ci867k01·3bse043660r1·工控模块
Java陈序员8 小时前
轻量运维面板!一款现代化的服务器控制面板工具!
运维·服务器·python·react.js·github
bosins8 小时前
WSL 迁移指南:如何将 Linux 环境完整复制到另一台电脑
linux·运维·服务器
en.en..8 小时前
OSI七层模型|各层级传输数据单位(详解)
网络
疯狂打码的少年9 小时前
【计算机网络】TCP/IP协议族(四层体系结构,与OSI对比)
网络·笔记·tcp/ip·计算机网络
企鹅的蚂蚁10 小时前
LubanCat RK3588 实时 Linux 开发(六):启用 gs_usb 驱动并完成 USB-CAN 收发
linux·rk3588·linux驱动·socketcan·gs_usb·usb-can