select模型+epoll模型+reactor模型

1.服务端实现

socket()-->bind()-->listen()-->accept()-->recv()-->send()-->close()

2.客户端实现

socket()-->connect()-->send()-->recv()-->close()

3.tcp三次握手 listen函数

客户端--->服务端  发送:SYN(请求连接)、序列号x,进入SYN_SEND状态               connect()开始执行三次握手

服务端-->客户端  发送:服务端确认收到,然后发送ACK=x+1,SYN(请求连接)、序列号y,进入SYN_RECV状态  服务端在listen的时候,二次握手,然后将连接信息放入SYN_QUEUE半连接队列  

                           半连接队列(syn queue)最大值 /proc/sys/net/ipv4/tcp_max_syn_backlog  可以进行修改

                           半连接队列未满,将连接信息放入半连接队列;半连接队列已满,丢弃,或者在tcp_max_syn_backlog文件中修改半连接最大值

客户端-->服务端  发送: 客户端收到后,发送ACK=y+1,双方建立ESTABLISHED       进入accept_QUEUE全连接队列,然后accept从全连接队列取已连接的sockfd,accept是没有参与三次握手的

                           全连接队列(accept queue)的最大值 /proc/sys/net/core/somaxconn (默认128)

                           全连接队列未满,将半连接队列中连接信息移除,然后放入全连接队列;全连接队列满,服务器丢弃,然后由client重传,一定次数后client认为异常,断开连接

4.tcp四次挥手 accept函数

主动-->被动方      发送:FIN请求,序列号x            进入FIN_WAIT1状态

被动方-->主动方  发送:被动方确认收到,然后发送ACK=x+1   被动方进入CLOSE_WAIT状态,主

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Reactor模型是一种用于构建高性能网络应用程序的设计模式。它基于事件驱动的方式,通过集中式的事件循环来处理并发的网络请求。Reactor模型的核心思想是将I/O操作抽象为事件,然后通过事件驱动的方式来处理这些事件。 Reactor模型通常包含以下几个组件: 1. Reactor:它是整个模型的核心,负责监听并分发事件。Reactor会采用非阻塞的方式监听多个I/O事件,当有事件发生时,会将事件分发给相应的处理器进行处理。 2. Handlers/Event Handlers:它们负责具体事件的处理。当Reactor分发一个事件时,会根据事件类型找到对应的Handler,并调用相应的处理方法来处理该事件。 3. Event Demultiplexer:它用于监听和检测事件的发生。Event Demultiplexer可以使用多种机制,如select、poll、epoll等,来实现对事件的监听和检测。 Reactor模型的流程如下: 1. 初始化:创建Reactor实例、注册事件监听器和事件处理器。 2. 启动事件循环:Reactor开始监听并等待事件的发生。 3. 事件分发:当有事件发生时,Event Demultiplexer通知Reactor,并将触发的事件传递给Reactor。 4. 事件处理:Reactor根据事件类型找到对应的Handler,并调用相应的处理方法来处理事件。 5. 返回事件循环:事件处理完成后,Reactor继续等待下一个事件的发生。 Reactor模型的优点是能够处理大量并发的网络请求,提供高性能和可伸缩性。通过事件驱动的方式,避免了线程和进程切换的开销,提高了系统的效率。此外,Reactor模型还能够方便地实现各种高级功能,如定时器、多线程处理等。 需要注意的是,Reactor模型是一种抽象的设计模式,具体实现可以有多种方式,如传统的select/poll模型、基于事件驱动的epoll模型等。每种实现方式都有其特点和适用场景,开发人员可以根据具体需求选择合适的实现方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值