TCP: SYN ACK FIN RST PSH URG

2023-11-08

三次握手Three-way Handshake

一个虚拟连接的建立是通过三次握手来实现的

1. (B) --> [SYN] --> (A)

假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接.

注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources). 认识到这点很重要,只有当A受到B发来的SYN包,才可建立连接,除此之外别无他法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你将不能让外部任何主机主动建立连接。

2. (B) <-- [SYN/ACK] <--(A)

接着,A收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作.

注意: SYN/ACK包是仅SYN 和 ACK 标记为1的包.

3. (B) --> [ACK] --> (A)

B收到SYN/ACK 包,B发一个确认包(ACK),通知A连接已建立。至此,三次握手完成,一个TCP连接完成

Note: ACK包就是仅ACK 标记设为1的TCP包. 需要注意的是当三此握手完成、连接建立以后,TCP连接的每个包都会设置ACK位

这就是为何连接跟踪很重要的原因了. 没有连接跟踪,防火墙将无法判断收到的ACK包是否属于一个已经建立的连接.一般的包过滤(Ipchains)收到ACK包时,会让它通过(这绝对不是个好主意). 而当状态型防火墙收到此种包时,它会先在连接表中查找是否属于哪个已建连接,否则丢弃该包

四次握手Four-way Handshake

四次握手用来关闭已建立的TCP连接

1. (B) --> ACK/FIN --> (A)

2. (B) <-- ACK <-- (A)

3. (B) <-- ACK/FIN <-- (A)

4. (B) --> ACK --> (A)

注意: 由于TCP连接是双向连接, 因此关闭连接需要在两个方向上做。ACK/FIN 包(ACK 和FIN 标记设为1)通常被认为是FIN(终结)包.然而, 由于连接还没有关闭, FIN包总是打上ACK标记. 没有ACK标记而仅有FIN标记的包不是合法的包,并且通常被认为是恶意的

连接复位Resetting a connection

四次握手不是关闭TCP连接的唯一方法. 有时,如果主机需要尽快关闭连接(或连接超时,端口或主机不可达),RST (Reset)包将被发送. 注意在,由于RST包不是TCP连接中的必须部分, 可以只发送RST包(即不带ACK标记). 但在正常的TCP连接中RST包可以带ACK确认标记

请注意RST包是可以不要收到方确认的?

无效的TCP标记Invalid TCP Flags

到目前为止,你已经看到了 SYN, ACK, FIN, 和RST 标记. 另外,还有PSH (Push) 和URG (Urgent)标记.

最常见的非法组合是SYN/FIN 包. 注意:由于 SYN包是用来初始化连接的, 它不可能和 FIN和RST标记一起出现. 这也是一个恶意攻击.

由于现在大多数防火墙已知 SYN/FIN 包, 别的一些组合,例如SYN/FIN/PSH, SYN/FIN/RST, SYN/FIN/RST/PSH。很明显,当网络中出现这种包时,很你的网络肯定受到攻击了。

别的已知的非法包有FIN (无ACK标记)和"NULL"包。如同早先讨论的,由于ACK/FIN包的出现是为了关闭一个TCP连接,那么正常的FIN包总是带有 ACK 标记。"NULL"包就是没有任何TCP标记的包(URG,ACK,PSH,RST,SYN,FIN都为0)。

到目前为止,正常的网络活动下,TCP协议栈不可能产生带有上面提到的任何一种标记组合的TCP包。当你发现这些不正常的包时,肯定有人对你的网络不怀好意。

UDP (用户数据包协议User Datagram Protocol)
TCP是面向连接的,而UDP是非连接的协议。UDP没有对接受进行确认的标记和确认机制。对丢包的处理是在应用层来完成的。(or accidental arrival).

此处需要重点注意的事情是:在正常情况下,当UDP包到达一个关闭的端口时,会返回一个UDP复位包。由于UDP是非面向连接的, 因此没有任何确认信息来确认包是否正确到达目的地。因此如果你的防火墙丢弃UDP包,它会开放所有的UDP端口(?)。

由于Internet上正常情况下一些包将被丢弃,甚至某些发往已关闭端口(非防火墙的)的UDP包将不会到达目的,它们将返回一个复位UDP包。

因为这个原因,UDP端口扫描总是不精确、不可靠的。

看起来大UDP包的碎片是常见的DOS (Denial of Service)攻击的常见形式 (这里有个DOS攻击的例子, http://grc.com/dos/grcdos.htm ).

ICMP (网间控制消息协议Internet Control Message Protocol)
如同名字一样, ICMP用来在主机/路由器之间传递控制信息的协议。 ICMP包可以包含诊断信息(ping, traceroute - 注意目前unix系统中的traceroute用UDP包而不是ICMP),错误信息(网络/主机/端口 不可达 network/host/port unreachable), 信息(时间戳timestamp, 地址掩码address mask request, etc.),或控制信息 (source quench, redirect, etc.) 。

你可以在 http://www.iana.org/assignments/icmp-parameters中找到ICMP包的类型。

尽管ICMP通常是无害的,还是有些类型的ICMP信息需要丢弃。

Redirect (5), Alternate Host Address (6), Router Advertisement (9) 能用来转发通讯。

Echo (8), Timestamp (13) and Address Mask Request (17) 能用来分别判断主机是否起来,本地时间 和地址掩码。注意它们是和返回的信息类别有关的。它们自己本身是不能被利用的,但它们泄露出的信息对攻击者是有用的。

ICMP消息有时也被用来作为DOS攻击的一部分(例如:洪水ping flood ping,死 ping ?呵呵,有趣 ping of death)?/p>

包碎片注意A Note About Packet Fragmentation

如果一个包的大小超过了TCP的最大段长度MSS (Maximum Segment Size) 或MTU (Maximum Transmission Unit),能够把此包发往目的的唯一方法是把此包分片。由于包分片是正常的,它可以被利用来做恶意的攻击。

因为分片的包的第一个分片包含一个包头,若没有包分片的重组功能,包过滤器不可能检测附加的包分片。典型的攻击Typical attacks involve in overlapping the packet data in which packet header is 典型的攻击Typical attacks involve in overlapping the packet data in which packet header isnormal until is it overwritten with different destination IP (or port) thereby bypassing firewall rules。包分片能作为 DOS 攻击的一部分,它可以crash older IP stacks 或涨死CPU连接能力。

Netfilter/Iptables中的连接跟踪代码能自动做分片重组。它仍有弱点,可能受到饱和连接攻击,可以把CPU资源耗光。

转载于:https://www.cnblogs.com/starspace/archive/2008/12/18/1357633.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP: SYN ACK FIN RST PSH URG 的相关文章

随机推荐

  • 低版本的openwrt添加openwrt19的支持的python3软件包

    openwrt的扩展软件包放在feeds目录下 python相关的包在feeds packages lang python下 原本openwrt18是不支持python pyserial的 只要从openwrt19中的feeds packa
  • Cache对运营商的意义,对小运营商的意思更大

    转自 http cndefu blog 163 com blog static 59393188201081811111248 Cache对运营商的意义 摘要 各互联网运营商与Chinanet等互联 每月付大量的带宽租用费 在互联互通出口
  • v-text和v-html的区别

    v text和 表达式渲染数据 不解析标签 v html不仅可以渲染数据 而且可以解析标签
  • SQLite Expert (Andorid Sqlite 可视化工具)中文乱码问题解决

    点击菜单栏Tools 继续点击Options 点击第二个General 将Encoding改为 Unicode utf 8 utf 16
  • Java课题笔记~ MyBatis缓存

    为了减少重复查询给数据库带来的压力 MyBatis提供了缓存机制 这种机制能够缓存查询的结果 避免重复的查询 MyBatis提供了两种缓存方式 一种为针对于SqlSession的缓存 默认开启 另一种为针对于全局的缓存 手动开启 一级缓存存
  • python case when用法_oracle菜鸟学习之 select case when的使用

    toc oracle菜鸟学习之 select case when的使用 格式语法 case when 条件1 then action1 when 条件2 then action2 when 条件3 then action3 when 条件N
  • Hexo 在subtile和description中实现换行

    如下所示 用双引号括起来 同时实现 br 即可达到换行目的 Site title LEO S NOTE 标题 subtitle 心有猛虎 细嗅蔷薇 副标题 description Stay Hungry br Stay Foolish 简介
  • Quartus Primer 17.0 下载和安装

    在对FPGA进行开发的过程中 一款合适的IDE是少不了的 Intel Altera 的FPGA使用Quartus Primer 软件进行开发 记录一下Quartus II 17 0下载安装的过程 一 下载 1 在Intel的官网 https
  • 第15章Stata时间序列分析

    目录 15 1时间序列的基本操作 案例延伸 延伸1 清除数据的时间序列格式 延伸2 关于数据处理的一般说明 延伸3 关于时间序列运算的有关说明 15 2单位根检验 1 ADF检验 2 PP检验 案例延伸 15 3协整检验 1 EF ADF检
  • 数据库关系表 ---- Relational table

    数据库关系表 Relational table 什么是关系 relation 关系 relation 的基本属性 约束 Constraints Integrity Constraints 完整性约束 Referential Integrit
  • Zookeeper分布式锁的实现

    众所周知 多个服务间的调用 产生多个JVM问题 当我们使用传统的锁的时候就会出现问题 因为跨JVM中无法可见到同一把锁 这个时候分布式锁就应运而生 例如就出现了Redis分布式锁 基于setnx的方式去实现 当然我们也可以通过zookeep
  • 稳定排序与不稳定排序方法

    这几天笔试了好几次了 连续碰到一个关于常见排序算法稳定性判别的问题 往往还是多选 对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目 当然如果你笔试之前已经记住了数据结构书上哪些是稳定的 哪些不是稳定的 做起来应该可以轻松搞定 本文
  • Qt易忘样式表总结

    目录 前言 1 Qt设置样式的几种方式 2 几种复合控件的样式设置 QTableWidget QCalendarWidget QTreeWidget QSpinBox QComboBox 前言 在使用Qt框架开发软件时 为了美观和更好的用户
  • 域名购买以及解析域名到服务器IP----史上最详细小白教程没有之一

    昨天 我师父看了我的云服务器配置的博客 给我提了个意见 我觉得非常好 以后我会在截图的时候标清楚步骤的 希望各位博友 以后可以给我多提意见 通过评论的方式也可以 我也将推出更多高质量的文章 目前目标是排名突破前10万 如果想一同学习的 欢迎
  • python后端学习(十)多继承和MRO顺序、再论静态方法和类方法、property属性及应用、魔法属性、with与“上下文管理器”

    多继承和MRO顺序 1 单独调用父类的方法 coding utf 8 print 多继承使用类名 init 发生的状态 class Parent object def init self name print parent的init开始被调
  • leetcode 周赛——2848. 与车相交的点

    题目所属分类 差分数组知识点 原题链接 给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标 对于任意下标 i nums i starti endi 其中 starti 是第 i 辆车的起点 endi 是第 i 辆车
  • 宽字节注入讲解

    我讨厌现在的自己 一边压抑着自己的情绪 一边装作没事的样子 一到深夜就彻底崩溃了 天亮后还要微笑面对生活 网易云热评 一 原理 1 单字节字符集 所有的字符都使用一个字节来表示 比如 ASCII 编码 0 127 2 多字节字符集 在多字节
  • 区块链技术入门——核心概念与原理

    区块链的前世今生 密码朋克 Cypherpunk 是一个邮件组 里面有许多大牛 比特币的底层技术 点对点网络 时间戳 加密技术 工作量证明 可以应用到其他领域 将这些技术提炼出来 就提出了区块链概念 区块链不是单一的技术 而是一系列技术的集
  • ASP.NET Core快速入门(第5章:认证与授权)--学习笔记

    课程链接 http video jessetalk cn course explore 良心课程 大家一起来学习哈 任务31 课时介绍 1 Cookie based认证与授权 2 Cookie based认证实现 3 Jwt认证与授权介绍
  • TCP: SYN ACK FIN RST PSH URG

    三次握手Three way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1 B gt SYN gt A 假如服务器A和客户机B通讯 当A要和B通信时 B首先向A发一个SYN Synchronize 标记的包 告诉A请求建立