新手小白对TCP“三次握手”和“四次挥手”的初次理解
三次握手
三次握手,就是TCP建立连接的过程。这个连接必须是一方主动打开,一方被动打开。
通俗理解
为什么要有“三次握手”
前两次握手是在建立连接,是必须要的。
“第三次握手”是客户端向服务器端发送数据,这个数据就是要告诉服务器,客户端有没有收到服务器“第二次握手”时传过去的数据。若发送的这个数据是“收到了”的信息,接收后服务器就正常建立TCP连接,否则建立TCP连接失败,服务器关闭连接端口。由此减少服务器开销和接收到失效请求发生的错误。
如果没有第三次握手,服务端可能会开启一些无用的连接。长此以往,这样的端口多了,就会造成服务器端开销的严重浪费。
四次挥手
四次挥手,就是TCP连接解除。这个连接必须是一方主动解除,另一方被动解除。
通俗理解
前两次挥手,服务端知道了客户端想要解除连接,客户端也知道了服务端收到了自己的请求。
后两次挥手,客户端知道了服务端准备解除连接,服务端也知道了客户端收到了自己准备解除解除。
为什么挥手要四次
建立连接时,被动方不需要做任何准备,可以直接握手开始建立连接。
但解除连接时,不能保证所有的数据都传完了,可能还有必要的数据进行处理,因此不能立即解除连接。
seq为序号。
SYN是请求新连接,表示服务器端同意建立连接。
ACK是确认序号有效,表示告诉客户端,服务器端收到了它的请求报文。
FIN表示请求释放连接。