【文章仅供非商业用途或交流学习使用】
进行三次握手主要有两个目的:1 信息对等 2 防止超时
首先我们看一下信息对等,双方只有确认四类信息,才能够建立连接,这四类信息分别是:
1 自己发报能力 2 自己收报能力 3 对方发报能力 4 对方收报能力
经过三次握手后,双方都可以确认自己的收发报能力和对方的收发报能力是正常的,如下图:
连接三次握手也是防止出现请求超时导致脏连接。如下图所示,TTL网络报文的身存时间往往都会超过TCP请求超时时间,如果两次握手就可以创建连接,传输数据并释放连接后,第一个超时的连接请求才到达B机器的话,B机器会以为是A创建新连接的请求,然后确认同意创建连接。因为A机器的状态不是SYN_SENT,所以直接丢弃了B的确认数据,以致最后只是B机器单方面创建连接完毕。
如果是三次握手,则B机器收到连接请求后,同样会向A机器确认同意创建连接,但因为A机器不是SYN_SENT状态,所以会直接丢弃,B机器由于长时间没有收到确认信息,最终超时导致连接创建失败,因而不会出现脏连接。