讲的最好系列之--TCP三次握手

TCP三次握手是什么?

	第一次握手:客户端请求服务器建立连接
	第二次握手:服务端授予客户端连接
	第三次握手:客户端确认服务端授予的连接

为什么要进行TCP握手?

	TCP三次握手的目的是保证通信双方都能够
正常发送和接收信息

为什么要进行三次握手?

	第一次握手:客户端向服务端发起连接请求,
服务端收到客户端的请求后,服务端可以确认
客户端发送报文和自己接收报文的功能正常,
而客户端并不知道自己是否发送成功
	第二次握手:客户端收到来自服务端允许建立
连接的报文,同时表示客户端第一次向服务端
发送请求连接报文发送成功,此时客户端可以
确认自己和服务端发送和接收报文的功能都
正常,服务端只知道自己接收报文正常
	第三次握手:服务端收到客户端的确认请求,
说明客户端收到自己的确认请求,服务端可以
知道客户端发送和接收报文的功能正常,同
时知道自己发送报文的功能正常,

通过三次握手后,服务端和客户端都知道自己和对方发送和接收功能正常

为什么不是俩次握手?

	通过上面的三次握手,可以明白如果俩次握手,
服务端无法知道自己发送报文和客户端接收
报文的功能是否正常
	举个例子,如果客户端向服务端发送请求连
接的报文因为某些原因滞留在网络中,客户端迟迟
收不到服务端的授予连接报文,会误认为发送失败
重新向服务端发送报文,这次服务端收到报文,并向
客户端发送确认请求报文,客户端收到服务端的报
文,连接建立。此时之前客户端向服务端发送的报
文发送到了服务端,由于是俩次握手,服务器不
知道自己的发送功能和客户端的接收功能是否正常
,会以为自己回给客户端的报文客户端没有收到,
此时会再会给客户端一个报文,会再建立一个连接,
而客户端早已将之前误认为发送失败的报文丢弃,
并不会通过该连接进行信息的传输,而服务端一直
等待接收客户端的信息,这就白白浪费了服务端的资源。

为什么不是四次握手?

	通过三次握手,可能有一个问题,在第三次握手的时候,
客户端并不知道自己是否能够发送成功。对,这是根本没法
确定的,因为没有完全可靠的通信协议。我们通过三次握手
只要可以确认之前客户端和服务端各自发送和接收报文的功
能正常就好,至于以后是否正常即便是四次握手,五次握手
也是没有用的。对于确认确认之前客户端和服务端各自发送
和接收报文的功能正常,三次握手就够了,也就用不到四次
握手,白白的多发送一次报文。
发布了4 篇原创文章 · 获赞 3 · 访问量 941

猜你喜欢

转载自blog.csdn.net/weixin_44017425/article/details/104859555