本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严
禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn

1. 前言

普通防火墙限制流量方法是一旦流量超过限制值就丢包,所丢弃的包由连接双方重新发包来恢复,这样的缺点就是流量带宽仍然被浪费了一部分,也浪费了防火墙的一部分处理能力,对于非TCP流量,基本只能用此方法,但对于TCP流量,可以找到更好的流量限制方法,让TCP通信双方自动降低通信速度。

2. 基本原理

在TCP包头中有一个16位的window字段,用来表示接收方的接收缓冲区能接收多少数据,发送方一次不能发送超过该值的数据,这样起到控制流量的作用。

本文提出的TCP流量控制方法就是根据此window值处理,一旦防火墙发现TCP连接的流量超过限值,并不丢包,正常转发,但向发送方发送一个ACK包,不带任何数据,因此不影响正常通信,此ACK包中window值为0,表示接收方已经不能接收数据,发送方TCP收到此包后,会自动降低发送速度,这样防火墙上就不用丢掉本来就是合法的包,因而没有带宽浪费。

对于TCP通信双方本身,如果防火墙采用丢包方法来限制,丢包较多时发送方也会采用诸如slow start等算法来减少发送速度以适应限制值,但不论如何防火墙也要丢不少包,浪费了一些处理能力和网络的带宽。

3. 实验结果

测试用HTTP下载一个大约1M字节的文件,限制下载流量为10Kbytes,用超量丢包的方法,所丢包累计超过490K字节,相当于通信双方所传输数据几乎有1/3被丢弃;而使用调整window值的方法,没有丢包,防火墙构造的ACK包自动降低了发送方发送速度,但限制的流量速度虽然设的是 10K,但实际大约只是6K左右。通过抓包分析,当防火墙发出window为0的ACK包后,发送方停顿了好几秒钟才重新发送新包。

4. 结论

通过发送0窗口值的TCP确认包的方法来限制TCP流量是可行的,减少了防火墙的丢包,本质上节约了带宽,缺点是流量限制值不如丢包方式准确,但可以保证肯定不超过限值,可以通过实验找一个平均因子来修正流量设定值来达到期望的带宽限制值。

发表于: 2006-07-26,修改于: 2006-07-26 08:44,已浏览2980次,有评论7条 推荐 投诉   网友: skipjack     时间:2006-07-26 17:06:10 IP地址:218.247.216.★

两个疑问:

1)防火墙发了一个win=0的ack包,那么真实的目的地发送的ack包,防火墙如果处理?

2)这个win=0的ack包,他的ack_seq值是多少?是数据包数据首部序号,还是尾部序号?如果是尾部序号,那么这个原先的数据包在防火墙转发后通住目的地过程中丢失了,发送方将不会再重传了呀?

 网友: yfydz    时间:2006-07-26 17:09:42 IP地址:218.247.216.★

1. 纯粹的ACK不占用序列号,接收方后续的ACK防火墙同样转发就行

2. 取接收方最后一个通过防火墙的包的ACK

 网友: 本站网友     时间:2006-08-05 20:14:01 IP地址:221.194.171.★

在linux上怎么具体实现,原理都是明白的。

    网友: yfydz    时间:2006-08-07 08:41:00 IP地址:218.247.216.★

怎么实现那就是看每个人的水平了,又没有现成的

   网友: skipjack     时间:2006-08-22 15:52:02 IP地址:218.247.216.★

很简单

1)抓包发现应该做流量限制

2)反转这个数据包的源和目的IP地址与端口

3)设置win为0,设置ack_seq值,并重新计算校验和

4)返弹回这个数据包

5)OK~

   网友: yfydz    时间:2006-08-22 16:34:33 IP地址:218.247.216.★

FT,嘴那么不严,:)

  网友: 本站网友     时间:2007-09-18 17:23:23 IP地址:220.248.75.★

更好的实现还是进行流量限制。

不过Drop Tail的方法显然不合适,已经给出了结果了。

合适的方法是,RED。

防火墙限制TCP流量新方法相关推荐

  1. web应用防火墙检测恶意流量的方法

    web应用防火墙检测异常或恶意流量主要是基于以下几个模型: 第一,如果WAF采用黑名单的做法,它只会阻止列表中包含已知攻击的请求.众所周知的攻击(例如SQL注入.拒绝服务和跨站脚本)通常包含容易检测的 ...

  2. 流量分类方法设计(一)——参考论文整理

    流量分类方法设计(一)--参考论文整理 因为最近在做流量分类有关的工作,所以将整个工作思路整理下来,希望对以后进一步的学习和论文写作有所帮助. 这一篇主要整理一下最近有关流量分类的论文,介绍他们的设计 ...

  3. pwnat——一种无需第三方服务器就能完成NAT点对点P2P穿透的基于UDP打洞技术的新方法

    pwnat--一种无需第三方服务器就能完成NAT点对点P2P穿透的基于UDP打洞技术的新方法 简介 传统的udp打洞 UDP 打洞原理及过程 pwnat技术,无需第三方服务器! pwnat用法 pwn ...

  4. Cell:新方法PopCOGenT鉴定微生物基因组间的基因流动

    文章目录 基于微生物种群生物学定义的逆向生态学方法 日报 摘要 主要结果 图1. 重组微生物基因组比非重组微生物基因组共享更长和更高频的一致性区域 图2. 长度偏差测量最近的基因转移事件 图3.最近基 ...

  5. python tcp服务器_Python 创建TCP服务器的方法

    问题 你想实现一个服务器,通过TCP协议和客户端通信. 解决方案 创建一个TCP服务器的一个简单方法是使用 socketserver 库.例如,下面是一个简单的应答服务器: from socketse ...

  6. linux限制单个ip频繁连接,限制单个IP并发TCP连接的方法

    限制单个IP并发TCP连接的方法适应于保护Linux上的各种TCP服务,使用iptables 中patch-o-matic中iplimit补丁来实现,对各种TCP服务比较通用. 做法: 配置Linux ...

  7. 探索处理数据新方法,8 个重点搞懂云数据库 DBaaS 到底是什么!

    作者| Rohan Wadiwala.Mangesh More 翻译 | 天道酬勤,编辑 | Carol 出品| CSDN云计算(ID:CSDNcloud) 在分析的世界中,网站的每次点击都是数据分析 ...

  8. 谷歌和GitHub 联手提出新方法,提振软件供应链安全

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士团队 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的 ...

  9. linux 查看防火墙对应的进程,Linux系统防火墙进程查看的实用方法

    Linux系统防火墙进程查看的实用方法 作者 HonestQiao 2008年03月17日 16:00 启动防火墙 1) 重启后生效 开启: chkconfig iptables on 关闭: chk ...

  10. 无需建网站,不用发帖,持续获取搜索引擎流量的方法(灰白项目皆可)

    无论做什么赚钱项目,都需要流量,在线下叫客户,在线上叫流量.如果能搞定流量,无论是卖产品赚钱,做项目赚钱,还是提供服务赚钱,都将不在话下.可以说赚钱的过程,说简单点就是搞定精准流量的过程.现在互联网上 ...

最新文章

  1. 全球首个AI驾校教练+驾照考官已上岗,装手机里就能用,再也不怕挨教练骂了...
  2. jenkins中配置Ant
  3. 修改linux swap空间的swappiness,降低对硬盘的缓存
  4. [luogu3231 HNOI2013] 消毒 (二分图最小点覆盖)
  5. Long Long Message
  6. APP-V5.0的Sequencer过程
  7. JSON Web Token (JWT),服务端信息传输安全解决方案
  8. Android系统init进程启动及init.rc全解析
  9. foxmail邮箱日历怎么新建事务
  10. 小汤学编程之JavaScript学习day04——自定义对象、原型与原型链、BOM
  11. 基于TCP协议的网络摄像头的设计与实现
  12. 802.11ax速览
  13. signature=fd45b8c9a90eebce5d855f07302ab4ee,Private Use Area
  14. SDL游戏之路(十一)--按钮制作
  15. cv2.imread()读出的矩阵shape
  16. React Native与原生的图片交互问题
  17. 成都榆熙教育咨询有限公司:拼多多电商新经济,个人电商如何参与?
  18. 降本提效!注册中心在蚂蚁集团的蜕变之路
  19. linux服务器远程修改mac地址,linux下修改MAC地址问题解决方法
  20. 断言信息与元素等待_Sinno_Song_新浪博客

热门文章

  1. Linux常用查找命令
  2. 徐州市建筑物矢量数据(Shp格式+带高度)
  3. spring boot高校科研管理系统毕业设计源码222055
  4. 【python编程实例】python程序设计课程
  5. 【L298N 驱动电机的线路连接图】
  6. 二进制空间权重矩阵_“生成空间权重矩阵”的工作原理
  7. android跑马灯代码,Android中实现跑马灯效果
  8. InTouch软件介绍
  9. Wireless基本概念
  10. 2022年计算机二级考试C语言程序设计冲刺题及答案