资讯专栏INFORMATION COLUMN

TCP/IP 为什么要三次握手

tomato / 1099人阅读

摘要:三次握手的目的是同步连接双方的序列号和确认号并交换窗口大小信息。可是,在的应答分组在传输中被丢失的情况下,将不知道是否已准备好,不知道建议什么样的序列号,甚至怀疑是否收到自己的连接请求分组。

转自:忘了地址了。
TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:

客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。

服务器收到客户端发送过来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,其中包含它选择的初始序列号y、对客户端的序列号的确认x+1和一个窗口大小(表示服务器上用来存储从客户端发送来的传入段的缓冲区的大小)。

客户端接收到服务器端返回的SYN+ACK报文后,向服务器端返回一个确认号y+1和序号x+1的ACK报文,一个标准的TCP连接完成。
TCP 使用类似的握手过程来结束连接。这可确保两个主机均能完成传输并确保所有的数据均得以接收

TCP Client
Flags
TCP Server
1 Send SYN (seq=x)
----SYN--->
SYN Received
2 SYN/ACK Received 
<---SYN/ACK----
Send SYN (seq=y), ACK (x+1) 
3 Send ACK (y+1)
----ACK--->
ACK Received, Connection Established 
w: ISN (Initial Sequence Number) of the Client
x: ISN of the Server
为什么要三次握手?

TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。

如果采用两次的话,会出现下面这种情况。

比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。

传完东西后,断开。

结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。

三次握手改成仅需要两次握手,死锁是可能发生

考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21752.html

相关文章

  • 简析TCP三次握手与四次分手

    摘要:在协议中,协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换窗口大小信息。采用三次握手的办法可以防止上述现象发生。 TCP是什么? 具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备...

    LucasTwilight 评论0 收藏0
  • TCP/IP协议族

    摘要:协议族的构成数据链路层网络层传输层应用层和是网络层的协议,但是它所工作的内容是链路层的。。。发送的时候,协议为每个包编号,简称,以便接收的一方按照顺序还原。并没有提供任何机制,表示原始文件的大小,这由应用层的协议来规定。 TCP/IP协议族的构成 * 数据链路层:ARP,RARP * 网络层: IP,ICMP,IGMP * 传输层:TCP ,UDP,UGP * 应用层:Telnet,F...

    CrazyCodes 评论0 收藏0
  • 通俗大白话来理解TCP协议的三次握手和四次分手

    摘要:原理套接字概念套接字是通信的基石,是支持协议的网络通信的基本操作单元。建立连接建立连接至少需要一对套接字,其中一个运行于客户端,称为,另一个运行于服务器端,称为。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。 最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机...

    Sanchi 评论0 收藏0
  • tcp建立连接什么三次握手

    摘要:一为了确认建立连接的双方拥有收发能力。具体解释如下图所示两个机器建立连接,发送建立信号这是第一次握手,收到后发送确认信号这是第二次握手,收到确认后再次发送确认信号这是第三次握手。 一:为了确认建立连接的双方拥有收发能力。二:为了防止超时。具体解释如下图所示: showImg(https://segmentfault.com/img/bVbjL4r?w=710&h=599); A,B两个...

    maxmin 评论0 收藏0

发表评论

0条评论

tomato

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<