
Linux网络设计
文章平均质量分 95
Lion 莱恩呀
一个热爱分享高性能服务器后台开发知识的博主,目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。技能涵盖了多个领域,包括C/C++、Linux、Nginx、MySQL、Redis、fastdfs、kafka、Docker、TCP/IP、协程、DPDK等。
展开
-
进程间通信 IPC 完全指南:各种机制的原理与实战
在现代计算机系统中,进程间通信(IPC)是实现多任务协作和数据共享的核心技术。本文将探讨几种主要的IPC机制及其在操作系统和应用程序中的实际应用,帮助读者理解和应用这些关键技术。通过深入探讨管道、消息队列、共享内存、信号和套接字等IPC方式,我们将揭示它们的优缺点及选择的适用场景,为进程间通信的实现提供全面的指导和见解。原创 2024-07-25 09:00:00 · 2476 阅读 · 2 评论 -
ip 命令:比 ifconfig 更强大、更灵活的网络配置工具
ip命令比ifconfig功能更强大,更灵活,并且使用netlink套接字机制,比ifconfig的ioctl机制更先进。虽然ip命令可能看起来更复杂,但它可以完成ifconfig的所有功能,并且提供了更多高级功能。目前,Linux 发行版同时提供ifconfig和ip命令,可以根据自己的需要选择使用。那么,您认为哪种命令更方便,您更喜欢使用哪种命令呢?原创 2024-06-05 09:00:00 · 1319 阅读 · 2 评论 -
TCP服务器的演变过程:C++使用libevent库开发服务器程序
在上一节中,我们学习了如何使用 epoll 构建高效的 reactor 网络模型来开发服务器。本节将深入探讨另一个强大的工具——开源库 libevent,它可以简化服务器程序的开发过程,让我们更专注于业务逻辑处理。我们将从 libevent 的介绍开始,详细分析其内部结构和封装层级,并通过一个完整示例代码展示如何利用 libevent 来构建高并发的 TCP 服务器程序。原创 2024-01-21 13:21:44 · 1885 阅读 · 3 评论 -
TCP服务器的演变过程:使用epoll构建reactor网络模型实现百万级并发(详细代码)
在现代互联网应用中,高并发性能是至关重要的。Reactor模型作为处理并发I/O的常见模式,凭借其高效的事件处理机制,能够有效提升服务器的并发能力。本文将深入探讨如何使用epoll构建Reactor网络模型,并结合详细代码实现,帮助读者从零开始构建支持百万级并发的TCP服务器。通过学习Reactor模型,您将掌握构建高性能网络应用的核心技术,为应对日益增长的用户需求做好准备。原创 2024-01-12 08:30:00 · 2000 阅读 · 3 评论 -
【TCP服务器的演变过程】使用IO多路复用器epoll实现TCP服务器
手把手教你从0开始编写TCP服务器程序,体验开局一块砖,大厦全靠垒。为了避免篇幅过长使读者感到乏味,对【TCP服务器的开发】进行分阶段实现,一步步进行优化升级。本节,在上一章节的基础上,将IO多路复用机制select改为更高效的IO多路复用机制epoll,使用epoll管理每个新接入的客户端连接,实现发送和接收。epoll是Linux内核中一种可扩展的IO事件处理机制,可替代select和poll的系统调用。处理百万级并发访问性能更佳。原创 2024-01-11 08:30:00 · 1164 阅读 · 3 评论 -
TCP服务器的演变过程:IO多路复用机制select实现TCP服务器
手把手教你从0开始编写TCP服务器程序,体验开局一块砖,大厦全靠垒。为了避免篇幅过长使读者感到乏味,对【TCP服务器的开发】进行分阶段实现,一步步进行优化升级。本节,在上一章节的基础上,将并发的实现改为IO多路复用机制,使用select管理每个新接入的客户端连接,实现发送和接收。原创 2023-12-26 20:15:44 · 820 阅读 · 4 评论 -
TCP服务器的演变过程:多进程实现一对多的TCP服务器
多进程方式实现TCP服务器,为每个新接入的客户端分配进程,实现一个服务器程序处理多个客户端连接。原创 2023-12-24 15:53:24 · 2359 阅读 · 17 评论 -
TCP服务器的演变过程:揭秘使用多线程实现一对多的TCP服务器
手把手教你从0开始编写TCP服务器程序,体验开局一块砖,大厦全靠垒。本篇在前一篇的基础上,添加多线程,为每个新接入的客户端分配线程,实现一个服务器程序处理多个客户端连接。原创 2023-12-22 16:22:00 · 2325 阅读 · 23 评论 -
从哈希表到红黑树:探讨 epoll 是如何管理事件的?
epoll 是 Linux 操作系统提供的一种 I/O 事件通知机制,用于高效地管理大量的文件描述符(sockets、文件、设备等)的异步 I/O 操作。它的目的是在高并发的网络应用中提供更好的性能和资源利用率,相较于传统的 I/O 多路复用技术(如 select 和 poll)具有更高的效率。基本概念: epoll 提供了一种非阻塞的 I/O 操作方式,它允许应用程序同时监视多个文件描述符,并在这些描述符上发生事件时通知应用程序。这些事件可以包括可读、可写、错误等情况。原创 2023-08-27 22:58:06 · 1302 阅读 · 2 评论 -
TCP Socket性能优化秘籍:掌握read、recv、readv、write、send、sendv的最佳实践
本文旨在了解到如何优化TCP Socket的读写操作,掌握read、recv、readv、write、send、sendv的最佳实践。文章将提供实用的技巧和建议,并介绍性能测试和调优的方法,帮助读者提升网络通信的效率和性能。原创 2023-07-09 18:50:06 · 3245 阅读 · 27 评论 -
深入理解协程原理:为你的代码注入活力
一、协程的意义。二、异步的执行流程。三、协程的基本操作:“切换”的方式--switch、create:创建协程、yield:让出CPU、resume:恢复协程运行权。四、协程的定义。五、调度器的定义。原创 2022-12-03 20:52:41 · 1213 阅读 · 0 评论 -
Linux网络设计之手写定时器timer
设计一个定时器时,先确定时间精度;选择驱动定时器的方式;选择合适的数据接口;设计定时器基本接口 和扩展接口;考虑相同触发时间的定时任务处理。原创 2022-09-09 17:16:23 · 544 阅读 · 0 评论 -
Linux网络设计之定时器方案以及时间轮
时间轮原理根据时钟规律而来。时间指针不断移动,如果指向的槽存在任务则执行定时任务,减少了任务的无效检测。时间轮通过多个层级存放定时任务,第一层组织最近关注的延时任务,是实际执行的层级;其他层级只负责向上一层级重新映射。原创 2022-09-08 22:24:15 · 923 阅读 · 0 评论 -
Linux网络设计之实现io_uring用户态接口
io_uring比epoll好的点是io_uring使用共享内存,不仅仅共享了IO事件,需要的变量也通过共享内存共享到用户空间,像SQ和CQ队列。io_uring不仅可以处理网络IO,也可以处理磁盘IO。原创 2022-09-07 20:39:36 · 563 阅读 · 0 评论 -
Linux网络设计之异步IO机制与io_uring
io_uring主要由三部分构成:内核提供的三个系统调用接口(io_uring_setup、io_uring_register、io_uring_enter),内核实现的系统调用,应用层提供的liburing库。io_uring_submite会在底层协议栈执行accept、recv、send等功能。从fio测试磁盘IO的测试结果来看,io_uring的IOPS与libaio相同,是psync的两倍。io_uring的异步操作在内核下完成,用户态调用api是感觉不到异步操作的。原创 2022-09-06 14:33:14 · 1032 阅读 · 0 评论 -
Linux网络设计之TCP/IP滑动窗口
(1)TCP通过以字节为单位的滑动窗口实现可靠传输。(2)TCP进行流量控制时使用四个算法:慢启动、拥塞避免、快重传、快恢复。(3)滑动窗口是动态的,它的大小取接收端可接受窗口大小和网络可发送大小的最小值。原创 2022-09-04 23:04:46 · 1375 阅读 · 0 评论 -
Linux网络设计之用户态协议栈与dpdk
dpdk提供丰富的api。dpdk可以实现旁路获取网络数据包,获取到的原始数据可以用户实现协议栈,以太网协议的解析 --> IP协议解析–>TCP/UDP解析等等。在进行协议栈调试时,可以使用wareshare工具抓包分析。原创 2022-09-03 18:44:53 · 2092 阅读 · 3 评论 -
linux网络设计之用户态协议栈设计与netmap
应用层: 最接近用户的一层,为用户程序提供网络服务。主要协议有HTTP、FTP、TFTP、SMTP、DNS、POP3、DHCP等。表示层: 数据的表示、安全、压缩。管理数据的解密和加密。会话层: 负责在网络中的两个节点之间的建立、维持和终止通信。传输层: 模型中最重要的一层,负责传输协议的流控和差错校验。数据包离开网卡后进入的就是传输层;主要协议有:TCP、UDP等。网络层: 将网络地址翻译成对应的物理地址。主要协议有:ICMP、IP等。数据链路层: 建立逻辑连接、进行硬件地址寻址、差错校验等功能原创 2022-09-01 12:50:25 · 844 阅读 · 0 评论 -
高效通信的新范式:探索异步请求在网络设计中的创新思路
异步将请求和接收分离,一个线程负责发起请求,一个线程负责接收返回,减少了等待结果的过程,性能比较高;但不符合人类的理解思维,因此理解起来不那么容易。原创 2022-08-26 19:35:17 · 976 阅读 · 0 评论 -
Linux网络设计之TCP网络协议栈
掌握TCP三次握手和四次挥手的过程,熟悉TCP状态转换。清楚什么是SYN包和ACK包。原创 2022-08-25 11:33:02 · 1268 阅读 · 0 评论 -
Linux网络设计之reactor网络模型及其应用
reactor是将对IO的检测转换为对事件的处理,是一种异步事件机制。介绍三种使用reactor的网络组件 redis,memcached,nginx原创 2022-08-23 16:32:30 · 1361 阅读 · 0 评论 -
Linux网络设计之网络IO的职责
熟悉网络编程的四个关注点(建立连接、消息到达、消息发送、断开连接),深入理解操作IO和检测IO,这样才能很好的理解网络编程的源码,设计出高效的网络模型。特别需要理解TCP的三次握手和四次挥手过程。...原创 2022-08-17 11:57:06 · 855 阅读 · 0 评论 -
Linux网络设计之websocket服务器实现
websocket是在单个TCP连接上进行全双工通信的协议,允许客户服务端主动向客户端推送数据。客户端和服务器只需要完成一次握手,两者就可以创建持久性的连接,并进行双向数据传输。websocket是独立的,创建在TCP上的协议。为了兼容现有的设施, WebSocket 协议使用与 HTTP 协议相同的端口, 并使用 HTTP Upgrade 机制来进行 WebSocket 握手, 当握手完成之后, 通信双方便可以按照 WebSocket 协议的方式进行交互。.........原创 2022-08-14 23:21:11 · 2152 阅读 · 0 评论 -
Linux网络设计之Reactor与http静态服务器
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。Reactor是一种事件驱动机制,程序需要提供回调函数,注册到reactor中。Reactor模型包含三个重要组件:多路复用器,事件分离器,事件处理器。...原创 2022-08-10 15:33:25 · 789 阅读 · 0 评论 -
Linux网络设计之Reactor模型和百万级并发
网络并发,通俗的讲就是服务器可以承载的客户端数量。Reactor模型开发效率比直接使用IO多路复用要高,它一般是单线程的,设计目标是希望一个线程使用CPU的全部资源;带来的优点是,在每个事件处理中很多时候不需要考虑共享资源的互斥访问。...原创 2022-08-08 10:16:14 · 667 阅读 · 2 评论 -
Linux网络设计之网络IO与epoll
Linux网络IO与epoll的使用epoll是Linux内核中一种可扩展的IO事件处理机制,可替代select和poll的系统调用。处理百万级并发访问性能更佳。原创 2022-08-04 14:19:30 · 422 阅读 · 5 评论 -
Linux网络设计之网络IO与select
Linux TCP网络设计,select io多路复用原创 2022-08-01 12:01:35 · 574 阅读 · 0 评论