TCP协议的学习(三)TCP协议三次握手及攻击

(一)三次握手

ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1

SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。

发送序列号:Sequence Number

确认序列号:Acknowledgment Number

CLOSED: 初始状态。

LISTEN: 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处 于监听状态,可以接受连接了。

SYN_RCVD: 在收到和发送一个连接请求后等待对连接请求的确认

SYN_SENT: 在发送连接请求后等待匹配的连接请求

ESTABLISHED:建立连接了

服务器通过listen系统调用进入listen状态,被动打开,服务器一旦监听到某个连接请求,这个连接请求就是收到的同步报文段,之后就将该连接放入等待队列中。

客户端connect系统调用主动与服务器建立连接。发送一个同步报文段给服务器,连接转移为SYN_SENT。connect失败返回:

1.connect连接的目的端口不存在或被TIME_WAIT占用

2.在超时时间内未收到服务器的确认报文

connect失败立即返回CLOSED状态,成功进入ESTABLISHED状态。

第一次握手:客户端主动打开连接,发送带有SYN=1,ACK=0的TCP报文到服务器,初始序号X,保存在包头的序列号(Sequence Number)中,同时客户端进入SYN_SEND状态。

第二次握手:服务器收到SYN包,确认SYN(ack=x+1)将确认序号(Acknowledgement Number)设置为客户的ISN加1以.即X+1,自己发送一个SYN(seq=y),同时服务器进入SYN_RECV状态

第三次握手: 客户端收到服务器的SYN+ACK, 回复ACK=1, ack=y+1,在数据段放写seq+1(即ISN+1)。同时端和服务器进入ESTABLISHED状态,完成三次握手。

**为什么是三次握手,而不是两次握手

客户端为A,服务器为B

当要进行连接时,A发送一个连接请求,如果连接请求报文丢失,A再会重新发送一个请求连接,等B收到请求确认连接后,建立起连接。

但如果A发出的第一个连接请求报文并没有丢失,而是被滞留在网络,延迟到A第二个连接请求建立后达到。如果没有第三次握手,B以为A有发出一个新的连接请求,B确认建立连接。A在这时却没有发出连接请求,不理B的确认,不发送数据,B却等待A发送数据,B的资源浪费。

采用三次握手,B确认后收不到A的确认,连接就建立不起来。

(二)攻击

在TCP三次握手时,攻击者故意不完成三次握手,导致服务器资源耗费,直到瘫痪

DoS(拒绝服务攻击 Denial Of Service)

就是“单挑”,比谁机器性能好,你发出每秒10个攻击数据包,而被攻击机器每秒能接受处理100个攻击数据包,那么你的攻击就没效果,你的服务器可能崩溃。

DDoS(分布式拒绝服务攻击Distributed Denial of Service)

就是“群殴”,多个机器发动DoS攻击去攻击一台机器,这是由一名黑客操作的,他是通过他的机器在网络上占领很多的“肉鸡”,并且控制这些“肉鸡”来发动DDoS攻击

DRDoS(分布反射式拒绝服务攻击Distributed Reflection Denial of Service)

它是DDoS攻击的变形,它与DDoS攻击不同在于在进行攻击前不需要占有大量的“肉鸡”。DRDos是可以在广域网上的,它的作用原理是基于广播地址与回应请求的。一台计算机向另一台计算机发送一些特殊的数据包如ping请求时,会接到它的回应;如果向本网络的广播地址发送请求包,实际上会到达网络上所有的计算机,这时就会得到所有计算机的回应。首先把伪造了源地址的SYN连接请求包发送到那些被欺骗的计算机上,这些回应是需要被接收的计算机处理的,每处理一个就要占用一份系统资源,如果同时接到网络上所有计算机的回应,接收方的系统是有可能吃不消的,就象遭到了DDoS攻击一样。根据TCP三次握手的规则,这些计算机会向源IP发出SYN+ACK或RST包来响应这个请求。黑客所发送的请求包的源IP地址是被攻击主机的地址,这样受欺骗的主机就都会把回应发到被攻击主机处,造成被攻击主机忙于处理这些回应而瘫痪

TCP协议栈的弱点:TCP连接的资源消耗,其中包括:数据包信息、条件状态、序列号等。通过故意不完成建立连接所需要的三次握手过程,造成连接一方的资源耗尽。

SYN洪水攻击(SYN-Flood)是DoS与DDoS方式之一

客户端和服务器在网络中使用TCP协议发起会话时,在服务器内存中会开辟一小块缓冲区来处理会话过程中消息的握手交换。

伪装虚拟IP地址发动攻击

拦截客户机应答报文

多客户端情况下,大量第二次握手确认报文发出,再拦截,再发出,导致服务器瘫痪。

防御措施:

缩短SYN Timeout时间 限制同时打开的SYN半连接数目

SYN Flood攻击效果取决于服务器上保持的SYN半连接数,这个值=SYN攻击的频度 x SYN Timeout,设置20秒以下可以成倍的降低服务器的负荷。

设置SYN Cookie

在TCP服务器接收到TCP SYN包并返回TCP SYN + ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。这个cookie作为将要返回的SYN ACK包的初始序列号。当客户端返回一个ACK包时,根据包头信息计算cookie,与返回的确认序列号(初始序列号 + 1)进行对比,如果相同,则是一个正常连接,然后,分配资源,建立连接,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。

为防止TCP会话劫持,加密传输

防火墙

时间: 2024-10-07 19:03:33

TCP协议的学习(三)TCP协议三次握手及攻击的相关文章

【Linux网络基础】TCP/IP协议簇的详细介绍(三次握手四次断开,11种状态)

一.TCP/IP协议簇(DoD参考模型) 用于简化OSI层次,以及相关的标准. 传输控制协议(tcp/ip)簇是相关国防部DoD所创建的,主要用来确保数据的完整性以及在毁灭性战争中维持通信 是由一组不同功能的协议组合在一起构成的协议簇 利用一组协议完成OSI所实现的功能 1. TCP/IP 协议簇中的相关协议 TCP/IP协议簇--应用层: TCP/IP协议簇--主机到主机层: TCP与UDP对比: TCP相关报文结构: 源端口:即本地发起连接的端口 目标端口:即要访问的服务的端口 序列号:因为

TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议

把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情.所以这也就出现了TCP是一个可靠的协议

使用wireshark 抓取 http https tcp ip 协议进行学习

使用wireshark 抓取 http https tcp ip 协议进行学习 前言 本节使用wireshark工具抓包学习tcp ip http 协议 1. tcp 1.1 tcp三次握手在wireshark中的体现 1.1.1 三次握手过程 1.1.1 wireshark中三次握手过程 在wireshark中抓一次三次握手过程 客户端 客户端发送SYN=1 的请求连接的标记位,以及一个随机序列号X 服务端 服务端发送一个ACK标志位(ack之前的syn),随之一个ack号码为X+1 确认接收

TCP/IP详解学习笔记——IP协议

一 概述 IP协议是TCP/IP协议簇中最核心的协议,所有的TCP.UDP.ICMP以及IGMP数据都以IP数据报格式传输.IP协议提供不可靠.无连接的数据传输服务.不可靠的意思是它不能保证IP数据报能成功到达目的地.IP仅仅提供最好的传输服务.意思就是,我尽我所能传输数据,实在没传过去,也不要怪我.当发生某种错误时,比如某个路由器的缓冲区慢了,此时路由器不能接收新的数据,直接丢弃处理,然后发送ICMP消息给信源端,告诉他我尽力了.如果需要可靠的传输,必须由上层协议来提供,比如TCP协议.无连接

TCP/IP协议组学习笔记

TCP/IP协议族学习笔记: 一.基础概念: (1)TCP(Transmission Control Protocol) 传输控制协议. (2)IP(Internet Protocol)网际协议.IP是一种不可靠的无连接数据协议,一种尽最大努力交付的服务. (3)ISP(Internet Service Provider)因特网服务提供者. (4)ISO 国际标准化组织. (5)IEEE 电气和电子工程学会. (6)W3C 万维网联盟. (7) OMA 开放移动联盟. (8)RFC(Reques

CCNA 学习笔记(三)--路由选择协议(静态路由协议)

CCNA 学习笔记(三)--路由选择协议(静态路由协议) 上一章,我们对CISCO的设备有了一定的了解,那现在我们开始去学习下路由选择协议. 静态路由: 1.什么时候是路由? 答:A.路由就是数据包从一端传输到另一端所选择的一条路径.B.数据包的转发. 2.路由器的工作内容? 答:A.路由器首先要知道要到达的目标地址. B.能发现到达目标地址所有可能经过的路由或者节点. C.选择最佳路径. D.维护路由表. 3.查看路由表的命令:show ip route 由上面我们可以看到当前的路由器只是有一

TCP学习(2)--TCP连接的建立(三次握手)

一.TCP的连接建立 TCP的建立连接的过程如下图所示.假设客户端A运行的是TCP客户程序,而服务器B运行的是TCP服务器程序.最初两端的TCP进程都处于CLOSED状态. B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,然后服务器进行就处于LISTEN状态,等待客户端的连接请求. TCP连接的建立过程如下: (1).客户端A发起连接请求,发送一个SYN=1,ACK=0,seq=x的报文段给服务器B,并进入SYN-SENT状态: (2).服务器B收到连接请求报文之后,如果

TCP/IP详解学习笔记--UDP协议

UDP协议基本介绍 1.基本概念 UDP是一个简单的面向数据包的运输层协议:进程的每一个输出操作都正好产生一个UDP数据报,并组装成一个待发送的IP数据报,与流字符协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报没有联系,UDP提供不可靠的服务,它的数据报格式如下图所示 UDP数据报 IP首部 UDP首部 UDP数据 2.UDP首部 16位源端口号 16位目的端口号 16位UDP长度 16位UDP校验和 数据 数据 端口号表示发送进程和接收进程,TCP端口号与UDP端口号是相

3.9.2.TCP协议的学习1

本节详细借助TCP协议的特性,重点是TCP协议如何保证实现可靠书擦拭的是指 3.9.2.1.关于TCP理解的重点 (1)TCP协议工作在传输层,对上服务socket接口,对下调用IP层 (2)TCP协议面向连接,通信前必须先3次握手建立连接关系后才能开始通信. (3)TCP协议提供可靠传输,不怕丢包.乱序等. 3.9.2.2.TCP如何保证可靠传输 (1)TCP在传输有效信息前要求通信双方必须先握手,建立连接才能通信 (2)TCP的接收方收到数据包后会ack给发送方,若发送方未收到ack会丢包重