进程通信与网络协议

一、进程间通信

1、管道:管道是基于文件描述符的半双工的通信方式,数据单向流动,数据读取后会从管道中删除。

A. 无名管道 ​ i. 仅存在于内核空间中,无文件系统入口 ​ i. 仅支持亲缘间进程通信 ​ i. 进程退出后管道会自动释放 ​ i. 通过pipe函数创建,返回读端(fd[0])和写端(fd[1])两个文件描述符 ​ B. 有名管道 ​ i. 有文件系统入口,一旦创建成功会在磁盘创建一个管道文件 ​ i. 支持任意进程间通信 ​ i. 进程退出后,管道文件仍存在,需手动删除 ​ i. 通过mkfifo创建,使用open打开

2、信号:信号属于软件中断机制,用于通知进程发生特定事件,是异步通信机制。

i. 常见使用kill发送信号 ​ i. 使用signal注册信号响应函数 ​ i. 信号响应函数是由内核触发调用 ​ 3、共享内存 ​ i. 通信效率最高的IPC方式,进程直接访问一块内核内存,无需数据拷贝 ​ i. 通常需要信号量来配合使用(也就是需要同步机制) ​ i. 通常应用在高并发、大数据量的进程间通信(比如:数据库、缓存系统) ​ 4、消息队列 ​ i. 属于增强型管道,其每个消息都带有标识符,支持按标识符进行接收 ​ i. 通信效率低于共享内存 ​ i. 通常应用在进程间需按类型传递数据(比如: 日志) ​ 5、信号量:System-V信号量、POSIX信号量 ​ i. 不传递数据,仅用于数据的同步与互斥,本质是内核计算器 ​ i. P操作用于申请资源,V操作用于释放资源 ​ i. 同步:协调进程的执行顺序 ​ i. 互斥:保证临界资源同一时刻仅被一个进程访问 ​ 6、网络通信 ​ i. 可以跨主机、跨网络的通信方式,支持本地和网络进程间通信 ​ i. 通常又称之为套接字,是一个特殊的文件类型 ​ i. 一般分为 IPV4和IPV6 ​

二、Linux系统文件类型

1、普通文件 ​ 2、目录文件 ​ 3、管道文件 ​ 4、链接文件 ​ 5、块设备文件 ​ 6、字符设备文件 ​ 7、套接字文件 ​

三、网络通信核心知识

1、网络通信特性

i. 同一网段内通信需保证IP地址在同一网段(通过子网掩码判断)。 ​ i. 支持跨设备、跨平台通信(比如windows、Linux、手机)。 ​ i. 通信双方需要通过 IP + 端口,唯一标识通信地址。 ​ i. 依赖协议栈完成数据的封装与解封装。

2、网络通信协议:不同设备通信需要遵循统一协议。

复制代码
协议    协议层   连接性       可靠性     传输速率
IP      网络层   无连接       不可靠        快   
TCP     传输层   面向连接      可靠         慢   
UDP     传输层   无连接       不可靠        快   
​
IP: 网际协议,其作用是分配目标地址(IP地址),并通过路由器将数据包从源设备转发到目标设备。
     应用场景:所有网络数据传输的基础。
TCP:传输控制协议,其作用是在IP的基础上,提供可靠有序的数据传输。
     应用场景:文件传输、HTTP/HTTPS、SSH、FTP
UDP:用户数据报协议,其作用是在IP的基础上,提供快速、简单的数据传输。
     应用场景:视频通话、游戏、直播

3、网络通信模型

1、七层协议模型(OSI模型) ​ 应用层 领导口述一段话 ​ 表示层 秘书将领导所述内容形成信件 ​ 会话层 将信件放在前台,由前台通知快递员 ​ 传输层 快递员从前台取走信件 ​ 网络层 分拣快递确保后续按地址进行投递 ​ 数据链路层 将快递运送至对应站点 ​ 物理层 将信件送至收件人手中 ​

复制代码
 i. 应用层:提供用户交互接口,定义用户级数据格式。
               常见协议:HTTP、HTTPS、FTP、DNS、SMTP(邮件)
    i. 表示层:数据加密、压缩、格式转换。
               常见协议:SSL、JPEG。
    i. 会话层:建立、维护、终止进程间会话,
               常见协议:RCP。
    i. 传输层:端到端通信,通过端口标识进程,提供可靠的或快速的传输
               常见协议:TCP、UDP。
    i. 网络层:路由转发,通过IP地址定位目标主机。
               常见协议:IP、ICMP。
    i. 数据链路层:将比特流封装为帧,处理MAC地址、差错检测。
               常见协议:以太网协议、ARP、PPP、RARP。
    i. 物理层:传输比特流,负责硬件适配。
               常见协议:串口协议、网线、光纤。
    
2、四层协议模型(TCP/IP模型)
    应用层         将数据形成信件并放在前台
    传输层         快递员从前台取走信件
    网络层         分拣快递确保后续按地址进行投递
    网络接口层     将快递投诉至收件人手中
​
    i. 应用层:整合了OSI模型中的应用层+表示层+会话层。
    i. 网络接口层:整合了OSI模型中的数据链路层+物理层。

4、网络通信理论

(1)、套接字:是特殊的文件描述,是网络通信的端点,不能使用open打开。 ​ (2)、流式套接字:对应TCP,可靠、面向连接、字节流。 ​ (3)、数据报套接字:对应UDP,不可靠、无连接、数据报。 ​ (4)、IP地址:IPV4为32为点分式(192.168.31.248),IPV6为128位冒号分割式。 ​ (5)、端口号:2字节的短整型(1 ~ 65535), 与IP地址组合唯一标识网络进程。 ​ 通常我们的程序端口号设置为 > 10000, 避免与其余软件冲突。 ​ (6)、字节序: ​ i. 大端序:网络字节序 ​ i. 小端序:主机字节序

5、网络IO模型

(1) 阻塞IO:进程调用相关的IO函数后就会阻塞,直到数据就绪或超时,CPU开销小。 ​ (2) 非阻塞IO:进程调用相关IO函数后立即返回,数据未就绪则返回错误,会轮询检查,CPU开销大。 ​ (3) 信号驱动:注册信号响应函数,数据就绪时内核发送SIGIO信号执行响应函数,CPU开销中等。 ​ (4) 异步IO:进程发起IO请求后继续执行,内核完成数据读写后通知进程,CPU开销小。 ​ (5) 多路复用:单个进程监控多个文件描述符,数据就绪时通知进程处理,CPU开销小。

6、网络超时处理

三种超时处理:(1) 通过socket选项设置; (2) 通过IO多路复用的超时参数设置; (3) 通过特定函数设置。

7、广播与组播

(1) 广播 ​ i. 向同一网段内所有设备发送数据,路由器默认拦截跨网段广播。 ​ i. 无需通知接收方IP,但是占用网段较宽,安全性较低。 ​ i. 仅支持UDP协议。 ​ (2) 组播 ​ i. 向特定组播的组发送数据,仅加入到改组的设备能够接收。 ​ i. 节省宽带,支持跨网段。

相关推荐
cen__y19 分钟前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
AI人工智能+电脑小能手23 分钟前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
社交怪人1 小时前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
雨辰AI1 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
长城20241 小时前
关于MySql的ONLY_FULL_GROUP_BY问题
数据库·mysql·聚合列
常常有1 小时前
MySQL 底层执行原理:输入SQL语句到两阶段提交
数据库·sql·mysql
郭涤生2 小时前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS2 小时前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言
卢锡荣2 小时前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
Xin_ye100862 小时前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#