技术控

49-使用 poll 改写服务器

在前面,我们使用了select改写了服务器,本文使用poll来改写服务器。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已...

48-拒绝服务型攻击(Denial-of-Service Attacks)

拒绝服务型攻击(Denial-of-ServiceAttacks),简称dos攻击。它针对服务器漏洞,使用特殊手段消耗服务器资源,从而达到服务器无法正常为其它客户端提供正常服务的目的。是的,我们之前用select改写的服务器就存在漏洞。有没...

47-将多进程并发服务器改成 IO 复用

只有趟过各种坑,解决了各种离奇古怪的网络编程异常,才能一步一步的提升,其次再学习新的技术,就不会感觉困惑。前面的程序,我们只是先拿客户端进行了开刀,将其修改成了IO多路复用模型,因为它最简单。后面我还看到,即使这样很简单,但是还有很多很多的...

51-套接字选项(概述)

相信你学过前面的TCP协议也知道,里头的算法非常多,有些算法你可以开启,有些你可以关闭。比如你可以设置发送和接收缓冲区大小,也可以设置是否打开Nagle算法等等。这些是如何做到的呢?有很多方法可以用来获取和设置影响套接字的选项:getsoc...

50-使用 epoll 改写服务器

使用epoll改写服务器,会让我们的程序变得更加简单、高效。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过...

53-套接字选项(SO_REUSEADDR)

SO_REUSEADDR是非常常用的选项之一,它有四个功能,我待会再写,接下来先看实验。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp....

55-套接字选项(TCP_NODELAY)

开启本选项,将禁止Nagle算法。有关Nagle算法的细节,请参考《TCP协议(Nagle)》。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/...

54-套接字选项(SO_LINGER)

SO_LINGER是相当复杂的选项之一,它主要影响close和shutdown函数的行为(参考man手册),为了方便讨论,后面我以close为例。在不同的平台上,SO_LINGER选项表现行为也不一样,不同的类unix系统不一样,windo...

57-其它套接字选项

还有很多套接字选项,比如SO_KEEPALIVE,SO_RCVBUF,SO_SNDBUF等,这些就不打算在博客里详细去实验,大家可以自己使用opt程序进行实验。以后如果我们遇到了非得用它的时候,再会详细的去讨论它们,本章我们主要掌握几个常见...

56-套接字选项(TCP_CORK)

Nagle算法尽量减少小分组出现在网络上,而TCP_CORK是完全避免小分组出现在网络上。该选项是在Linux2.2才引入的。cork这个单词,意为“塞子”,我们把TCP发送缓冲区想象成一个水池,而cork的作用就是把这个水池的出口堵住,直...

59-UDP 数据报丢失

1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitpull更新一下。本节程序所使用的程...

58-基于 UDP 协议的回射服务器

1.UDP协议概述UDP协议比TCP协议要简单的多,它是一种无连接的协议。无连接,意味着各个报文没有顺序性,你可能先发了一个数据包A,后发一个数据包B,结果对方却先收到B,后收到A.UDP协议首部也非常简单,如图1.图1UDP首部UDP协议...