CCIE思科教育培训 CCIE培训

tcp/ip详解之tcp交互和成块数据流

最近复习了下tcp/ip的东西,做点记录吧。

一、交互数据流

1、经受时延的确认

tcp在接收到数据包的时候通常并不立即发送ack,而是等待一个时延,在此期间如果有数据要发送就将ack与要发送的数据一起发送,如果没有,就单独发送ack。在第一次接收到数据包时设立一个定时器,超时时延一般为200ms,这样有助于减少线路上的ack数量。

2、Nagle算法

在交互环境中,小数据包会有很多,在一个网络环境不是很好的情况下,会阻塞网络。Nagle算法可以减少网络上的小数据包的数量。算法规定,在一个tcp连接中未经确认的小数据包只能有一个,即第一个数据包发送出去之后,必须等它的确认到达之后才能继续发送数据包,在此期间,待发送的小数据包组成一个大的数据包,等ack到达之后发送出去。

3、通告窗口

通告窗口是指接收方通告的窗口大小,表示发送方最大可发送的数据量,在tcp/ip中多指tcp接收缓存的大小,书中所说的到达指的是到达接收方的ip缓冲区,并非指到达接收方tcp缓存。

二、成块数据流

1、滑动窗口

滑动窗口是由发送方维护的,接收方通告的窗口总大小减去未经确认的字节数即为可发送的数据字节数。见《tcp/ip详解》P212。

2、PUSH标志

tcp报文中有一个标志字段是PUSH,当接受方接收到这样报文时,会将缓存中的所有数据提交上层进程。

3、慢启动

如果没有慢启动设置,发送方一开始便向网络发送多个报文段,直至达到接收方通告的敞口大小为止,但这种方式会严重降低tcp连接的吞吐量。慢启动为发送方增加了另一个窗口:拥塞窗口(cwnd)。拥塞窗口被初始化为一个最大报文段(MSS),此后,每收到一个ACK,拥塞窗口就增加一个报文段,发送方取拥塞窗口与通告窗口中的最小值为发送上限。拥塞窗口是发送方使用的流量控制,通告窗口是接收方使用的流量控制。(通告窗口决定滑动窗口大小,和拥塞窗口一起进行流量控制)。

4、带宽时延的乘积

通道容量计算方法:

通道容量(bit)= 带宽(b/s) * RTT(s)

例题:a、b两地之间有一个128ms时延,速率为256000b/s的链路吞吐量为120000b/s,问此时的窗口大小为多少?此线路的带宽时延乘积为0.128*256000 = 32768bit,也就是说,在第一个报文的ack到达之前,发送方可以发送4096byte的报文,但是现在只发送了0.128*120000 = 1920byte的报文,所以接收方窗口大小是1920byte。



Tags:

发布: admin 分类: CCIE思科 评论: 0 浏览: 68
留言列表
发表留言
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。