浅谈TCP连接的三次握手与四次挥手

来源:互联网 发布:女神联盟2英雄进阶数据 编辑:程序博客网 时间:2024/05/16 12:20

TCP连接的建立与释放

三次握手(建立TCP连接)

TCP连接建立有如下几个目的,首先,要使双方都知道对方已经准备好了。其次,双方要协商如最大报文长度、最大窗口长度和服务质量等通信参数。第三,分配和初始化如缓存长度,各状态变量和连接表中的表项等运输实体资源。

  • 第一次握手(客户机向服务器发送请求)
    客户机进程向服务器进程发送一个SYN报文段(封装在一个IP数据报中、不包含应用层数据),其首部中的标志SYN比特位被置为1,序号字段中会选择一个起始序号x,即seq=x。

  • 第二次握手(服务器做出请求响应)
    SYN报文段到达服务器后,服务器首先会为该TCP连接分配TCP缓存和变量,并向该客户机TCP发送允许连接的报文段(SYNACK报文段、不包含应用层数据)。该报文段首部设置设置了三个重要信息。首先,首部中的标志SYN和ACK比特位均被置为1。其次该报文段首部的确认号字段被置为x+1,即ack=x+1。最后服务器将自己的序号字段设置为自己的起始序号y,即seq=y。

  • 第三次握手(客户机向服务器发送应用层数据)
    收到SYNACK报文段后,客户机为该连接分配缓存和变量,并向服务器发送第三个报文段,再次对服务器允许连接的报文段进行确认。之后该客户机将确认号字段ack的值置为y+1。这样客户机就可以发送应用层数据了,序号seq=x+1。标志SYN比特位被置为0,标志ACK比特位被置为1。

    三次握手过程
    以三次握手方式管理TCP连接的优缺点:以三次握手方式管理TCP连接可以更好的避免错误连接,但是这种协议为SYN洪泛攻击提供了可趁之机。在这种攻击中,攻击者大量的发送TCP SYN报文段,但有意不进行第三次握手的步骤,直至服务器消耗完为第一次握手保留的有限资源。(这种攻击为Dos攻击的一种,其目的是使服务器的连接资源迅速的消耗殆尽)。

四次挥手(释放TCP连接)

  • 第一次挥手(客户机释放连接,主机A不再发送数据)
    在数据传输结束后,客户机可以发出一个关闭连接的命令,这会引起客户机向服务器发送一个特殊的TCP报文段,这个报文段首部中的FIN比特位为1,起始序号seq=x。

  • 第二次挥手(通知应用进程对方关闭连接)
    在服务器收到该报文段后,就向客户机回送一个确认报文段,该报文段的ACK比特位置为1,起始序号seq=y,确认号字段ack=x+1。

  • 第三次挥手(服务器释放连接,主机B且不再发送数据)
    服务器可以继续发送它自己的报文段,直至发送最后的报文段并使其FIN比特位置为1,这时,FIN=1,ACK=1,seq=y,ack=x+1。

  • 第四次挥手(连接关闭)
    客户机对服务器的终止报文段进行确认(ACK=1,seq=x+1,ack=y+1),所有资源被释放。

四次挥手过程

参考文献:计算机网络:原理与实践/陈鸣编著.-北京:高等教育出版社,2013.2:222-234

1 0
原创粉丝点击