首页 > 编程知识 正文

为什么三次握手和四次挥手,三次握手和四次挥手图

时间:2023-05-05 04:51:07 阅读:33467 作者:1708

三次握手三次握手过程:

(1)第一次握手:客户端将标志位SYN设置为1 ),指示开始连接),随机生成值seq=J,并将包发送到Server,客户端为http://www.Sina.ccn

)第二次握手: Server接收到数据包后,从标志位SYN=1得知客户端请求建立连接,Server将标志位SYN和ACK均设置为1,ack=J 1,seq=j 1

)第三次握手:客户端收到确认后,SYN_SENT正确将标志位ACK设置为1,即ACK=K 1,将该数据包发送到服务器,服务器将ACK是否为K 1

为什么需要握手三次? 1 .他的本质实际上是确定客户端和服务端,他们的收发能力没有问题。 也就是说,客户端必须考察服务端的收发能力,服务端也必须考察客户端的收发能力。

第一次握手

第二次握手

第三次握手

2 .防止失效的请求再次到达服务端,发生错误

失效的连接请求是指主机a的连接请求未收到主机b的确认,在一段时间后,主机a向主机b发送连接请求,建立成功,依次完成数据传输。

如果主机a发送的请求由于网络延迟而未到达主机b (未丢失),则主机b认为主机a又提出了新的请求,主机b同意连接,并向主机a返回了确认,但此时主机a完全忽略,浪费了主机b的资源

3 .防止攻击

SYN攻击:

在三次握手过程中,服务器发送SYN-ACK后,从客户端接收ACK之前的TCP连接称为半连接(half-open connect ),此时服务器处于SYN_RCVD状态,ACK SYN攻击进入隔离状态是指客户端在短时间内伪造大量不存在的IP地址,继续向服务器发送SYN数据包,服务器返回确认数据包,等待客户端确认。 由于不存在源地址,服务器必须继续重发直到超时,这些伪造的SYN分组是占用生产时间未连接的队列且正常的SYN请求已满队列的SYN攻击的典型DDOS攻击之一,用于检测SYN攻击也就是说,在服务器有多个半连接状态且源IP地址随机的情况下,可以判断为受到了SYN攻击,能够使用以下命令保持当前状态。

#netstat -nap | grep SYN_RECV

ddos攻击: ddos :分布式ddenialofservice攻击是指利用客户端/服务器技术将多台计算机组合为攻击平台,对一个或多个目标进行DDOS攻击攻击者通常使用被盗帐户在一台计算机上安装DDoS主节点,然后在配置的时间内主节点与许多代理进行通信。 代理程序已经安装在网络上的许多计算机上。 代理收到命令后开始攻击。 借助客户端/服务器技术,主机程序可以在几秒钟内启用数百、数千次代理的运行。 TCP消息格式

(1)序列号) Seq序列号,其占据32位,标识从TCP源侧发送到目的地侧的字节流,并且在发起者发送数据时标记该字节流。

(2)确认号码) Ack号码占32比特,仅在Ack标志比特为1时,确认号码字段有效,Ack=Seq 1。

)3)标志位)共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下。

(a ) URG )紧急指针(urgent pointer )有效。

(b )确认序列号有效。

(c ) PSH )接收方应该尽快将该消息传递给APP应用层。

(d )重置RST )连接。

(e ) SYN )开始新连接。

(f ) FIN )释放连接。

需要注意的是:

(a )请不要将确认编号Ack与标志位的Ack混淆。

(b )确认侧Ack=启动器Req 1,两端对。

4挥手4挥手的过程:

(1)客户端发送用于关闭从客户端到服务器的数据传输的FIN,并且每个客户端进入FIN_WAIT_1状态。

)第二次挥手)服务器收到FIN后,向客户端发送ACK,确认序列号与接收号1(syn相同,一个FIN占用一个序列号,服务器进入CLOSE_WAIT状态

)服务器发送用于关闭从服务器到客户端的数据传输的FIN,服务器进入LAST_ACK状态。

)第四次挥手)客户端收到FIN后,客户端进入TIME_WAIT状态,接着向Server发送ACK,确认号码为接收号码1,Server进入CLOSED状态,结束第四次挥手。

为什么挥手4次以免数据被发送?

断开连接时,如果一个接收到FIN数据包,而另一个没有发送数据,则必须首先向对方返回FIN数据包的ACK。 发送剩下的数据后,像对方一样发送FIN,然后断开连接。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。