CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

HTTP协议的三次握手与四次挥手

HTTP是一个属于应用层的超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议所有的WWW文件都必须遵守这个标准TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

我们常说的http的三次握手,其实是TCP的三次握手,具体过程如下:

第一次:主机A发送位码为SYN = 1,同时随机生成一个seq的数据包到服务器,主机B由SYN=1知道,A要求联机;第二次:主机B收到请求后要确认联机信息,向主机A发送 ACK number = (主机A的seq+1),SYN = 1,ACK = 1,随机产生seq的包;

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

至此三次握手完成,连接建立成功SYN攻击在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect)此时服务器处于Syn_RECV状态。

当收到ACK后,服务器转入ESTABLISHED状态SYN攻击就是客户端,在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户端确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

SYN攻击是一个典型的DDOS攻击检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被SYN攻击。

netstat -n -p TCP | grep SYN_RECV一般较新的TCP/IP协议栈都对这一过程进行修正来防范SYN攻击,修改tcp协议实现主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等.。

但是不能完全防范SYN攻击。四次挥手

第一次:主机A发送一个FIN(结束),用来关闭主机A到主机B的连接第二次:主机B收到这个FIN,他发回一个ACK(确认),确认收到序号为收到序号+1第三次:主机B发送一个FIN(结束)到主机A端,主机B

关闭主机A的连接第四次:主机A发送ACK(确认)报文确认,并将确认的序号+1,关闭完成为什么要三次握手?为了保证主机B能够接受到主机A的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证主机A能够接收到主机B的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。

为什么不是两次或四次呢?两次握手无法建立可靠连接,因为第二次握手之后只代表主机B收发正常,主机A可能无法正常接收主机B的消息,拿不到正常的SYN进行后续通讯当主机B收到主机A的SYN连接请求报文后,可以同时发送SYN+ACK报文。

所以三次握手足够了,四次效率会变低为什么是四次挥手?可能有人会有疑问,tcp我握手的时候为何ACK(确认)和SYN(建立连接)是一起发送挥手的时候为什么是分开的时候发送呢?  因为当服务端收到FIN报文时,可能还有信息没有发送完成,并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,”你发的FIN报文我收到了”。

只有等到我服务端所有的信息都发送完了,我才能发送FIN报文,因此不能一起发送故而需要四次挥手

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容