转 TCP标志位详解及tcp拦截配置_syn tcp max syn backlog

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:同步标志
【转】TCP标志位详解及tcp拦截配置_syn tcp max syn backlog
同步序列编号(Synchronize SequenceNumbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。


*ACK:确认标志
确认编号(AcknowledgementNumber)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。

*RST:复位标志
复位标志有效。用于复位相应的TCP连接。

*URG:紧急标志
紧急(The urgent pointer)标志有效。紧急标志置位,

*PSH:推标志
该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理telnet 或 rlogin等交互模式的连接时,该标志总是置位的。

*FIN:结束标志
带有该标志置位的数据包用来结束一个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个包在连接建立过程中的次序,为什么?该连接访问的服务是什么服务?

00200050 83 aa 46 49 3e dd 33 96 37 a3 a012...P..FI>.3.7...

003016 a0c4 c0 00 00 02 04 05 b4 04 02 08 0a d79b................

004062 b700 56 4a 2a 01 03 0302b..VJ*....(1)

002083aa 00 50 33 96 37 a2 00 00 00 00 a002.....P3.7.......

003016 d084 1d 00 00 02 04 05 b4 04 02 08 0a 0056...............V

00404a 2a00 00 00 00 01 03 0300J*........(2)

002083aa 00 50 33 96 37 a3 46 49 3e de 8010.....P3.7.FI>...

003016 d0f3 4b 00 00 01 01 08 0a 00 56 4a 36 d79b...K.......VJ6..

004062b7b.(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,二进制是00000010,即表示有syn没有ack。

(1)是第二次握手,flags位上为12,二进制是00010010,即表示有syn和ack。

(3)是第三次握手,flags位上为10,二进制是00010000,即表示有ack没有syn。

该连接访问的是80端口,是为HTTP(HyperText TransportProtocol,超文本传输协议)开放的



TCP拦截即TCPintercept,大多数的路由器平台都引用了该功能,其主要作用就是防止SYN泛洪攻击。SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。我们可以利用路由器的TCP拦截功能,使网络上的主机受到保护(以Cisco路由器为例)。

  开启TCP拦截分为三个步骤:

  1. 设置TCP拦截的工作模式

  TCP拦截的工作模式分为拦截和监视。在拦截模式下,路由器审核所有的TCP连接,自身的负担加重,所以我们一般让路由器工作在监视模式,监视TCP连接的时间和数目,超出预定值则关闭连接。

  格式:ip tcp intercept mode (intercept|watch)

  缺省为intercept

  2. 设置访问表,以开启需要保护的主机

  格式:access-list [100-199] [deny|permit] tcp sourcesource-wildcard

  destination destination-wildcard

  举例:要保护219.148.150.126这台主机

  access-list 101 permit tcp any host 219.148.150.126

  3. 开启TCP拦截

  ip tcp intercept list access-list-number

  示例:我们有两台服务器219.148.150.126和219.148.150.125需要进行保护,可以这样配置:

  ip tcp intercept list 101

  ip tcp intercept mode watch

  ........

  ip access-list 101 permit tcp any host 219.148.150.125

  ip access-list 101 permit tcp any host 219.148.150.126

  经过这样的配置后,我们的主机就在一定程度上受到了保护。


TCP(Transmission Control Protocol) 传输控制协议

TCP 是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码即 tcp 标志位, 有 6 种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认)
PSH(push 传送) FIN(finish 结束) RST(reset 重置) URG(urgent紧急)

Sequence number(顺序号码) Acknowledgenumber(确认号码)

第一次握手:主机 A 发送位码为 syn=1, 随机产生seq number=1234567 的数据包到服务器, 主
机 B 由 SYN=1 知道, A 要求建立联机;

第二次握手:主机 B收到请求后要确认联机信息,向 A 发送 acknumber=(主机 A 的
seq+1),syn=1,ack=1, 随机产生 seq=7654321 的包

第三次握手:主机 A 收到后检查 ack number是否正确,即第一次发送的 seq number+1, 以及位
码 ack 是否为 1,若正确,主机 A 会再发送 acknumber=(主机 B 的 seq+1),ack=1,主机 B 收到
后确认 seq 值与 ack=1 则连接建立成功。

完成三次握手,主机 A 与主机 B开始传送数据。

在 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 状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据.

实例:

IP 192.168.1.116.3337 > 192.168.1.123.7788: S3626544836:3626544836
IP 192.168.1.123.7788 > 192.168.1.116.3337: S1739326486:1739326486 ack 3626544837
IP 192.168.1.116.3337 > 192.168.1.123.7788: ack1739326487,ack 1

第一次握手:192.168.1.116 发送位码 syn=1,随机产生 seq number=3626544836 的数据包到
192.168.1.123,192.168.1.123 由 SYN=1 知道 192.168.1.116要求建立联机;

第二次握手:192.168.1.123收到请求后要确认联机信息,向 192.168.1.116 发送ack
number=3626544837,syn=1,ack=1, 随机产生 seq=1739326486的包;

第 三次握手:192.168.1.116 收到后检查 acknumber是否正确, 即第一次发送的 seqnumber+1,
以及位码 ack 是否为 1,若正确,192.168.1.116会再发送 ack number=1739326487,ack=1,
192.168.1.123 收到后确认 seq=seq+1,ack=1则连接建立成功。

图解:
一个三次握手的过程(图 1,图 2)

(图 1)

(图 2)

第一次握手的标志位(图 3)

我们可以看到标志位里面只有个同步位,也就是在做请求(SYN)

(图 3)

第二次握手的标志位(图 4)

我们可以看到标志位里面有个确认位和同步位,也就是在做应答(SYN+ ACK)


(图 4)

第三次握手的标志位(图 5)
我们可以看到标志位里面只有个确认位,也就是再做再次确认(ACK)


(图 5)

一个完整的三次握手也就是请求---应答---再次确认

四次分手:

由于 TCP 连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的
数据发送任务后就能发送一个 FIN来终止这个方向的连接。 收到一个 FIN只意味着这一方向上
没有数据流动,一个 TCP 连接在收到一个 FIN后仍能发送数据。首先进行关闭的一方将执行主
动关闭,而另一方执行被动关闭。

(1)客户端 A 发送一个 FIN,用来关闭客户 A到服务器 B 的数据传送(报文段 4)。
(2)服务器 B 收到这个 FIN,它发回一个ACK,确认序号为收到的序号加 1(报文段 5)。
和 SYN 一样,一个 FIN 将占用一个序号。

(3)服务器 B 关闭与客户端 A 的连接,发送一个FIN 给客户端 A(报文段 6)。
(4)客户端 A 发回 ACK报文确认,并将确认序号设置为收到序号加1(报文段 7)。

1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?
这是因为服务端的 LISTEN 状态下的 SOCKET 当收到 SYN报文的建连请求后,它可以把 ACK
和 SYN(ACK 起应答作用, 而 SYN 起同步作用)放在一个报文里来发送。 但关闭连接时,当收到
对方的 FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发
送给对方了,所以你可以未必会马上会关闭 SOCKET,也即你可能还需要发送一些数据给对方之
后,再发送 FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK 报文和 FIN
报文多数情况下都是分开发送的。

2.为什么 TIME_WAIT 状态还需要等 2MSL后才能返回到 CLOSED 状态?
这是因为虽然双方都同意关闭连接了, 而且握手的4 个报文也都协调和发送完毕, 按理可以
直接回到 CLOSED 状态(就好比从 SYN_SEND 状态到ESTABLISH 状态那样);但是因为我们必须
要假想网络是不可靠的,你无法保证你最后发送的ACK 报文会一定被对方收到,因此对方处于
LAST_ACK 状态下的 SOCKET 可能会因为超时未收到 ACK报文,而重发 FIN 报文,所以这个
TIME_WAIT 状态的作用就是用来重发可能丢失的 ACK报文。

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/31389.html

更多阅读

KDJ指标详解篇 kdj指标详解及说明

Stochastic Oscillator (随机摆动指标)又名KDJ 指标,是由George Lane 首创的,最早用于期货市场。Stochastics指标在图表上采用%K和%D两条线,在设计中综合了动量观念、强弱指标与移动平均线的优点,在计算过程中主要研究高低价位与收市价的

DNF全新系统风暴竞技场详解及奖励介绍 风暴部落 竞技场

  DNF游戏最近推出的活动确实挺多的,先是说要推出守护者祭坛,现在又推出了一个风暴竞技场系统。大混战模式,最后生存下来的人会受到万人敬仰哦,其中的奖励自然也是非常强力的。DNF全新系统风暴竞技场详解及奖励介绍——步骤/方法DNF

DMI指标详解 dmi指标详解及实战用法

DMI到底是怎么回事呢?下面就让我们一起来认识一下这个十分有效的技术指标:这四根线分别是:+DI(PDI)、-DI(MDI)、ADX和ADXR。表格的刻度是从0-100,表示从极弱到极强。下面来逐一解释这四根线:+DI:代表多放在市场中的地位.在市场运动中,+DI走得

转载 高中英语词组固定搭配详解及专项练习

原文地址:高中英语词组固定搭配详解及专项练习作者:LangziEducation高中英语词组固定搭配详解及专项练习Langzi编辑随着高考英语命题更贴近生活与实际应用,词组固定搭配的考察越来越频繁,本人特此为高中同学整理一些供参考,希望能起到

声明:《转 TCP标志位详解及tcp拦截配置_syn tcp max syn backlog》为网友女汉子万岁分享!如侵犯到您的合法权益请联系我们删除