TCP建立连接与释放连接
三次握手
为什么要三次,两次或者四次不行吗
TCP的三次握手是基于可用性、安全性、高效性来设计的。
首先我们假设A是请求建立连接端,即客户端;B为服务端。
讨论为什么不是两次。两次的话有以下缺点:
对于二次握手,服务器无法验证客户端真伪,容易造成dDOS攻击。
前两次连接就客户端的初始序列号达成了一致(A发送SYN包,seq=0;B收到,ACK=1,SYN=1,ack=1,seq=0),即客户端知道了自己应该发送第几个序列号给服务端,但服务端无法知道客户端是否接收到了自己发的同步包,即服务端不知道该发第几个序列号给客户端。
防止旧的重复链接造成混乱,比如旧的syn比新的syn先到达服务端。