![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程实战
学习 极客时间 《网络编程实战》专栏,整理与笔记
墨1024
抬头看路,低头做事,回头自省
展开
-
浅谈C10K问题 与 解决方案
介绍了C10K问题,以及 五种解决方案:- 阻塞 I/O + 进程- 阻塞 I/O + 线程- 非阻塞 I/O + readiness notification + 单线程(单reactor线程)- 非阻塞 I/O + readiness notification + 多线程(主从reactor)- 异步 I/O + 多线程原创 2020-11-17 20:00:53 · 4702 阅读 · 0 评论 -
Reactor模式与单线程Reactor的C和C++实现
介绍了 Reactor模式 以及 Reactor模式的实现方式:单线程Reactor模式、改进:使用工作者线程池、多Reactor线程模式使用 C 和 C++实现了 单线程Reactor模式,并做了简要说明原创 2020-11-17 19:37:05 · 2712 阅读 · 0 评论 -
IO模式与IO多路复用
说明了 I/O多路复用 select 、poll、epoll的原理与用法介绍了了5种I/O模式:- 阻塞 I/O(blocking IO) BIO- 非阻塞 I/O(nonblocking IO) NIO- I/O 多路复用( IO multiplexing)- 信号驱动 I/O( signal driven IO)- 异步 I/O(asynchronous IO)原创 2020-11-12 23:40:13 · 1013 阅读 · 2 评论 -
网络编程学习: 09 Keep-Alive应用层探活
关键词总结:Keep-Alive代码路径见Github 专栏代码TCP Keep-Alive 选项TCP 有一个保持活跃的机制叫做 Keep-Alive。这个机制的原理是这样的:在一个时间段内(保活时间),如果没有任何连接相关的活动,TCP 保活机制会开始作用,每隔一个时间间隔(保活时间间隔),发送一个探测报文,该探测报文包含的数据非常少,如果连续几个探测报文(保活探测次数)都没有得到响应...原创 2020-03-23 23:45:52 · 593 阅读 · 0 评论 -
网络编程学习: 08 如何优雅地关闭连接
关键词总结:本地套接字代码路径见Github 专栏代码TCP 是双向的,这里说的方向,指的是数据流的写入 - 读出的方向。在绝大数情况下,TCP 连接都是先关闭一个方向,此时另外一个方向还是可以正常进行数据传输。(客户端到服务器端的方向,指的是客户端通过套接字接口,向服务器端发送 TCP 报文;而服务器端到客户端方向则是另一个传输方向。)客户端主动发起连接的中断,将自己到服务器端的数据流方向...原创 2020-03-17 00:34:03 · 1249 阅读 · 0 评论 -
网络编程学习: 07 TIME_WAIT
关键词总结:本地套接字代码路径见Github 专栏代码TIME_WAIT 发生的场景这要从 TCP 的四次挥手说起TCP 连接终止时, 主机 1 发送FIN报文到主机2,主机2收到后进入CLOSE_WAIT,并发送一个ACK对主机2FIN报文应答;同时,主机 2 通过 read 调用获得 EOF,并将结果通知应用程序进行主动关闭操作,主机2发送FIN报文到主机1,主机1收到FIN报文后发...原创 2020-03-05 23:48:49 · 214 阅读 · 0 评论 -
网络编程学习: 06 本地套接字
关键词总结:本地套接字本地套接字概述本地套接字是一种特殊类型的套接字,和 TCP/UDP 套接字不同。TCP/UDP 即使在本地地址通信,也要走系统网络协议栈,而本地套接字,严格意义上说提供了一种单主机跨进程间调用的手段,减少了协议栈实现的复杂度,效率比 TCP/UDP 套接字都要高许多。参考资料:网络编程实战(极客时间)链接:http://gk.link/a/10g9XGitHu...原创 2020-03-04 00:01:35 · 944 阅读 · 1 评论 -
网络编程学习: 05 UDP相关简介
关键词总结:UDPUDP 是一种“数据报”协议,而 TCP 是一种面向连接的“数据流”协议。TCP 是一个面向连接的协议,TCP 在 IP 报文的基础上,增加了诸如重传、确认、有序传输、拥塞控制等能力,通信的双方是在一个确定的上下文中工作的。UDP 没有这样一个确定的上下文,它是一个不可靠的通信协议,没有重传和确认,没有有序控制,也没有拥塞控制。我们可以简单地理解为,在 IP 报文的基础上,...原创 2020-03-01 23:32:38 · 184 阅读 · 0 评论 -
网络编程学习: 04 套接字读写与缓冲区
关键词总结:发送数据(write、send、sendmsg)、读取数据(read)发送数据常用的发送数据的三个函数write、send 和 sendmsg,见参考资料链接ssize_t write (int socketfd, const void *buffer, size_t size)ssize_t send (int socketfd, const void *buffer, si...原创 2020-03-01 22:41:59 · 1003 阅读 · 0 评论 -
网络编程学习: 03 TCP三次握手
关键词总结:bind、listen、accept、connect、TCP 三次握手参考资料:网络编程实战(极客时间)链接:http://gk.link/a/10g9XGitHub链接:https://github.com/lichangke/LeetCodeCSDN首页:https://me.csdn.net/leacock1991欢迎大家来一起交流学习...原创 2020-02-26 00:32:11 · 286 阅读 · 0 评论 -
网络编程学习: 02 套接字和地址
关键词总结:socket、套接字地址格式可以参看 [趣谈网络协议学习] 13 套接字Socket:Talk is cheap, show me the codesocket 到底是什么?在网络编程中,应该怎么理解 socket 呢?先呈上这么一张图上图可以简化为服务器- 初始化 socket(服务端的 socket)- 执行 bind 函数: 将自己的服务能力绑定在一个众所周知的...原创 2020-02-19 23:22:22 · 425 阅读 · 0 评论 -
网络编程学习: 01 认识客户端-服务器网络模型的基本概念
关键词总结:客户端 - 服务器网络编程模型客户端 - 服务器网络编程模型以常用的网络购物为例,每次手机上的操作,都是客户端向服务器发送请求,并接收响应的例子。这个过程如下:客户端发送请求当一个客户端需要服务时,比如网络购物下单,它会向服务器端发送一个请求。这个请求需按照双方约定的格式来发送,以保证服务端可以理解。服务端处理请求服务器端收到这个请求后,依照响应的格式解释它,并进行对应...原创 2020-02-20 11:44:07 · 663 阅读 · 0 评论