随笔分类 -  Linux

Linux相关知识点记录
linux 线程池 EPOLLONESHOT事件
摘要:线程池: 线程池是由服务器预先创建的一组子线程,线程池中的线程数量应该和 CPU 数量差不多。线程池中的所有子线程都运行着相同的代码。当有新的任务到来时,主线程将通过某种方式选择线程池中的某一个子线程来为之服务。相比与动态的创建子线程,选择一个已经存在的子线程的代价显然要小得多。至于主线程选择哪个子 阅读全文

posted @ 2023-11-13 10:08 廿陆 阅读(135) 评论(0) 推荐(0) 编辑

linux 服务器编程基本框架和两种高效事件的处理模式
摘要:服务器编程基本框架 虽然服务器程序种类繁多,但其基本框架都一样,不同之处在于逻辑处理。 I/O 处理单元是服务器管理客户连接的模块。它通常要完成以下工作:等待并接受新的客户连接,接收客户数据,将服务器响应数据返回给客户端。但是数据的收发不一定在 I/O 处理单元中执行,也可能在逻辑单元中执行,具体在 阅读全文

posted @ 2023-11-10 17:26 廿陆 阅读(29) 评论(0) 推荐(0) 编辑

linux Web服务器以及HTTP协议
摘要:Web Server(网页服务器): 一个Web Server就是一个服务器软件(程序),或者是运行这个服务器软件的硬件(计算机)。其主要功能是通过 HTTP 协议与客户端(通常是浏览器(Browser))进行通信,来接收,存储,处理来自客户端的HTTP请求,并对其请求做出 HTTP 响应,返回给客 阅读全文

posted @ 2023-11-08 18:13 廿陆 阅读(125) 评论(0) 推荐(0) 编辑

linux 阻塞/非阻塞、 同步/异步(网络IO) Unix/Linux上的五种IO模型
摘要:典型的一次 IO 的两个阶段是什么?数据就绪 和 数据读写 网络IO阶段1: 数据就绪(数据准备):根据系统 IO 操作的就绪状态(分为阻塞和非阻塞) 阻塞:调用IO的方法的线程进入阻塞状态 非阻塞:不会改变线程的状态,通过返回值判断 网络IO阶段2: 数据读写:根据应用程序和内核的交互方式(将TC 阅读全文

posted @ 2023-11-07 11:34 廿陆 阅读(59) 评论(0) 推荐(0) 编辑

linux 本地套接字通信
摘要:本地套接字的作用:本地的进程间通信 有关系的进程间通信 没有关系的进程间的通信 本地套接字实现流程与网络套接字类似,一般采用 TCP 通信流程 本地套接字通信流程: //服务器端 //1.创建监听的套接字 int lfd = socket(AF_UNIX/AF_LOCAL, SOCK_STREAM, 阅读全文

posted @ 2023-11-03 16:22 廿陆 阅读(58) 评论(0) 推荐(0) 编辑

linux 组播
摘要:组播(多播): 单播地址标识单口 IP 接口,广播地址标识某个子网的所有 IP 接口,多播地址标识一组 IP 接口。单播和广播是寻址方案的两个极端(要么单个要么全部),多播则在两者之间提供一种折中方案。多播数据报只应该由对它感兴趣的接口接收,也就是说由运行相应多播会话应用系统的主机上的接口接收。另外 阅读全文

posted @ 2023-11-03 11:40 廿陆 阅读(149) 评论(0) 推荐(0) 编辑

linux 广播 UDP
摘要:UDP通信:广播 向子网中多台计算机发送消息,并且子网中所有的计算机都可以接收到发送方发送的消息,每个广播消息都包含一个特殊的 IP 地址,这个 IP中子网内主机标志部分的二进制全部为 1(255) a. 只能在局域网中使用 b. 客户端需要绑定服务器广播使用的端口,才可以接收到广播的消息 //设置 阅读全文

posted @ 2023-11-03 10:59 廿陆 阅读(71) 评论(0) 推荐(0) 编辑

linux UDP 通信
摘要:UDP: #include <sys/types.h> #include <sys/socket.h> ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_add 阅读全文

posted @ 2023-11-03 09:51 廿陆 阅读(20) 评论(0) 推荐(0) 编辑

linux 多路复用---epoll
摘要:rbr(红黑树):需要检测的文件描述符 rdlist:有数据传递的文件描述符 epoll API: /* #include <sys/epoll.h> //创建一个新的 epoll 实例,在内核中创建了一个数据,这个数据中有两个比较重要的数据, 一个是需要检测的文件描述符的信息(红黑树),还有一个是 阅读全文

posted @ 2023-10-31 11:02 廿陆 阅读(55) 评论(0) 推荐(0) 编辑

linux 多路复用---poll
摘要:poll定义: /* #include <poll.h> struct pollfd { int fd; //委托内核检测的文件描述符 short events; //委托内核检测文件描述符的什么事件 short revents; //文件描述符实际发生的事件(返回的事件) }; //struct 阅读全文

posted @ 2023-10-30 16:59 廿陆 阅读(35) 评论(0) 推荐(0) 编辑

linux IO多路复用 select poll epoll
摘要:I/O多路复用(I/O多路转接)*** ***I/O多路复用使得程序能同时监听多个文件描述符,能够提高程序的性能***,Linux下实现的 I/O 多路复用的系统调用主要有 select、poll 和 epoll。 输入指的是程序数据写入到内存中 从内存读取到文件中是输出 I/O指的是对两端(客户端 阅读全文

posted @ 2023-10-25 11:13 廿陆 阅读(22) 评论(0) 推荐(0) 编辑

linux TCP状态转换 半关闭 shutdown netstat 端口复用 setsockopt
摘要:TCP状态转换:发生在三次握手四次挥手的过程中 黑色为异常的信息; 红色线为客户端; 绿色虚线为服务器端; 报文段寿命: 2MSL(Maximum Segment Lifetime) 主动断开连接的一方,最后进出入一个 TIME_WAIT状态,这个状态会持续: 2msl msl:官方建议:2分钟,实 阅读全文

posted @ 2023-10-24 11:40 廿陆 阅读(59) 评论(0) 推荐(0) 编辑

linux 多进程实现并发服务器 多线程并发
摘要:TCP通信并发** 要实现TCP通信服务器处理并发任务,使用多线程或多进程来解决。 思路: 1. 一个父进程,多个子进程 2. 父进程负责等待并接受客户端的连接 3. 完成通信,接受一个客户端连接,就创建一个子进程用于通信。 客户端: 1 //TCP通信的客户端 2 3 #include <stdi 阅读全文

posted @ 2023-10-24 08:54 廿陆 阅读(87) 评论(0) 推荐(0) 编辑

linux TCP滑动窗口 四次挥手
摘要:TCP滑动窗口 滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。滑动窗口协议是用来改善吞吐量的一种技术,即容许 阅读全文

posted @ 2023-10-22 11:20 廿陆 阅读(49) 评论(0) 推荐(0) 编辑

linux TCP 三次握手
摘要:TCP三次握手: TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的”连接“,其实是 客户端 和 服务器的内存里保存的一份关于对方的信息,如 IP地址,端口号等。 TCP 可以看成是一种字节流,它会处理 IP 层或以下的层的 丢包、重复以及错误问题。在连接的建立 阅读全文

posted @ 2023-10-12 21:57 廿陆 阅读(23) 评论(0) 推荐(0) 编辑

linux TCP通信实现 服务器端 - 客户端
摘要:服务器端: 1 //TCP通信的服务器端 2 3 #include <stdio.h> 4 #include <arpa/inet.h> 5 #include <unistd.h> 6 #include <string.h> 7 int main() 8 { 9 //1.创建 socket(用于监听 阅读全文

posted @ 2023-10-12 21:12 廿陆 阅读(61) 评论(0) 推荐(0) 编辑

linux TCP 通信流程 套接字函数 socket() bind() listen() accept() connect()
摘要:TCP 和 UDP -> 传输层的协议 UDP: 用户数据报协议,面向无连接,可以单播,多播,广播,面向数据报(类似战争中无线电的广播),不可靠。 TCP: 传输控制协议,面向连接的,可靠的,基于字节流,仅支持单播传输(点对点)。 UDP TCP 是否创建连接 无连接 面向连接 是否可靠 不可靠 可 阅读全文

posted @ 2023-10-12 12:22 廿陆 阅读(52) 评论(0) 推荐(0) 编辑

linux socket地址
摘要:socket地址: //socket地址其实是一个结构体,封装端口号和 IP等信息。 后面的 socket 相关的 API 需要使用到这个 socket 地址。 //客户端 --> 服务器(IP 、 Port) 通用 socket 地址: socket 网络编程接口中表示 socket 地址是结构体 阅读全文

posted @ 2023-10-11 20:15 廿陆 阅读(66) 评论(0) 推荐(0) 编辑

linux socket 字节序 大小端检测
摘要:socket(通过文件描述符操作)介绍:一系列的API完成协议的封装和分用 所谓socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈, 阅读全文

posted @ 2023-10-11 10:41 廿陆 阅读(114) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示