TCP全局同步
2016-05-05 13:34
477 查看
原文转自:http://blog.chinaunix.net/uid-24765042-id-3198715.html
随着网络的普及,信息交流与信息共享成为人们日常生活中必不可少的一部分。而网络中信息(数据包)的不断增长,必然引起网络拥塞。于是,拥塞避免显得尤为重要,现在Internet上使用得比较广泛的拥塞避免机制是丢尾(DropTail):当队列的长度达到规定的最大长度时,所有到来的报文都被丢弃。这种丢弃策略会引发tcp 全局同步(global synchronization)现象——由于Internet上数据(Traffic)的突发本质,到达路由器的数据包也往往是突发的。如果队列是满的或者几乎是满的,就会导致在短时间内连续大量地丢封包。而TCP流具有自适应特性(Adaptiveness),来源端发现数据包丢失就急剧地减小发送窗口(congestion window,cwnd),数据包到达速率就会迅速下降,于是网络拥塞得以解除。但来源端得知网络不再拥塞后又开始增加发送速度,最终又造成网络拥塞,而且这种现象常常会周而复始地进行下去,从而在一段时间内网络处于网络利用率(Network Utilization)很低的用状态,降低了整体吞吐量(throughput),这就是所谓地"TCP全局同步"现象。
丢尾会造成TCP流量之间分配带宽不均衡,一些"贪婪"的流量会占用大部分的带宽,而普通的TCP流量分配不了带宽而"饿死"。特别是网络中既有TCP又有UDP流量的时候,TCP流量因为窗口机制(丢尾造成滑动窗口cwnd减小)而释放带宽,UDP流量没有窗口机制,于是UDP流量会迅速占用TCP释放的带宽,最终造成UDP流量占用了所有带宽而TCP流量因没有带宽分配而"饿死"。
随着网络的普及,信息交流与信息共享成为人们日常生活中必不可少的一部分。而网络中信息(数据包)的不断增长,必然引起网络拥塞。于是,拥塞避免显得尤为重要,现在Internet上使用得比较广泛的拥塞避免机制是丢尾(DropTail):当队列的长度达到规定的最大长度时,所有到来的报文都被丢弃。这种丢弃策略会引发tcp 全局同步(global synchronization)现象——由于Internet上数据(Traffic)的突发本质,到达路由器的数据包也往往是突发的。如果队列是满的或者几乎是满的,就会导致在短时间内连续大量地丢封包。而TCP流具有自适应特性(Adaptiveness),来源端发现数据包丢失就急剧地减小发送窗口(congestion window,cwnd),数据包到达速率就会迅速下降,于是网络拥塞得以解除。但来源端得知网络不再拥塞后又开始增加发送速度,最终又造成网络拥塞,而且这种现象常常会周而复始地进行下去,从而在一段时间内网络处于网络利用率(Network Utilization)很低的用状态,降低了整体吞吐量(throughput),这就是所谓地"TCP全局同步"现象。
丢尾会造成TCP流量之间分配带宽不均衡,一些"贪婪"的流量会占用大部分的带宽,而普通的TCP流量分配不了带宽而"饿死"。特别是网络中既有TCP又有UDP流量的时候,TCP流量因为窗口机制(丢尾造成滑动窗口cwnd减小)而释放带宽,UDP流量没有窗口机制,于是UDP流量会迅速占用TCP释放的带宽,最终造成UDP流量占用了所有带宽而TCP流量因没有带宽分配而"饿死"。
相关文章推荐
- TCP/IP协议浅入浅出1
- Android M提示网络变化
- 【fastweixin框架教程3】JAVA进行HTTPS网站访问,PKIX path building failed解决方法
- Spring mvc,uploadifive 文件上传实践(转自:https://segmentfault.com/a/1190000004503262)
- Spring mvc,uploadifive 文件上传实践(转自:https://segmentfault.com/a/1190000004503262)
- tcp协议栈
- HttpClient4 警告: Invalid cookie header 的问题解决
- RxJava+Retrofit+Gson实现网络请求
- Winsock网络编程客户端
- Winock2网络编程服务器端
- HTTP - Session 机制
- Apache主配置文件httpd.conf 详解
- 最全的tcpdump使用详解
- HttpClientGetPost_MultiThreading_ResumeFromBreakPoint
- 使用ntopng,在Linux上搭建基于Web的网络流量监控系统
- HTTP详解(3)-http1.0 和http1.1 区别
- HTTP详解(1)-工作原理
- HTTP详解(2)-请求、响应、缓存
- Python实现HTTP-Basic认证登陆
- springmvc 实现http接口 接受json参数