
网络编程
nguliu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
TCP连接为什么是三次握手?断开为什么是四次挥手?
1.三次握手TCP连接换成四次握手行不行?为什么?换成两次握手行不行?为什么? 这是我面试时遇到的原题 首先来说一下三次握手,为什么需要三次握手呢?因为TCP提供的是可靠传输服务,因此它在传输之前必须要进行传输的可靠性测试和一些信息的同步,反观UDP就不用这些握手操作。三次握手正好使双方都能测试传输的可靠性,同时也能进行信息同步,三次握手过程如下:那么三次握手到底是在握什么呢?抓包测试一...原创 2020-01-15 16:58:30 · 2194 阅读 · 1 评论 -
TCP、UDP、ICMP协议抓包详解
这里使用tcpdump对TCP、UDP、ICMP协议进行抓包,并详细解析其内容1.实验源码TCP和UDP抓包时使用以下tcp_echoserver.c、tcp_echoclient.c、udp_echoserver.c和udp_echoclient.c进行实验tcp_echoserver.c#include <arpa/inet.h>#include <signal.h...原创 2019-11-29 18:21:31 · 3205 阅读 · 0 评论 -
高性能定时器——时间轮
在上一篇基于升序链表的定时器踢掉空闲连接中,添加定时器的时间复杂度为O(n),删除定时器的时间复杂度为O(1),执行定时任务的时间复杂度为O(1),可以看出添加定时器的执行效率很低,下面讨论的时间轮定时器管理工具可以有效的解决这个问题。时间轮示例: 在上图所示的时间轮内,指针(实线)指向轮子上的一个槽(slot)。 它以恒定的速度顺时针转动,每转动一步就指向下一个槽(虚线指针指向的槽...原创 2019-10-08 17:18:14 · 950 阅读 · 2 评论 -
基于升序链表的定时器踢掉空闲连接
服务器程序通常要定期处理空闲连接:给客户端发一个重连请求,或者关闭该链接,或者其他。linux内核中提供了对连接是否处于活动状态的定期检查机制,我们可以通过socket选项KEEPALIVE来激活它,不过使用这种方式将使得应用程序对廉洁的管理变得比较复杂。因此,我们可以考虑在应用层实现类似KEEPALIVE的机制,以管理所有长时间处于非活动状态的连接。在以下代码中,我们利用alarm函数周期性的...原创 2019-10-06 21:39:12 · 321 阅读 · 0 评论 -
静态网页和动态网页的区别与联系
静态网站的特点:静态网站是最初的建站方式,浏览者所看到的每个页面是建站者上传到服务器上的一个 html ( htm )文件,这种网站每增加、删除、修改一个页面,都必须重新对服务器的文件进行一次下载上传。网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件。静态网页的内容相对...转载 2019-08-27 15:30:29 · 11406 阅读 · 0 评论 -
Reactor模式使用浅析
在reactor.pdf第一句话就直接说到Reactor 设计模式可以为一个应用同时处理一个或者多个客户端请求服务Reactor的事件处理机制Reactor Bing 中文翻译为 “反应堆,反应器”,是一种事件驱动机制。与普通函数调用的不同之处在于:应用程序不是主动的调用某个API完成处理,而是恰恰相反,Reactor逆置了事件处理流程,应用程序需要提供相应的接口并注册到Reactor上,如果...原创 2019-08-23 08:48:00 · 439 阅读 · 0 评论 -
使用条件变量时的线程虚假唤醒
在学习muduo网络库时,看见以下代码段,然后就想为什么要用while循环,做出了以下猜想,后来仔细想想后又觉得不对,正解见下文。T take() { MutexLockGuard lock(mutex_); //always use a while-loop, due to spurious wakeup while (queue_.empty()) { ...原创 2019-08-24 19:41:52 · 322 阅读 · 0 评论 -
标准HTTP协议六种请求方法详解
转至:https://www.cnblogs.com/phpper/p/9127553.html转载 2019-08-24 19:39:46 · 1025 阅读 · 0 评论 -
muduo设计核心摘要
首先是设计的分析,有了设计才能根据设计编码:1、单线程编程模型采用"non-blocking IO + IO multiplexing",即Reactor模型。基本结构是一个事件循环,以事件驱动和事件回调的方式实现业务逻辑。优点:可以用于读写socket,连接的建立,甚至DNS解析都可以用非阻塞方式进行,以提高并发度和吞吐量,利于IO密集的应用。缺点:事件回调函数是非阻塞的,对于涉及网络IO请...转载 2019-08-19 19:26:46 · 134 阅读 · 0 评论 -
常见并发服务器设计方案
1.循环式/迭代式(iterative)服务器示意图如下:这种方案是一种单线程的应用程序,它只能使用短连接而不能使用长连接,原创 2019-06-15 17:40:30 · 1162 阅读 · 0 评论 -
转epoll实现原理
开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高速处理这么多并发连接呢?先简单回顾下如何使用C库封装的3个epoll系统调用吧。int e...转载 2019-05-15 12:09:22 · 171 阅读 · 0 评论