TCP-三次握手和四次挥手

这一生的挚爱 提交于 2019-12-01 18:36:08

三次握手

OSI七层参考模型


TCP/IP四层网络模型


传输层的任务就是负责主机中两个进程之间的通信,IP知道怎么把分组投递给哪个主机不知道怎么把它们投递给主机上的具体应用。简单的说,IP层提供主机到主机间的通信,UDP/TCP提供进程与进程之间的通信,应用层协议规定了进程通信时需遵守的规则和标准。UDP/TCP位于IP层的上层,应用协议的下层。

TCP提供在不可靠的互联网络上提供一个可靠的端到端传输,特点是:1.面向连接、2.可靠、3.基于字节流。下面看看三次握手怎样保证可靠连接的:


每一次TCP连接都需要三次握手:1.建立连接、2.数据传输、3.连接释放

第一次握手----客户端向服务器招手问你能收到吗?能的话回个话。:客户端首先向服务器发送SYN=1来创建一个主动打开,作为三次握手的一部分。客户端把这段连接的序号设定为随机数seq=client_isn=A;

第二次握手----服务器反馈说我能收到,你能收到吗?能的话回个话。:服务器收到连接后应当回应这次招手,给客户端返回一个SYN=1、ACK=A+1、SYN/ACK本身又有一个随机序号seq=server_isn=B;客户端收到服务器的反馈后,收到SYN=1、ACK=A+1、seq=server_isn=B,判断服务器能够正常回应。

第三次握手----客户端最后反馈说,我能收到:于是客户端又发送一个SYN=0、ACK=B+1、seq=A+2。当服务器端收到这个ACK的时候,知道了客户端能够正常发送信息,就完成了三次握手,并进入连接创建状态。

SYN攻击

        在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接。此时服务器处于SYN_RECV状态。当收到ACK后,服务器转入ESTABLISHED状态。

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

四次挥手


中断可以是客户端发出也可以是服务端发出。客户端先发起中断请求的话:
我要中断连接了:客户端发送FIN=1、ACK=z、发送序号是seq=x给服务器。
你要中断连接啊,我知道了:服务器发送ACK=x+1、seq=z给客户端。
服务器心想客户端可能不知道我已经知道了你的中断连接请求,那我就返回一个报文给你说一下:服务器主动发送一个FIN=1、ACK=x、seq=Y给客户端。

服务器收到这个报文之后,心里想告诉一下服务器,让它别担心:客户端给服务器发送了一个ACK=Y、seq=x的报文表示自己已经知道了。




易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!