前言:网络
若是你说你懂IT,你懂计算机网络,那么你会怎么解释“三次握手,四次挥手”?并发
----------------spa
--------------------------------------------计算机网络
符号说明3d
seq:"sequance"序列号
ack:"acknowledge"确认号
SYN:"synchronize"请求同步标志
ACK:"acknowledge"确认标志"
FIN:"Finally"结束标志blog
为何收到Server端的确认以后,Client还须要进行第三次“握手”呢?
在只有两次“握手”的情形下,假设Client想跟Server创建链接,可是却由于中途链接请求的数据报丢失了,故Client端不得不从新发送一遍;这个时候Server端仅收到一个链接请求,所以能够正常的创建链接。可是,有时候Client端从新发送请求不是由于数据报丢失了,而是有可能数据传输过程由于网络并发量很大在某结点被阻塞了,这种情形下Server端将前后收到2次请求,并持续等待两个Client请求向他发送数据...问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的状况可能因为Client端屡次从新发送请求数据而致使Server端最后创建了N多个响应在等待,于是形成极大的资源浪费!因此,“三次握手”颇有必要!资源
---------------------------------------------------------------同步
为何须要“四次挥手”?
试想一下,假如如今你是客户端你想断开跟Server的全部链接该怎么作?第一步,你本身先中止向Server端发送数据,并等待Server的回复。但事情尚未完,虽然你自身不往Server发送数据了,可是由于大家以前已经创建好平等的链接了,因此此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!请求