TCP的三次握手与四次挥手

作者: 励公子 | 来源:发表于2018-09-05 15:54 被阅读3次

TCP(Transmission Control Protocol)协议是一种面向连接的、相对可靠的传输控制协议(虽说是面向连接,其实也就是通信双方保持一个‘连接’状态)

三次握手和四次挥手是TCP协议中比较重要的部分,它们都是为数据传输而服务的,一个是在数据传输开始之前建立连接,一个是在数据传输结束之后关闭连接,接下来就简单说一下这个过程:


TCP传输

关于各种状态以及发送的报文信息,上图已经表现的很清楚,就不详述了

三次握手

必须是client先发起请求

  1. Client向Server发起建立请求信息,“我想给你发数据,可以吗?”
    (此步是为了让Server端知道Client能够发送数据)
  2. Server端确认Client发来的请求信息,同时向Client返回确认信息,“可以,你什么时候发?”
    (此步是为了让Client知道Server既能接收到数据也能发送数据)
  3. Client收到Server的确认信息,并向Server发送确认信息,“我现在就发,你接着吧!”
    (此步是为了让Server知道Client能够接收数据)

经过上面的三次握手,会让Client和Server确认彼此双方既能接收数据又能发送数据,然后便可以进入数据传输进程了,一般来说,握手次数达到3就可以保证通信信息被正确传达。


网上发现一个形象化的图例
四次挥手

谁先发起请求都可以

因为Client和Server都能发起请求,所以我们此处用A和B替代通讯双方

  1. A发起请求结束信号(A表示自己不会再传输数据了,请求断开)
  2. B向A发送确认收到A发起的结束请求的确认信号(B知道了A的请求,但是还有数据要处理,暂时还不能断开)
  3. B向A发送请求结束信号(数据发送完成,B同意断开)
  4. A向B发送确认结束信号(A同意断开,很愉快的中断这次TCP连接)

由于TCP是全双工的协议,也就是说两端可以同时进行数据传输,所以,TCP连接的关闭在两端都关闭之后才正式关闭。


网上发现一个形象化的图例

相关疑问点:

  • 建立连接的第二次握手为什么要传回SYN?
    接收端传回发送端所发送的SYN是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。
  • 传了SYN,为啥还要传ACK?
    双方通信无误必须是两者互相发送信息都无误。传了SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要ACK信号来进行验证。
  • 为什么要三次握手?
    为了防止已失效的连接请求报文段突然又传送到了服务端,导致服务器端的一直等待而浪费资源。
    引用书中一个例子:

“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”


纯属个人观点,有什么不对的还请多多指教

相关文章

  • 2、tcpdump抓包分析三次握手和四次挥手

    TCP为什么需要三次握手、四次挥手 三次握手 三次握手 四次挥手 SYN flood攻击

  • TCP的3次握手&4次挥手

    详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ” 为什么“握手”是三次,“挥手”却要四次? 建立连接时,被动...

  • TCP连接的建立和终止

    目录(1)三次握手(2)四次挥手(3)TCP状态转换图(4)TCP连接三次握手+四次挥手+状态转换 一:三次握手 ...

  • TCP的三次握手和四次挥手

    参考资料:[1].【TCP】详解TCP 三次握手和四次挥手[2]. iOS:为什么TCP连接要三次握手,四次挥手[...

  • 不积跬步--TCP三次握手和四次挥手过程

    本文来至转载TCP三次握手和四次挥手过程 TCP三次握手和四次挥手过程 1、三次握手 (1)三次握手的详述 首先C...

  • TCP三次握手与四次挥手

    TCP的三次握手与四次挥手(详解+动图)TCP之三次握手四次挥手 UDP,在传送数据前不需要先建立连接,远地的主机...

  • 计算机网络

    TCP三次握手与四次挥手 UDP报文段结构 TCP报文段结构

  • tcp

    报文结构、三次握手、四次挥手 Tcp--三次握手,四次挥手[https://www.jianshu.com/p/a...

  • tcp三次握手四次挥手

    tcp三次握手四次挥手 TCP状态图 TCP状态时序图 tcp三次握手 流程图: TCP握手状态说明: TCP_S...

  • 梳理部分解答之网络基础

    网络基础 TCP三次握手四次挥手 TCP三次握手 所谓三次握手(Three-way Handshake),是指建立...

网友评论

    本文标题:TCP的三次握手与四次挥手

    本文链接:https://www.haomeiwen.com/subject/jquawftx.html