菜鸟笔记
提升您的技术认知

TCP面试相关

以下都是面试经验不足的笔者在为数不多的面试过程中遇到的一些问题,解答仅供参考。

TCP和UDP的区别
答:TCP是面向连接的协议,在数据传输之前会在通信双方之间建立连接,是能保证可靠传输的协议,接收方接收到的数据是完整、有序、无差错的;UDP不需要建立连接,不保证可靠传输,接收方接收到的数据可能存在部分丢失,顺序性也得不到保证。

TCP是怎样保持可靠连接的?
答:TCP为了保证数据的完整、有序接收,采用序号和确认序号、超时重传、流量控制和拥塞控制等机制。

流量控制和拥塞控制的区别
答:流量控制是通过滑动窗口机制来平衡发送方发送数据的速率和接收方接收数据的速率。而拥塞控制是指两个主机之间的网络发生拥塞,涉及到所有的主机、路由器、以及降低网络性能的所有因素,是一个全局性的控制,发送报文的发送速率,既要考虑接收方的接收速率,又要考虑到网络的拥塞情况。

TCP建立连接和断开连接的过程
答:参考下图

TCP为什么要三次握手?
答:①TCP是通过序列号来保证通信双方发送的数据的有序性,第三次连接保证了sever发送的序列号被确认。②防止已经失效的请求又传回服务端,因而产生错误。参考文章

哪些协议基于TCP?
答:HTTP、FTP(文件传输协议)、SMTP(简单邮件传输协议)、POP3、TelNet(远程终端协议)。
【注】DNS基于TCP和UDP协议。

HTTP为什么是基于TCP而不是基于UDP?
答:HTTP传输一个页面,其中包含很多数据信息,需要TCP的可靠传输来保证数据信息的完整性和有序性。

如果TCP包在数据链路层丢失,会发生什么?