Linux
文章平均质量分 92
blame_
这个作者很懒,什么都没留下…
展开
-
典型IO模型之四
任何的IO过程,都包含两个步骤,第一是等待,第二是拷贝。而且在实际的应用场景中,等待消耗的时间往往都远远高于拷贝的时间。为了让IO更加高效,最核心的绑法就是让等待的时间尽量少。 阻塞IO: 在内核将数据准备好之前,系统调用会一直等待。所有的套接字默认都是阻塞方式。 阻塞IO的流程非常简单,一次只能进行一个IO,多个IO的情况下,过程是串行的。 缺点:进程对CPU利用率不够高(因为可能有大量的时间在...原创 2020-04-25 21:51:36 · 128 阅读 · 0 评论 -
网络层IP协议
网络层:负责地址管理与路由选择; 典型协议:IP IP协议格式 4位协议版本:IPV4 / IPV6 4位首部长度:记录IP报头长度(以四字节为单位),4字节最多表示15,所有IP报头最大长度是60字节 8位服务类型(TOS):3位优先权字段(已经弃用),一位保留位(必须置0),4位TOS位分别表示:最小延时,最大吞吐量,最高可靠性,最小成本;这四者互相冲突,只能选择一个。 16位总长度:IP...原创 2020-04-11 23:41:18 · 231 阅读 · 0 评论 -
TCP浅析(2)
TCP协议如何实现可靠传输 TCP协议实现可靠传输的主要依仗就是它具有以下能力: 连接管理:通过连接管理保证双方都具有数据收发的能力; 确认应答机制:发送的每一个数据,都要求对方进行确认回复(通过协议字段中的序号和确认 序号实现) 超时重传机制:发送数据后一段时间内没有收到确认回复,则认为数据丢失,进行重传。 协议中校验和字段:通过协议字段中的校验和校验数据一致性,若不一致则要求对方进行重传; ...原创 2020-04-11 12:00:35 · 175 阅读 · 0 评论 -
TCP浅析(1)
TCP: TCP是面向连接,可靠传输,面向字节流的传输层协议。 面向连接:通过三次握手建立连接,四次挥手释放连接,以及状态的连接管理实现面向连接。tcp是一个有状态的协议。 可靠传输:保证数据有序并且可靠的到达对端; 面向字节流:可靠的,有序的,双向的,基于连接的字节流传输(不限制上层发送/接收的数据大小) 协议格式: 16位源端口 / 目的端口:负责实现应用程序之间的数据传输。 32位序号...原创 2020-04-07 13:16:51 · 183 阅读 · 0 评论 -
UDP协议浅析
传输层:负责应用程序之间的数据传输; 典型协议 UDP / TCP UDP: 无连接,不可靠,面向数据包的传输协议。 无连接:知道对方的地址就可以发送数据,不需要建立连接; 不可靠:udp并不保证数据可靠的到达对端,只管数据发送出去,不关心会不会丢失。 面向数据包:无连接的,不可靠,有最大长度限制的数据传输。(小于64k) 协议格式 16位源端口 / 16位目的端口: 负责应用...原创 2020-04-07 13:09:06 · 376 阅读 · 0 评论 -
【Linux】基础IO接口
基础IO: 常用头文件 < fcntl.h> 标准库IO接口 c 默认会打开三个输入输出流, 分别是 stdin , stdout, stderr 这三个流的类型都是FILE*, fopen返回值类型,是个文件指针。 FILE* fopen(const char* path, const char* mode); //path:文件路径名 //mode: // r 只读 ...原创 2020-03-25 19:05:17 · 182 阅读 · 0 评论 -
【Linux】socket套接字接口(TCP)
TCP 通信流程 tcp协议特性:面向连接,可靠传输,面向字节流。 服务端: 创建套接字 在内核中创建socket结构体与网卡建立联系,描述协议版本,传输类型,协议类型。 为套接字绑定地址信息 给socket描述源端地址信息。 开始监听 告诉操作系统可以开始接收客户端的连接请求(客户端与服务端进行TCP通信必须首先建立 连接,确保双方都具有数据收发的能力). 当服务端收到了客户端的连接请求,连接...原创 2020-03-25 19:02:08 · 341 阅读 · 0 评论 -
【Linux】socket套接字接口(UDP)
UDP:用户数据包协议,特性是 无连接,不可靠,面向数据包; 应用场景:数据的实时性要求高于安全性的通信场景。例如:视频传输 socket套接字编程 套接字编程主要是: TCP通信程序和UDP通信程序的编写 应用程序是程序员开发的,应用协议是程序员自己定的,但是从传输层开始往下都是操作系统实现的。网络编程通常也叫做套接字编程,套接字实际上就是一套网络通信编程的接口,程序员可以通过这套接口,并且提供...原创 2020-03-18 15:49:35 · 275 阅读 · 0 评论 -
【Linux】网络基础1
网络基础 交换机:实现主机之间的数据交换 路由器:不但实现数据交换,并且实现数据的路径选择 网络的划分:局域网 ,城域网, 广域网 互联网 / 因特网 组网的方式:以太网 / 令牌环网 IP 和 PORT 在复杂的网络通信中,必须保证每个主机都有自己唯一的标识,只有这样才是实现精确的 点对点的通信。 IP地址:网络通信中主机的唯一标识 IPV4: uint32_t --无符号四...原创 2020-03-10 10:25:39 · 118 阅读 · 0 评论 -
【Linux】进程间通信
进程间通信 进程间因为每个进程都有一个独有的虚拟地址空间,在保证了进程独立性的同时,却使得进程间无法直接通信。为了能使进程间可以通信,操作系统提供了进程间通信的方式,因为通信场景的不同,提供的方法也有多种。 进程间通信的目的 数据传输:一个进程需要将它的数据发送给另一个进程; 资源共享:多个进程之间共享同样的资源; 通知事件:一个进程需要向另一个或者另一组进程发送消息,通知他们发生了某种事件。 ...原创 2019-12-04 20:29:27 · 174 阅读 · 0 评论 -
Linux -- 进程控制
进程控制相关的头文件一般都是 <unistd.h> 进程创建 进程创建简单的来说就是创建一个PCB。使用 fork 库函数。 pid_t fork(); pid_f vfork(void); fork — 通过复制调用进程也就是父进程的PCB来创建一个新的子进程。fork的返回值是:父进程返回子进程的PID,子进程返回0,若创建失败返回-1. vfork — 创建子进程,父子进程公...原创 2019-11-21 13:23:18 · 162 阅读 · 0 评论 -
Linux -- 进程概念
进程概念 进程是什么? 简单的来说进程就是运行中的程序。而这样理解显然是不够的。 从操作系统的层面理解: 当一个程序运行起来需要将代码数据加载到内存中,操作系统中运行了很多程序,这时候操作系统就需要把这些程序先描述,再组织进行管理。对于操作系统来说,进程就像对一个运行的程序的描述。在操作系统眼里,看到进程就相当于看到了一个程序,而这个对程序的描述信息就是 — PCB(进程控制块)。 从内核观点来看...原创 2019-11-20 11:21:43 · 100 阅读 · 0 评论 -
Linux -- 基础命令
Linux 命令的用法: 命令名 【功能选项】【源操作对象】【目标操作对象】 常用基本命令: 1) ls 显示目录或文件 -a 列出目录下所有文件包括以 . 开头的隐藏文件 -d 将目录像文件一样显示,但不显示其下文件 -i 列出文件并显示 inode 号 -l 列出文件的详细信息 -k 以k字节的形式表示文件的大小 -n 用数...原创 2019-04-27 21:00:17 · 336 阅读 · 1 评论