Linux
文章平均质量分 74
操作系统&&网络
GXR_1116
努力努力再努力
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[Linux] 数据链路层-----以太网帧协议、ARP协议
以太网帧格式、ARP协议原创 2022-11-02 16:11:45 · 382 阅读 · 0 评论 -
[Linux] 网络层-----IP协议、ICMP协议、NAT技术
-----路由器决定这个数据包是能直接发送给目标主机,还是需要发送给下一个路由器-----依次反复,一直到达目标IP地址。当IP数据包,到达路由器时,路由器会先查看目的IP(通过。原创 2022-11-02 15:30:58 · 508 阅读 · 0 评论 -
[Linux] 传输层---TCP传输控制协议(下)
面向字节流、粘包问题、tcp异常情况原创 2022-10-28 17:09:46 · 1034 阅读 · 0 评论 -
[Linux] 传输层---TCP传输控制协议(上)
tcp协议段格式1. 16位窗口大小2. 6位标志位3. 16位紧急指针4. 16位校验和确认应答(ACK)机制超时重传机制1.数据丢失2.ACK丢失3.关于超时的时间连接管理机制滑动窗口1. 相关概念2. 丢包问题3. 高速重发控制(快重传)流量控制拥塞控制(网络拥塞)延迟应答捎带应答原创 2022-10-26 18:49:31 · 775 阅读 · 0 评论 -
[Linux] 传输层---UDP用户数据报协议
如果我们需要传输的数据超过64K,就需要在应用层进行手动的分包,多次发送,并在接收端手动拼装;BOOTP:启动协议(用于无盘设备启动)注:udp所能传输的数据最大长度为。TFTP:简单文件传输协议。DHCP:动态主机配置协议。NFS:网络文件系统。DNS:域名解析协议。原创 2022-10-26 11:52:09 · 691 阅读 · 0 评论 -
[Linux] 应用层---http协议---实现简单的http服务器
【代码】[Linux] 应用层---http协议---实现简单的http服务器。原创 2022-10-25 17:51:53 · 894 阅读 · 0 评论 -
[Linux] TCP网络程序引入线程池版本
所以,当有大量客户端存在时,系统中会有大量的执行流,线程间切换也是导致效率低下的一个主要原因,因此。多线程版本----健壮性不强,较吃资源,效率相对较高;多进程版本----健壮性强,但比较吃资源,效率低下;单进程版本----基本不用;原创 2022-10-23 11:23:12 · 236 阅读 · 0 评论 -
[Linux] 网络套接字编程之实现简单的TCP网络程序(下)
初始版本的tcp程序一次只能给一个客户端提供服务,当有其他客户端请求服务器时,可以connect连接上,但是无法通信,因为start循环体内的语句限制了只要当前客户端不退出,就要一直为这一个客户端服务。客户端停止发送信息后,服务器要把当前通信套接字关闭掉;在提供服务的时候,当前服务结束,也要把通信套接字关闭掉。以命令行参数的形式传入创建tdp客户端所需要的ip地址参数和端口号参数。connect()申请建立连接,返回值不为0时,表示申请失败。以命令行参数的形式传入创建tdp服务器所需要的端口号参数。原创 2022-10-22 19:04:15 · 1274 阅读 · 0 评论 -
[Linux] 网络套接字编程之实现简单的UDP网络程序(上)
通常用来进行网络通信代码的本地测试,一般使用该ip地址如果能通信的话,就代表本地环境及代码基本没有大问题。udp客户端中使用的ip和端口号,不是链接,而是标记了服务器在哪,用于向服务器发送数据。以命令行参数的形式传入创建udp客户端所需要的ip地址参数和端口号参数。主机端口号转换为16位的网络端口号----htons()6位的网络端口号转换为主机端口号----ntohs()char类型转换为网络地址类型----ip:标记网络中的一台主机的地址。网络地址类型转为字符串----整型转字符串类型输出----原创 2022-10-22 16:32:37 · 938 阅读 · 0 评论 -
[Linux] 网络协议之TCP/IP五层模型
OSI(Open System Interconnection,开放系统互连)七层网络模型称为。协议是一种“约定”,网络协议是计算机之间能够进行通信的一种标准。原创 2022-10-21 21:29:32 · 790 阅读 · 0 评论 -
[Linux] 实现简单的线程池
线程过多会带来调度开销,进而影响缓存的局部性和整体性能;而线程池维护着多个线程,等待着管理者分配可并发执行的任务,避免了在处理短时间任务时创建与销毁线程的代价;static void *Routine(void *arg)----从任务队列中拿任务,然后处理任务。void Put(Task &in)----往任务队列里面往任务,然后唤醒消费者去拿任务。void ThreadPoolInit()----初始化一堆处理任务的线程。void Get(Task &out)----从任务队列里面拿任务。原创 2022-10-21 11:56:15 · 508 阅读 · 0 评论 -
[Linux] 基于环形队列的生产者消费者模型
void Get(int &out)----消费者消费数据,P操作->从环形队列里面取数据->V操作。void Put(int &in)----生产者生产数据,P操作->往环形队列中放置数据->V操作。生产者生产数据:申请格子信号量----生产数据----释放数据信号量。消费者消费数据:申请数据信号量----消费数据----释放格子信号量。初始时,环形队列中全是空格:生产者要在空位置处生产数据;原创 2022-10-20 22:45:27 · 445 阅读 · 0 评论 -
[Linux] 基于阻塞队列的生产者消费者模型
生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理, 直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力,这个阻塞队列就是用来给生产者和消费者解耦的。PS:不一定非要是队列为空时通知生产者来生产,队列为满时通知消费者来消费,我们可以自定义一些通知机制,比如,当队列小于1/2大小时,就通知生产者来生产,大于1/2大小时,通知消费者来消费。生产者消费者模式就是。原创 2022-10-20 21:20:35 · 520 阅读 · 0 评论 -
[Linux] 进程中的信号:信号的捕捉过程、volatile关键字(下)
PS:进程地址空间中,包括1G的内核空间和3G的用户空间,其中所有的进程看到的内核空间都是一样的内容,都是OS的代码和数据。,告知编译器,被该关键字修饰的变量,,对该变量的任何操作,都必须在真实的。原创 2022-10-18 21:41:59 · 299 阅读 · 0 评论 -
[Linux] 进程中的信号:产生、处理、信号集操作(上)
调用alarm(unsigned int seconds)函数设定一个闹钟,告诉内核在seconds秒之后给当前进程发。SIGINT默认动作是终止进程,SIGQUIT默认动作是终止进程且core dump。注:野指针不存在虚拟地址,不会分配物理内存,在页表+MMU转换时就会发现地址转换错误。一段时间之后取消对2号信号的阻塞,获取其递达状态的信息(用例说明:屏蔽2号信号,获取其未决状态的信息(, 该信号的默认处理动作是终止当前进程。访问非法地址、野指针----MMU异常。除0操作----CPU运算单元异常。原创 2022-10-18 18:18:12 · 524 阅读 · 0 评论 -
[Linux] 进程间通信之System V 共享内存
【代码】[Linux] 进程间通信之System V 共享内存。原创 2022-10-17 17:32:18 · 510 阅读 · 0 评论 -
[Linux] 进程间通信之管道(匿名管道和命名管道)
通过open函数打开管道进行使用。可以用于不相关进程之间的通信。原创 2022-10-17 15:46:48 · 876 阅读 · 0 评论 -
[Linux] 进程程序替换之实现一个简单的shell
e(env) 表示自己维护环境变量。原创 2022-11-28 20:16:00 · 564 阅读 · 1 评论 -
[Linux] 进程管理之进程等待
代码】[Linux] 进程等待。原创 2022-08-12 19:09:11 · 729 阅读 · 0 评论 -
[Linux] 获取环境变量的三种方式
获取环境变量的三种方式原创 2022-08-07 16:55:47 · 6487 阅读 · 1 评论
分享