【网络|TCP】三次握手、四次握手

TCP是一种面向连接的可靠的传输协议,建立和断开TCP连接时需要进行握手的过程。其中,TCP的连接建立需要进行三次握手,而连接断开则需要进行四次握手。

解释

三次握手

  • 第一次握手:客户端发送一个SYN(同步)报文给服务器,表示客户端请求建立连接。这个报文中包含一个初始的序列号(sequence number)。

  • 第二次握手:服务器收到客户端的SYN报文后,会发送一个SYN+ACK(同步+确认)报文给客户端作为响应。这个报文中,SYN位被置为1,表示服务器同意建立连接,并且同时也发送一个确认序列号(acknowledge number)。

  • 第三次握手:客户端收到服务器的SYN+ACK报文后,会向服务器发送一个ACK(确认)报文。这个报文中,ACK位被置为1,表示客户端确认服务器的响应,并且发送一个确认序列号。

四次握手

  • 第一次握手:当客户端需要关闭连接时,发送一个FIN(结束)报文给服务器,表示自己已经没有数据要发送了,请求关闭连接。

  • 第二次握手:服务器发送一个ACK报文,服务器确认收到了关闭请求。此时,接收方进入半关闭状态,可以继续发送数据,但不再接收数据。

  • 第三次握手:服务器发送一个FIN报文给客户端,表示服务器也没有数据要发送了,并请求关闭连接。

  • 第四次握手:客户端收到服务器的FIN报文后,向服务器发送一个ACK报文,确认收到了关闭请求,并且发送一个确认序列号。

通俗易懂

为什么要建立要三次,断开要四次?两次是否可以?断开三次行不行?

三次握手

假设A和B是两个人要通过传纸条来交流。他们之间有一扇门,门上有一个信箱。他们希望通过这个信箱来传递纸条。但是,他们不确定对方是否能够收到和回复纸条。

  • 第一次握手:A先向B发出请求,他把一张纸条放进信箱,并敲了一下门。这个纸条上写着:"Hi B,我想和你建立通信连接,请确认你能够接收我的纸条。"此时,B收到了纸条,并知道A想要和他建立连接。但是,A并不知道B是否能够收到纸条。
  • 第二次握手:B收到纸条后,他在纸条上写下回复,并放进信箱里。然后,他也敲了一下门。这个纸条上写着:"Hi A,我收到了你的纸条,并且确认我能够接收你的纸条。我也想和你建立通信连接,请确认你能够接收我的回复。"此时,A收到了B的回复,并知道B能够接收纸条。但是,B并不知道A是否能够收到他的回复。
  • 第三次握手:A收到B的回复后,他在纸条上写下确认,并放进信箱里。然后,他再次敲了一下门。这个纸条上写着:"Hi B,我收到了你的回复,并且确认我能够接收你的纸条。我们可以建立通信连接了。"此时,B收到了A的确认,并知道A能够接收他的回复。双方都确认了彼此的通信能力。

通过这个三次握手的过程,A和B都知道彼此的通信能力。他们可以开始通过传纸条来进行交流,而且双方都知道对方能够接收和回复纸条。这样,他们就建立了可靠的通信连接。

四次握手

四次握手和三次握手原理基本一样,区别在与四次握手中B>A回了两次,原因是为了确保数据传输的完整性。第一次告诉A收到了,等B传输A的数据全部传输完毕后,再次告诉A传完了,可以关闭了。

总结

如果三次握手改成两次,那就会导致B不知道A是否收到B发的请求,直接给A发数据,可能导致A收到这个数据。四次握手同理,每一次握手都是为了实现某些功能和解决某些问题,如果少了任何一步,就会导致这个问题的发生。

相关推荐
Koi慢热2 分钟前
路由基础(全)
linux·网络·网络协议·安全
hzyyyyyyyu2 小时前
内网安全隧道搭建-ngrok-frp-nps-sapp
服务器·网络·安全
刽子手发艺2 小时前
WebSocket详解、WebSocket入门案例
网络·websocket·网络协议
速盾cdn6 小时前
速盾:CDN是否支持屏蔽IP?
网络·网络协议·tcp/ip
yaoxin5211236 小时前
第二十七章 TCP 客户端 服务器通信 - 连接管理
服务器·网络·tcp/ip
内核程序员kevin6 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
PersistJiao8 小时前
Spark 分布式计算中网络传输和序列化的关系(一)
大数据·网络·spark
黑客Ash10 小时前
【D01】网络安全概论
网络·安全·web安全·php
->yjy10 小时前
计算机网络(第一章)
网络·计算机网络·php