通俗易懂的TCP里面的三次握手以及四次挥手
通过三次握手来建立连接。 连接建立之后,就会传送数据! 四次握手来释放TCP连接
比较通俗易懂的一个讲解:https://www.bilibili.com/video/BV1h7411A7tG
三次握手:【发送三个包】
答复:ack是上一个序列增加一的结果
至于为什么必须有三次握手:
不要二次握手的原因:
而在计算机中TCP是安全的,当要进行两个进程之间的通讯时候,这时需要进行建立连接。就发起了三次握手。发送建立连接报文中有SYN和ACK,Seq,下一个返回报文信息的ACK = Seq+1。而如果有一种情况, 客户端发出的第一个连接请求报文段并没有丢失,而是在某个网络结点上停滞了一会儿,导致延误到连接关闭后的某个时间才到达服务端。本来这是一个早已失效的报文段。但服务端收到此失效的连接请求报文段后,就误认为是客户端再一次发送一个新的连接请求。于是就向客户端发出确认报文段,同意建立连接。若不采用“三次握手”,那么只要服务端发出确认,新的连接就建立了。由于现在客户端并没有发出建立连接的请求,因此客户端像大爷一样,你干啥呢,我都没跟你通信呢,就不鸟服务端。就如打电话不说话一样,浪费了大量资源。
不要四次握手的原因:
通信不可能100%可靠, 而上面的三次握手已经做好了通信的准备工作, 再增加握手, 并不能显著提高可靠性, 而且也没有必要。
四次挥手:【发送四个包】
答复:ack是上一个序列增加一的结果【小写的】
数据传送完成之后,通过四次挥手断开连接!
-
第一次是客户机发来的。
-
中间两次,都是服务器发出的。
-
最后一次,还是终止于客户机。