Linux网络设计
文章平均质量分 95
Linux网络设计
闲谈社
有没有生发神药推荐啊
展开
-
2.10 高性能异步IO机制:io_uring
为了方便说明io_uring的作用,先举一个通俗点的例子。原创 2023-06-24 01:11:15 · 880 阅读 · 1 评论 -
2.9 epoll的实现原理
epoll的实现原理原创 2023-06-20 15:39:50 · 372 阅读 · 1 评论 -
2.8 基于DPDK的UDP用户态协议栈实现
如何实现网络协议栈,首先需要,有以下几种方式1)原生socket2)netmap3)dpdk。原创 2023-06-18 15:41:21 · 925 阅读 · 0 评论 -
2.7 协程设计原理
/协程的状态 typedef enum _co_status {CO_NEW , //新建 CO_READY , // 就绪 CO_WAIT , //等待 CO_SLEEP , //睡眠 CO_EXIT , //退出 } co_status_t;int birth;//协程创建的时间 int coid;//协程的id struct context ctx;//上下文信息 struct scheduler * sched;//调度器 void *(* entry)(void *);原创 2023-06-13 16:22:42 · 654 阅读 · 0 评论 -
2.6 TCP与UDP的可靠性传输
ARQ模型响应有两种,UNA(此编号前所有包已收到,如TCP)和ACK(该编号包已收到),光用UNA将导致全部重传,光用ACK则丢失成本太高,以往协议都是二选其一,而 KCP协议中,除去单独的 ACK包外,所有包都有UNA信息。这种方式需要在 TCP 头部「选项」字段里加一个 SACK 的东西,它可以将已收到的数据的信息发送给发送方,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。因此若MTU=1500字节,而UDP 发送的数据包过大,需要拆包发送。原创 2023-06-10 18:24:05 · 1381 阅读 · 1 评论 -
2.5 TCP网络协议
传输控制块(TCB)是TCP协议的核心数据结构之一,它用于维护TCP连接状态和处理TCP数据传输。每个TCP连接都有一个对应的TCB,其中包含了该连接的相关信息,如序列号、确认号、窗口大小等。在TCP连接过程中,TCB扮演着非常重要的角色。例如,在建立连接时,客户端和服务器端会相互发送SYN和ACK消息来协商初始序列号等信息,在这个过程中就需要使用到TCB;在数据传输阶段,每次发送或接收数据都需要更新TCB中的相关字段,以便双方能够正确地维护连接状态。原创 2023-06-07 18:58:27 · 3452 阅读 · 0 评论 -
2.4 网络设计与redis、memcached、nginx组件
redis是单线程单reactor,可以把IO放入线程池,也可以把业务计算部分放入线程池。如果业务之间交互比较多,但加锁简单,可以用多线程memcached如果业务之间交互比较少,可以用多进程ngnix。原创 2023-06-06 11:37:57 · 502 阅读 · 1 评论 -
2.3 基于reactor的HTTP服务器实现
基于事件驱动的reactor网络设计模型,实现HTTP服务器。由于reactor已经将网络层封装抽象化,因此我们可以只关注HTTP服务器的收(request)和发(respons),仅需针对conn对象进行操作。原创 2023-06-05 11:33:49 · 695 阅读 · 0 评论 -
2.2 事件驱动的reactor网络设计模型
事件驱动的reactor。其开发效率比直接使用IO多路复用要高,它一般是单线程的,设计目标是希望一个线程使用CPU的全部资源。原创 2023-06-05 11:34:24 · 697 阅读 · 0 评论 -
2.1 网络io、io多路复用select/poll/epoll、基于事件驱动的reactor
网络I/O请求是指在计算机网络中,向其他主机或服务器发送请求或接收响应的操作。这些请求可以包括获取网页、下载文件、发送电子邮件等。网络I/O请求需要使用合适的协议和通信方式来进行数据传输,例如HTTP、FTP、SMTP等。要完成一个完整的 TCP/IP 网络通信过程,需要使用一系列函数来实现。这些函数包括 bind、listen、accept 和 recv/send 等。对于第4步的请求,如果向下面方式处理,则只能接受一个客户端的请求。原创 2023-05-31 21:13:07 · 1469 阅读 · 0 评论