上一页 1 2 3 4 5 6 7 8 ··· 10 下一页
摘要: 一、概述 我们在最开始介绍TCP头结构的时候,里面有个URG的标志位,还有一个Urgent Pointer的16bits字段。当URG标志位有效的时候,Urgent Poinert用来指示紧急数据的相对于TCP头中系列号Seq的位置,系列号和紧急指针值的和我们称呼为退出点(exit point)。应用程序写入数据的时候可以通过MSG_OOB的socket选项来指定紧急数据。实际上因为... 阅读全文
posted @ 2016-11-07 14:08 lshs 阅读(1426) 评论(0) 推荐(0) 编辑
摘要: 1、第一个终端运行nesttest,nesttest首先fork一个子进程,然后父进程退出,子进程首先打开一个txt普通文件对应fd为3,然后创建一个epfd,对应fd为4 lybxin@Inspiron:~/MyRes/LNP/tcp/epolltest$./nesttest& [1]29274 阅读全文
posted @ 2016-11-07 14:08 lshs 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 一、概述我们之前介绍过一种具有大的带宽时延乘积(band-delay product、BDP)的网络,这种网络称为长肥网络(LongFatNetwork,即LFN)。我们想象一种简单的场景,假设发送端的发送窗口为5000bytes,网络的RTT为200ms,那么每秒的最大速率则为5000*(1000/200)=25000bytes/s,这大约为24kb/s,可以看到这个速率是非常低的,这就是TCP... 阅读全文
posted @ 2016-11-07 14:07 lshs 阅读(2309) 评论(0) 推荐(0) 编辑
摘要: 一、SWS介绍 前面我们已经通过示例看到如果接收端的应用层一直没有读取数据,那么window size就会慢慢变小最终可能变为0,此时我们假设一种场景,如果应用层读取少量数据(比如十几bytes),接收端TCP有了少量的新的接收缓存后如果立即进行window update把新的window size通告发送端的话,发送端如果立即发送数据,那么接收端缓存可能又会立即耗尽,window ... 阅读全文
posted @ 2016-11-07 14:06 lshs 阅读(2271) 评论(0) 推荐(0) 编辑
摘要: 一、TCP流控 之前我们介绍过TCP是基于窗口的流量控制,在TCP的发送端会维持一个发送窗口,我们假设发送窗口的大小为N比特,网络环回时延为RTT,那么在网络状况良好没有发生拥塞的情况下,发送端每个RTT就可以发送N比特的数据,发送端的速率应该与N/RTT成正比,因此通过改变发送窗口的大小就可以控制 阅读全文
posted @ 2016-11-07 14:05 lshs 阅读(3847) 评论(0) 推荐(0) 编辑
摘要: 一、简介 我们之前介绍过,TCP报文中的window size表示发出这个报文的一端准备多少bytes的数据,当TCP的一端一直接收数据,但是应用层没有及时读取的话,数据一直在TCP模块中缓存,最终受限于接收缓存的大小,window size会变为0,此时我们称呼这个接收窗口为零窗(zero window),对端也不能在发送更多的数据。如果随后本端应用层从TCP接收缓存中读取了足够数... 阅读全文
posted @ 2016-11-07 14:05 lshs 阅读(13529) 评论(3) 推荐(4) 编辑
摘要: 一、Cork算法概述Cork算法与Nagle算法类似,也有人把Cork算法称呼为super-Nagle。Nagle算法提出的背景是网络因为大量小包小包而导致利用率低下产生网络拥塞,网络发生拥塞的时候性能还会进一步下降,因此Nagle算法通过ACK确认包来触发新数据包的发送(ACK确认包意味着对端已经接收到了一个数据包,即有一个数据包已经离开中间网络,此时可以在向中间网络注入一个数据包块,这称呼为s... 阅读全文
posted @ 2016-11-07 14:04 lshs 阅读(2001) 评论(0) 推荐(0) 编辑
摘要: 一、Nagle算法概述之前我们介绍过,有一些交互式应用会传递大量的小包(称呼为tinygrams),这些小包的负载可能只有几个bytes,但是TCP和IP的基本头就有40bytes,如果大量传递这种小包,会严重降低网络利用率,还可能造成网络拥塞。福特公司就曾经遇到过这种问题,John Nagle提出了一种通过ACK报文控制TCP发包的方法解决了这种问题,这种方法也就以Nagle名字命名,称为Nag... 阅读全文
posted @ 2016-11-07 14:03 lshs 阅读(2952) 评论(1) 推荐(0) 编辑
摘要: 一、简介之前的内容中我们多次提到延迟ACK(Delayed Ack),延迟ACK是在RFC1122协议中定义的,协议指出,一个TCP实现应该实现延迟ACK,但是ACK不能被过度延迟,协议给出延迟ACK的最大时间为0.5s。如果发送端连续发送最大的数据报文,那么没两个数据报文就需要回复一次ACK。延迟ACK主要目的是等待接收者应用层接收到数据处理后有可能会发送一个响应,这样ACK报文就可以和这个响应... 阅读全文
posted @ 2016-11-07 14:02 lshs 阅读(4337) 评论(2) 推荐(0) 编辑
摘要: 在前面的内容中我们依次介绍了TCP的连接建立和终止过程和TCP的各种重传方式。接着我们在这部分首先关注交互式应用TCP连接相关内容如延迟ACK、Nagle算法、Cork算法等,接着我们引入流控机制(flow control)和关联的窗口管理(window management)过程。在开篇之前我们先介绍几个相关的概念。交互式TCP连接(interactive TCP connection):交互式... 阅读全文
posted @ 2016-11-07 14:01 lshs 阅读(1606) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 10 下一页