1,首先回顾一下TCP协议:

TCP数据包中有六个标志位(Code Bits):6 位标志域。表示为:紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN。在整个TCP数据传输过程中ACK位除了在第一次握手的时候置位为0外,其他任何时候都置位为1。
三次握手过程:

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

2,再次拿一个ACL来举例说明(摘自TCP/IP路由技术 第一卷 第556页):

假设你实现了一个访问列表可以阻止外部发起的TCP会话进入到你的网络中,但是你又想让内部发起的TCP会话的响应通过,那应该怎么办?通过检查TCP段头内的ACK和RST标记,关键字established可以实现这一点。如果这两个标记都没有被设置,表明源点正在向目标建立TCP连接,那么匹配不会发生。最终报文将会在访问列表中的后继行中被拒绝。示例如下:

access-list 110 permit tcp any 172.22.0.0 0.0.255.255 established

access-list 110 permit tcp any host 172.22.15.83 eq 25

access-list 110 permit tcp 10.0.0.0 0.255.255.255 172.22.114.0 0.0.255 eq 23

第1行:如果链接是从网络172.22.0.0发起的,那么允许从热和原电到该网络的TCP报文通过;

第2行:允许来自任意源点,且目标端口号是主机172.22.16.83的端口25的TCP报文通过;

第3行:允许来自网络10.0.0.0,去向网络172.22.114.0/24且目标端口为23的TCP报文通过。

通过上面的ACL,大家有没有注意过,一个从any到172.22.15.83的25端口的连接,TCP的三次握手,第一次握手肯定是需要匹配第2行ACL,因为此报文的标志位ACK置位为0,不能匹配第1行ACL。但是此会话的后面的所有数据报文都会匹配第1行了,因为此报文的标志ACK已经置位为1了。这里是否有问题,请相关牛人鉴定!

3,ACL对分片包的处理(摘自一英文技术宝典,经我翻译如下):

当一IP包被分片时,仅在第一个分片中包含所有三层与四层信息,而后续分片则只包含三层信息,四层信息丢失。

ACL的处理机制:

对于permit ACEs:当第一分片被匹配上后,后续分片也会匹配上(不检查四层信息);

对于deny ACEs:所有分片都要检查三、四层信息。实际上,对于deny ACEs,当第一分片被匹配上后被丢弃,而后续分片由于无四层信息则不能匹配该deny ACEs,可能在后面检查时允许通过,则传到目标地后,由于不能进行重组而被丢弃。但这样占用了带宽及目标主机的CPU。

综合以上,根据3,是否可以判定ACL的处理机制有点smart,它可以根据每条ACE条目记录某一个时段的匹配内容,匹配内容主要包括源和目标IP地址,甚至端口号(tcp条目),从而不会将流量报文匹配错。也就是说根据2说的同一会话的后续报文不会去匹配第1行ACL,而根据ACL的记录内容去匹配第2行ACL。

转载于:https://blog.51cto.com/ghostzyz/816401

established关键字相关推荐

  1. FTP协议的分析和扩展

    2019独角兽企业重金招聘Python工程师标准>>> FTP协议的分析和扩展 出处: http://elly.blogdriver.com/index.jsp >> 1 ...

  2. FTP 基础及连接跟踪

    一.FTP基本 FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的& ...

  3. vsftpd 配置(中)

    原贴:http://www.ititgo.cn/news_view.asp?newsid=575 vsftpd 配置(中) 录入员:admin 来源: 加入时间:2007-6-4 11:30:32 点 ...

  4. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  5. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  6. volatile关键字之全面深度剖析

    引言 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字 ...

  7. mysql屏蔽关键字实现方法_PHP屏蔽过滤指定关键字的方法

    本文实例讲述了PHP屏蔽过滤指定关键字的方法.分享给大家供大家参考.具体分析如下: 实现思路: 一.把关键字专门写在一个文本文件里,每行一个,数量不限,有多少写多少. 二.PHP读取关键字文本,存入一 ...

  8. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  9. Java this 关键字使用

    this 引用就是本类的一个对象 理解这句话看下面一段代码 package me; public class Me {String name; //成员变量int age;public Me(Stri ...

最新文章

  1. Android选项卡置底的方法
  2. go mod依赖离线安装_Go语言go mod包依赖管理工具使用详解
  3. nginx做代理服务
  4. git pull命令报错
  5. 计算机c盘要满了电脑会卡吗,C盘满了 电脑卡顿了,怎么清理空间
  6. 数据库系统概论(第五版) 王珊 第一章课后习题答案
  7. PCB板设计后期处理流程及工作步骤有哪些?2021-07-29
  8. 企业OKR终极目标:让员工成功
  9. SEO优化教程之关键词密度及TDK标签布局
  10. VMware vCenter Converter Standalone
  11. 金蝶软件认证显示服务器异常,金蝶提示云服务器异常
  12. C语言100题练习计划 31——计算两数的和与差(函数实现)
  13. 超好看的二次元透明网站登录页模板
  14. Word中的插入页眉 ?Word中页眉横线如何删除?
  15. 贪心算法 | 最优装载问题——加勒比海盗船
  16. 通州新城规划图 - 新通网http://www.xintongwang.com
  17. VTK- vtkStripper
  18. 创客集结号:无人机发展的技术难点
  19. 计算机环境与应用专业就业前景,2018资源环境科学专业就业前景和就业方向分析...
  20. 用电子计算机控制海洋牧场,教师用书2016 2017学年高中地理第2单元开发海洋资源第3节海洋生物资源及其开发整合提升.doc...

热门文章

  1. 判断1000-2000之间的闰年(优化写法)
  2. fasync驱动异步通知机制
  3. 每日一题:leetcode80.删除有序数组中的重复元素贰
  4. linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql
  5. 进入一个目录需要那些权限
  6. 大牛带你直击优秀开源框架灵魂,给大家安排上!
  7. vue实现可编辑的文字_苹果还自带文字转语音,只要一键按下便可实现,今天分享给大家...
  8. Ubuntu中NS2安装详细教程
  9. 手机web网页制作的认识(有关meta标签)
  10. 如何实现一个教师与学生教学辅助平台?