进程通信与网络协议
一、进程间通信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. 节省宽带支持跨网段。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2501273.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!