新睿云

> 知识库 > 大厂面试指南——TCP协议相关篇

大厂面试指南——TCP协议相关篇

作者/来源:新睿云小编 发布时间:2020-02-28

一、UDP 和 TCP有什么区别?

UDP与TCP最大不同之处在于UDP是无面向对象连接的,在数据传递之前不需要确认对方是否可以连接,不保证其数据有效性!没有任何控制流量的办法,不过其优点也很突出那就是轻便高效。

TCP则不同,每次连接或者断开连接的时候都需要进行握手,确保双方都知道对方的状态,而且在数据的传输过程中,其是可以控制流量,通过算法保证传递数据的有效性。

二、请你自己谈谈对TCP协议所谓“三次握手,四次挥手”这期间过程的理解?

1.1三次握手

客户端与服务器之间进行正常连接的时候,TCP客户端会发出一个SYN的消息,而服务器端会使用SYN+ACK作为回答告诉客户端自己已经接到这个消息,客户端再次以ACK消息响应。服务器知道客户端收到自己到底回答了,这样可靠的TCP便建立起来了。

建立连接时,客户端发送SYN包到服务器,等待服务器响应。(SYN 同步序列编号,是建立连接时使用的握手信号)。

服务器收到SYN包,使用ACK包进行确认应答,同时自己也会发送一个SYN包,即发送SYN+ACK包。

客户端收到服务器的SYN包,向服务器发送确认包ACK。此包发送完毕,代表TCP连接完成,完成了三次握手。

 三次握手图解

三次握手图解

1.2四次挥手

四次挥手是释放TCP连接的握手过程。

当传输结束的时候,客户端向服务端发送报文FIN等待服务器确认,并且自己主动停止发送数据。

服务器接到了客户端释放报文后,会发送ACK包表示自己知道其请求。

注意:虽然这个时候是收尾阶段,服务器与客户端都已经释放了,但服务器还在发送数据,客户端依旧会接收!

服务器将最后的数据发送完毕后,就向客户端发送连接释放报文FIN,等待客户端确认。

客户端收到服务器连接释放报文后,发出ACK包表示确认。此时客户端会进入TIME_WAIT状态,该状态将持续2MSL(最大报文段生存时间,指报文段在网络中生存的时间,超时将被抛弃)时间,若该时间段内没有服务器重发请求的话,就进入关闭状态,当服务端接收到ACK应答后,立即进入关闭状态。

三次握手与四次挥手图解 

三次握手与四次挥手图解

热门标签
new year
在线咨询
咨询热线 400-1515-720
投诉与建议
{{item.description}}

—您的烦恼我们已经收到—

我们会将处理结果发送至您的手机

请耐心等待