计算机网络面试题(十九):TCP三次握手,为什么是三次?
文章目录
TCP
TCP是一种面向对象的单播协议(一对一),在发送数据前,通信双方必须要在彼此之间建立一条连接
连接:其实已一条虚拟的概念,具体是指客户端和服务端的内存里保存的一份关于对方的信息,例如:IP地址、端口号……
TCP可以看成是一种字节流,TCP会处理IP层及以下层的丢包、重复和错误问题。在连接的建立过程中,通信双方需要交换一些连接的参数,这些参数放在TCP报文的首部
TCP协议提供了一种可靠、面向连接的、字节流、传输层的服务
- 采用三次握手建立连接
- 采用四次挥手断开连接
TCP为什么采用三次握手?
- 握手的目的:建立可靠连接
- 三次握手的目的:让通信双方都能确认自身和对方具有正确的收发能力
第三握手还有一个功能:防止失效的连接请求到达服务器,服务器错误的打开了失效连接
- 第一次握手:客户端发送网络包,服务端接受网路包
- 客户端发送完之后,属于“懵逼”状态
- 服务端接受到网络包后可以得出结论:客户端具有发送能力,自身具备接受能力
- 第二次握手:服务端发送网络包,客户端接受网络包
- 服务端发送完之后,进入“懵逼”状态
- 客户端接受到网络包之后得出结论:基于上一个发送的网络包服务端接收到了,所以服务端具有收发能力,我具有收发能力
注意:此时只是客户端知道双方具有收发能力,服务端仅仅知道客户端有发送能力,自己有接受能力
- 第三次握手:客户端发送网络包,服务端接受网络包
此时服务端也知道了双方都具有收发能力
经历了三次握手,客户端和服务端才都知道双方具有收发能力,之后可以正常通信了
如何理解: 每一次握手之后你会发现,只有接受方能得出结论,发送方啥也不知道
我发包了,到没?发出去没?
总结
综上所述,必须要经过三次握手过程才能让客户端和服务端都知道双方具有正常的收发能力,两次做不到