2024年3月25日发(作者:)
TCP协议中FLAG的含义
TCP FLAG 标记基于标记的TCP包匹配经常被用于过滤试图打开新连接的TCP数据
包。
• TCP标记和他们的意义如下所列:
• * F : FIN - 结束; 结束会话
• * S : SYN - 同步; 表示开始会话请求
• * R : RST - 复位;中断一个连接
• * P : PUSH - 推送; 数据包立即发送
• * A : ACK - 应答
• * U : URG - 紧急
• * E : ECE - 显式拥塞提醒回应
• * W : CWR - 拥塞窗口减少
示例:
• 三次握手Three-way Handshake
一个虚拟连接的建立是通过三次握手来实现的1. (B) --> [SYN] --> (A)假如有服务器
A、客户机B. 当B要和A通信时,B首先向A发一个SYN (Synchronize) 标记的包,告
诉A请求建立连接.注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头
Resources). 只有当A收到B发来的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连接完成。注意: ACK包就是仅ACK 标记设为1
的TCP包.特别注意:需要注意的是当三此握手完成、连接建立以后,TCP连接的每个包
都会设置ACK位 PS:这就是为何连接跟踪很重要的原因了. 没有连接跟踪,防火墙将无法
判断收到的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连接的唯一方法. 有时,如果主机需要尽快关闭连接(或连接超


发布评论