ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:116.79KB ,
资源ID:7433349      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7433349.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(TCP标志位详解及tcp拦截配置.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

TCP标志位详解及tcp拦截配置.docx

1、TCP标志位详解及tcp拦截配置TCP标志位 URG:此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据; ACK:此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0; PSH:这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队; RST:这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包; SYN:表示同步序号,用来建立连接。SYN标志位和ACK标

2、志位搭配使用,当连接请求的时候,SYN=1,ACK=0;连接被相应的时候,SYN=1,ACK= 1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN的数据包,如果对方主机响应了一个数据包回来,就表明这台主机存在这个端口;但是由于这种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器不很安全,一台安全的主机将会强制要求一个连接严格的进行TCP的三次握手; FIN:表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。当一个FIN标志的TCP数

3、据包发送到一台计算机的特定端口,如果这台计算机响应了这个数据,并且反馈回来一个RST标志的TCP包,就表明这台计算机上没有打开这个端口,但是这台计算机是存在的;如果这台计算机没有反馈回来任何数据包,这就表明,这台被扫描的计算机存在这个端口。 *SYN:同步标志 同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把 TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每

4、一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。 *ACK:确认标志 确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。 *RST:复位标志 复位标志有效。用于复位相应的TCP连接。 *URG:紧急标志 紧急(The urgent pointer) 标志有效。紧急标志置位, *PSH:推标志 该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理 tel

5、net 或 rlogin 等交互模式的连接时,该标志总是置位的。 *FIN:结束标志 带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。 .TCP的几个状态对于我们分析所起的作用。在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置。其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建

6、立连接之后的响应,如果只是单个的一个SYN,它表示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYNACK包时,我们认为客户端与服务器建立了一个连接。PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。TCP的连接建立和连接关闭,都是通过请求响应的模式完成的。 了解到了TCP标志

7、位的含义,就可以了解TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手;接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接建立,开始通讯。简述TCP协议连接建立时3次握手的过程。根据TCP头部,说明下列3个包在连接建立过程中的次序,为什么?该连接访问的服务是什么服务?002000 50 83 aa 46 4

8、9 3e dd 33 96 37 a3 a0 12.P.FI.3.7.003016 a0 c4 c0 00 00 02 04 05 b4 04 02 08 0a d7 9b.004062 b7 00 56 4a 2a 01 03 03 02b.VJ*.(1)002083 aa 00 50 33 96 37 a2 00 00 00 00 a0 02.P3.7.003016 d0 84 1d 00 00 02 04 05 b4 04 02 08 0a 00 56.V00404a 2a 00 00 00 00 01 03 03 00J*.(2)002083 aa 00 50 33 96 37 a3

9、46 49 3e de 80 10.P3.7.FI.003016 d0 f3 4b 00 00 01 01 08 0a 00 56 4a 36 d7 9b.K.VJ6.004062 b7b. (3)解:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYNAC

10、K包,向服务器发送确认包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 inter

11、cept,大多数的路由器平台都引用了该功能,其主要作用就是防止SYN泛洪攻击。SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。我们可以利用路由器的TCP拦截功能,使网络上的主机受到保护(以Cisco路由器为例)。开启TCP拦截分为三个步骤:1. 设置TCP拦截的工作模式TCP拦截的工作模式分为拦截和监视。在拦截模式下,路由器审核所有的TCP连接,自身的负担加重,所以我们一般让路由器工作在监视模式,监视

12、TCP连接的时间和数目,超出预定值则关闭连接。格式:ip tcp intercept mode (intercept|watch) 缺省为intercept2. 设置访问表,以开启需要保护的主机格式:access-list 100-199 deny|permit tcp source source-wildcard destination destination-wildcard举例:要保护219.148.150.126这台主机access-list 101 permit tcp any host 219.148.150.1263. 开启TCP拦截ip tcp intercept list a

13、ccess-list-number示例:我们有两台服务器219.148.150.126和219.148.150.125需要进行保护,可以这样配置:ip tcp intercept list 101ip tcp intercept mode watch.ip access-list 101 permit tcp any host 219.148.150.125ip access-list 101 permit tcp any host 219.148.150.126经过这样的配置后,我们的主机就在一定程度上受到了保护。/*/*/TCP(Transmission Control Protocol)

14、 传输控制协议TCP 是主机对主机层的传输控制协议, 提供可靠的连接服务, 采用三次握手确认建立一个连接:位码即 tcp 标志位, 有 6 种标示:SYN(synchronous 建立联机) ACK(acknowledgement 确认)PSH(push 传送) FIN(finish 结束) RST(reset 重置) URG(urgent 紧急)Sequence number(顺序号码) Acknowledge number(确认号码)第一次握手:主机 A 发送位码为 syn1, 随机产生 seq number=1234567 的数据包到服务器, 主机 B 由 SYN=1 知道, A 要求建

15、立联机;第二次握手:主机 B 收到请求后要确认联机信息,向 A 发送 ack number=(主机 A 的seq+1),syn=1,ack=1, 随机产生 seq=7654321 的包第三次握手:主机 A 收到后检查 ack number 是否正确,即第一次发送的 seq number+1, 以及位码 ack 是否为 1,若正确,主机 A 会再发送 ack number=(主机 B 的 seq+1),ack=1,主机 B 收到后确认 seq 值与 ack=1 则连接建立成功。完成三次握手,主机 A 与主机 B 开始传送数据。在 TCP/IP 协议中, TCP 协议提供可靠的连接服务,采用三次握

16、手建立一个连接。第一次握手:建立连接时,客户端发送 syn 包(syn=j) 到服务器,并进入 SYN_SEND 状态,等待服务器确认;第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN包(syn=k),即 SYN+ACK 包,此时服务器 进入 SYN_RECV 状态; 第三次握手:客户端收到服务器的 SYNACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.实例: IP 192.168.1.116.3337 19

17、2.168.1.123.7788: S 3626544836:3626544836IP 192.168.1.123.7788 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837IP 192.168.1.116.3337 192.168.1.123.7788: ack 1739326487,ack 1第一次握手:192.168.1.116 发送位码 syn1, 随机产生 seq number=3626544836 的数据包到192.168.1.123,192.168.1.123 由 SYN=1 知道 192.168.1.116 要

18、求建立联机;第二次握手:192.168.1.123 收到请求后要确认联机信息,向 192.168.1.116 发送 acknumber=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 则连接建立成功。图解:一个三次握手的过程

19、(图 1,图 2)(图 1)(图 2)第一次握手的标志位(图 3)我们可以看到标志位里面只有个同步位,也就是在做请求(SYN)(图 3) 第二次握手的标志位(图 4)我们可以看到标志位里面有个确认位和同步位,也就是在做应答(SYN + ACK)(图 4)第三次握手的标志位(图 5)我们可以看到标志位里面只有个确认位,也就是再做再次确认(ACK)(图 5)一个完整的三次握手也就是 请求-应答-再次确认四次分手:由于 TCP 连接是全双工的, 因此每个方向都必须单独进行关闭。 这个原则是当一方完成它的数据发送任务后就能发送一个 FIN 来终止这个方向的连接。 收到一个 FIN 只意味着这一方向上没

20、有数据流动,一个 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为什么建立连接协议是三次握手,而关闭连接却是四次握手呢

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

22、D 状态?这是因为虽然双方都同意关闭连接了, 而且握手的 4 个报文也都协调和发送完毕, 按理可以直接回到 CLOSED 状态(就好比从 SYN_SEND 状态到 ESTABLISH 状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的 ACK 报文会一定被对方收到,因此对方处于LAST_ACK 状态下的 SOCKET 可能会因为超时未收到 ACK 报文,而重发 FIN 报文,所以这个TIME_WAIT 状态的作用就是用来重发可能丢失的 ACK 报文。tcpdump抓取TCP标识位按每8位组算,TCP的标志位位于第13个8位组中,如下,第一行一共32位是0 - 3个8位组,

23、第二行是4-7八位组,第三行是8-11八位组,data offset +reserved的前四个是第12个8位组,reserved中的后2位+6个标志位是第13个八位组.因此第13个八位组结构为- - + + + + + +前面2个是保留的,都为0,后面的6个根据不同情况有不同值,例如syn 包 则为00 0 0 0 0 1 0这是二进制转化为十进制就是2因此 tcpdump -ni eth0 tcp13=2 就表示syn包同理,syn+ack包为00 0 1 0 0 1 0化为十进制就是18,因此tcpdump -ni eth0 tcp13=18 表示syn+ack包如果想同时抓syn和sy

24、n+ack包,则进行tcp13位值与掩码进行与运算:tcp13 & 2 = 2原理:既然希望同时抓syn和syn+ack,说明syn位是我们要关心的位置,因此仿照网络掩码的与运算,只关心syn位的掩码是00 0 0 0 0 1 0,将 00010010 SYN-ACK 00000010 SYNAND 00000010 (we want SYN) AND 00000010 (we want SYN)- -= 00000010 = 00000010与运算的结果都是2,因此tcp13 & 2的结果应等于2, 即tcp13 & 2 = 2-如果觉得记忆和计算这些很难,则可以利用tcptcpflags=tcp-syn 这种格式来写,后面的值可以为tcp-fin, tcp-syn, tcp-rst, tcppush,tcp-ack, tcp-urg任意一种。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1