文章分类 - UNIX网络编程
学习网络编程的笔记
摘要:Reactor 又叫Event loop,事件驱动模型,反应堆模型。它有两个要点。 1. 存在一个 无限循环的 事件分发线程,或者叫 reactor 线程, event loop 线程。这个事件分发的背后,就是poll,epoll等I/O技术。 2. 所有的I/O操作都可以抽象为事件 ,每个事件必须
阅读全文
摘要:Poll select有个致命的缺点,所支持的文件描述符个数有限,linux系统中默认最大值1024。 poll突破了文件描述符的限制 。 和select有个很大的不同在于,poll不会修改传入值,而是将结果保留在revents字段中。 。 和 select 函数对比一下,我们发现 poll 函数和
阅读全文
摘要:C10K问题 如何在一台物理机上同时服务 10000 个用户?这里 C 表示并发,10K 等于 10000。 现在的条件下,普通用户使用 Java Netty、Libevent 等框架或库就可以轻轻松松写出支持并发超过 10000 的服务器端程序,甚至于经过优化之后可以达到十万,乃至百万的并发,但在
阅读全文
摘要:EPOLL epoll用法 epoll 通过监控注册的多个描述字,来进行 I/O 事件的分发处理。不同于 poll 的是,epoll 不仅提供了默认的 level triggered(条件触发)机制,还提供了性能更为强劲的 edge triggered(边缘触发)机制。 使用 epoll 进行网络程
阅读全文
摘要:非阻塞I/O 非阻塞I/O配合I/O多路复用技术,是高性能网络编程的核心。 阻塞VS非阻塞 阻塞的本质是,CPU被切换给其它应用程序了,原因就在于资源拿不到。 非阻塞则不然,即使资源拿不到,我也不等了,你直接告诉我没有即可,我继续干其他事情。 从买书看阻塞与非阻塞 你去书店买书。 阻塞I/O:你告诉
阅读全文
摘要:TCP关闭连接 我们知道发起关闭连接的一方会有一段时间处于TIME_WAIT状态。那么UNP如何发起关闭连接? 我们知道,一个 TCP 连接需要经过三次握手进入数据传输阶段,最后来到连接关闭阶段。在最后的连接关闭阶段,我们需要重点关注的是“半连接”状态。因为 TCP 是双向的,这里说的方向,指的是数
阅读全文
摘要:使用socket建立连接 服务端做准备: 创建套接字 bind:绑定套接字地址 使用时,我们需要将IPv4,IPv6的地址格式转换为通用地址格式
阅读全文
摘要:TIME_WAIT TCP 四次挥手过程中,发起连接断开的一方会有一段时间处于 TIME_WAIT 的状态,TIME_WAIT 是用来做什么的么? 现实的故障 在一次升级线上应用服务之后,我们发现该服务的可用性变得时好时坏,一段时间可以对外提供服务,一段时间突然又不可以,大家都百思不得其解。登录到服
阅读全文
摘要:Server Client 一,客户端服务器模型 客户端与服务端沟通的具体过程: 1. 客户端按照 双方约定的格式 来发送请求给服务端。这样,服务器可以理解 2. 服务器收到这个请求,按照 双方约定的格式 解释它,并做出相应的操作,比如执行一个sql语句操作数据库 3. 服务器完成处理,给客户端发送
阅读全文

浙公网安备 33010602011771号