Linux TCP/IP协议栈分析
daitu3201
这个作者很懒,什么都没留下…
展开
-
路由数据结构图
转载 2018-08-09 15:36:45 · 877 阅读 · 0 评论 -
struct sock、struct inet_sock、strct inet_connection_sock和struct tcp_sock数据结构
转载 2018-08-09 16:20:32 · 904 阅读 · 0 评论 -
抖动和延迟之间的区别
延时和抖动是相互关联的两个东西,但是它们并不相同。延时是网络中的一个重要指标,它由四个关键部分组成:处理延时(processing delay),排队延时(queueing delay),传输延时(transmission delay)和传播延时(propagation delay)。它会影响用户体验,并可能因多种因素而发生变化。抖动是基于延时产生的—具体而言,就是前后延时的值不一致。抖动是两个数...转载 2018-09-03 14:20:20 · 44814 阅读 · 0 评论 -
Will EAGAIN returned on send/write for anything other than buffer full?
EAGAIN/EWOULDBLOCK can also be returned (for TCP sockets) when the number of unacknowledged packets has reached the congestion window.To check the status of the socket w.r.t. the congestion window, ...转载 2019-01-02 14:31:15 · 144 阅读 · 0 评论 -
白话TCP运输控制(一) -- TCP的拥塞控制
张家村码头的粮食堆积如山,每天都需要用船运到镇里。但是去镇上有50公里,只有水路可走。一大早,码头工人们就开始干活了, 为了早点干完收工回家,一船接一船,拼命地发送粮食。可是这水路不仅仅是张家村在运粮食,白头村还往外运石头, 东平村还往外运沙子,大家都拼命地往外发货物,再加上各式各样,络绎不绝的商船、客船, 大家很快就发现,船只太多,水面出现拥堵,工人们只好等待。工人们想这也不是个...转载 2019-01-02 15:45:30 · 201 阅读 · 0 评论 -
白话TCP运输控制(二) -- TCP的流量控制
上篇讲的是拥塞控制,这篇讲流量控制。还是以运输粮食为场景。虽然运输的拥塞控制能够在运输效率和拥塞之间达到平衡,但是运输粮食的整体效率还受一个关键因数影响,那就是对岸西村粮食的卸货能力。假设粮食运送到对岸后,要卸放在一个仓库里,随后被运往其他地方。如果运输的太快,仓库载货能力有限,粮食又没有及时被消耗,工人们只好等待仓库腾出地方来卸下新的粮食。显然这样会影响这个工程的效率。后来工人们又想了一...转载 2019-01-02 15:50:37 · 182 阅读 · 0 评论 -
白话讲解Nagle算法和延迟确认
以前对nagle算法有耳闻,利用TCP_NODELAY选项可以禁止他。然后看到延迟ack时,心想TCP_NODELAY选项与他有没有关系呢。其实没有,TCP_NODELAY只是用来禁用nagle算法的。关于他们之间的关系倒可以好好研究下。有以下一个场景,村东和村西隔着一条大河,有几条船在两岸摆渡。由于每次要求过河的人只有一个,如果来一个人就将那个人摆渡过去(假设船只足够多),那势必运输效率非常...转载 2019-01-02 16:06:19 · 273 阅读 · 0 评论 -
Linux I/O多路复用——select函数中的算法
先讨论与IO无关的东西.调用select 的流程是1 将要监听的文件描述符(集)a,b,c选入一个集合S2 调用select,可以设置超时参数4 函数内部设置S集合中的描述符3 函数返回,解析S中还有哪些描述符怎样高效的来实现上述的过程.我们知道文件描述符是一个较小递增不重复的int,根据这个特点,我们可以用bitmap算法来实现,本质是一个映射关系.用几个较少的数来表示很多的数首...转载 2019-01-02 16:24:32 · 219 阅读 · 0 评论