TCP 标志位
TCP 标志位
URG :此标志表示TCP 包的紧急指针域(后面马上就要说到)有效,用来保证TCP 连接不被中断,并且督促中间层设备要尽快处理这些数据;ACK :此标志表示应答域有效,就是说前面所说的TCP 应答号将会包含在TCP 数据包中;有两个取值:0 和1,为1 的时候表示应答域有效,反之为0;PSH :这个标志位表示Push 操作。所谓Push 操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队;RST :这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包;SYN :表示同步序号,用来建立连接。SYN 标志位和ACK 标志位搭配使用,当连接请求的时候,SYN=1 ,ACK=0 ;连接被相应的时候,SYN=1 ,ACK= 1 ;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN 的数据包,如果对方主机响应了一个数据包回来,就表明这台主机存在这个端口;但是由于这种扫描方式只是进行TCP 三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器不很安全,一台安全的主机将会强制要求一个连接严格的进行TCP 的三次握手;FIN :表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送
FIN 标志位的TCP 数据包后,连接将被断开。这个标志的数据
包也经常被用于进行端口扫描。当一个FIN 标志的TCP 数据包发送到一台计算机的特定端口,如果这台计
算机响应了这个数据,并且反馈回来一个RST 标志的TCP 包,就表明这台计算机上没有打开这个端口,但是这台计算机是存在的;如果这台计算机没有反馈回来任何数据包,这就表明,这台被扫描的计算机存在这个端口。*SYN :同步标志同步序列编号(Synchronize Sequence Numbers) 栏有效。该标志仅在三次握手建立TCP 连接时有效。它提示TCP 连接的服务端检查序列编号,该序列编号为TCP 连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP 序列编号看作是一个范围从0 到4,294 ,967 ,295 的32 位计数器。通过TCP 连接交换的数据中每一个字节都经过序列编号。在TCP 报头中的序列编号栏包括了TCP 分段中第一个字节的序列编号。*ACK :确认标志确认编号(Acknowledgement Number) 栏有效。大多数情况下该标志位是置位的。TCP 报头内的确认编号栏内包含的确认编号(w+1 , Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。*RST :复位标志复位标志有效。用于复位相应的TCP 连接。*URG :紧急标
紧急(The urgent pointer) 标志有效。紧急标志置位,*PSH : 推标志该标志置位时,接收端不将该数据进行队列处理,而是尽可
能快将数据转由应用处理。在处理telnet 或rlogin 等交互模式的连接时,该标志总是置位的。*FIN :结束标志带有该标志置位的数据包用来结束一个TCP 回话,但对应端口仍处于开放状态,准备接收后续数据。
.TCP 的几个状态对于我们分析所起的作用。在TCP 层,有个
tcp三次握手图解FLAGS 字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH,
RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN 表示建立连接,FIN 表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST 表示连接重置。其中,ACK 是可能与SYN ,FIN 等同时使用的,比如SYN 和ACK 可能同时为1,它表示的就是建立连接之后的响应,如果只是单个的一个SYN ,它表示的只是建立连接。TCP 的几次握手就是通过这样的ACK 表现出来的。但SYN 与FIN 是不会同时为1 的,因为前者表示的是建立连接,而后者表示的是断开连接。RST 一般是在FIN 之后才会出现为1 的情况,表示的是连接重置。一般地,当出现FIN 包或RST 包时,我们便认为客户端与服务器端断开了连接;而当出现SYN 和SYN +ACK 包时,我们认为客户端与服务器建立了一个连接。PSH 为1 的情况,一般只出现在DATA 内容不为0的包中,也就是说PSH 为1表示
的是有真正的TCP 数据包内容被传递。TCP 的连接建立和连接关闭,都是通过请求-响应的模式完成的。了解到了TCP 标志位的含义,就可以了解TCP 的三次握手是怎么进行的了:发送端发
送一个SYN=1 ,ACK=0 标志的数据包给接收端,请求进行连接,这是第一次握手;接收端收到请求并且允许连接的话,就会发送一个SYN=1 ,ACK=1 标志的
数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;最后,发送端发送一个SYN=0 ,ACK=1 的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,
一个TCP 连接建立,开始通讯。简述TCP协议连接建立时3次握手的过程。根据TCP头部,说明下列  3 个包在连接建立过程中的次序,为什么?该连接访问的服务是什么服务?0020 00 50 83 aa 46 49
3e dd 33 96 37 a3 a0 12 ...P..FI>.0030 16 a0
c4 c0 00 00 02 04 05 b4 04 02 08 0a d7
9b  .................. 0040 62 b7 00 56 4a 2a 01 03 03 02
b..VJ*  (1)0020 83 aa 00 50 33 96 37 a2 00
00 00 00 a0 02 .... P3.7 ...... 0030 16 d0 84 1d 00 00
02 04 05 b4 04 02 08 0a 00 56  ......................V0040 4a 2a
00 00 00 00 01 03 03 00 J* ....... (2)0020 83 aa 00 50 33 96 37 a3 46 49 3e de 80
10  P3.7.FI>...0030 16 d0 f3 4b 00 00 01 01 08
0a 00 56 4a 36 d7 9b ...K VJ6..0040 62 b7
b. (3)解:在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)是第一次握手,flags 位上为02 ,二进制是0000 0010 ,即表示有syn 没有ack 。(1 )是第二次握手,flags 位上为12,二进制是0001 0010 ,即表示有syn 和ack 。(3)是第三次握手,flags 位上为10 ,二进制是0001 0000 ,即表示有ack 没有syn 。该连接访问的是80 端口,是为HTTP (HyperText Transport Protocol ,超文本传输协议)开放的TCP 拦截即TCP intercept ,大多数的路由器平台都引用了该功能,其主要作用就是防止SYN 泛洪攻击。SYN 攻击利用的是TCP 的三次握手机制,攻击端利用伪造的IP 地址向被攻击端发出请求,而被攻击端发出的响应报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。