三次挥手包
TCP/UDP
首先说下TCP和UDP传输协议:
他们都工作在传输层,目的是为了传输数据,数据可以是图片文本视频。
他们直接最大的不同就是TCP基于连接,UDP基于非连接,这里举两个例子,TCP就好比打电话,播出电话,电话接通,最后是挂掉电话,这一系列的流程都是建立在连接之上,而UDP则不同,他就好比古代寄信一样,寄出信封后,这个信封到达收信人手里的时候,信封内容是否完整,顺序是否正确,存在一系列的问题,这是基于非连接的。
简单比喻:电话——TCP,寄信——UDP。
三次挥手的过程
首先由客户端发送一个SYN包,然后服务器端接收这个包,如果同意建立链接,那么服务器端会发送一个SYN+ACK包给客户端,然后客户端再次发送一个ACK给服务器端,此时客户端与服务器端建立链接,这其中一共发送了三次数据包,所以成为三次握手!
为什么是三次挥手而不是两次
这里会有小伙伴疑问,明明两次挥手就可以建立连接,为什么要三次???
其实这是为了防止数据包滞留(在网络信道不可靠的时候,数据包不会及时发送到服务器端),如果有一个数据包滞留,我们在发送一个数据包与服务器建立连接,那么等之前滞留那个数据包再发送到服务器端,那么服务器就会认为客户端想建立一个新的连接,从而在两次握手之后进入等待数据状态,服务器端认为是两个连接,而客户端认为是一个连接,造成了状态不一致,如果是三次握手,在第二次握手之后,服务器端收不到ACK包,自然不会认为建立成功。
本质目的:为了解决网络信道不可靠的问题!