美文网首页Java
建立TCP连接为什么要3次握手?

建立TCP连接为什么要3次握手?

作者: 一只程序猿哟 | 来源:发表于2022-03-18 13:55 被阅读0次

    概述

    TCP三次握手的目的是建立可靠的通信信道。通信,简单来说就是数据的发送和接收。而三次握手最主要的目的就是双方确认自己与对方的发送和接收是正常的。

    如下图所示,下⾯的两个机器⼈通过3次握手确定了对方能正确接收和发送消息(图⽚来源:《图解HTTP》 )。

    TCP建立连接

    发送端(Client)和接收端(Server)总共发起的 3 次请求就叫做 3 次握手。

    握手过程

    第 1 次握手

    Client 什么都无法无法确认。虽然自己发送了 syn 数据,但是只要没收到 Server 端的 syn/ack 数据都无法确认自己的发送是否正常。

    Server 确认:自己接收正常,对方发送正常

    第 2 次握手

    Client 确认:自己发送正常、接收正常,对方发送正常、接收正常。Client 确认状态完成

    Server 依旧只能确认:对方发送正常,自己接收正常。

    第 3 次握手

    Client 确认状态在第 2 次握手时已完成。

    Server 确认:自己发送正常,接收正常,对方发送正常、接收正常。

    总结

    第2次握手为什么要传回 syn?

    Server 端传回 Client 端所发送的 syn 是为了告诉 Client,我接收到的信息确实就是你发出的信号。

    附:SYN 是 TCP/IP 建⽴连接时使⽤的握⼿信号。在客户机和服务器之间建⽴正常的 TCP ⽹络连接时, 客户机⾸先发出⼀个 SYN 消息,服务器使⽤ SYN-ACK 应答表示接收到了这个消息,最后客户机再 以 ACK(Acknowledgement[汉译:确认字符 ,在数据通信传输中,接收站发给发送站的⼀种传输控制 字符。它表示确认发来的数据已经接受⽆误。 ])消息响应。这样在客户机和服务器之间才能建⽴ 起可靠的TCP连接,数据才可以在客户机和服务器之间传递

    第 2 次握手为什么要传 ack ?

    双⽅通信⽆误必须是两者互相发送信息都⽆误。传了 SYN,证明发送⽅到接收⽅的通道没有问题,但是 接收⽅到发送⽅的通道还需要 ACK 信号来进⾏验证。

    相关文章

      网友评论

        本文标题:建立TCP连接为什么要3次握手?

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