计算机网络面试题, 为什么要 TCP,IP 层实现控制不行么?
计算机网络面试题, 为什么要 TCP,IP 层实现控制不行么?
QA
Step 1
Q:: 为什么要使用 TCP,而不是让 IP 层实现传输控制?
A:: IP 层是无连接的、尽力而为的传输方式,不能保证数据包的顺序、完整性和可靠性。因此,在传输过程中,数据包可能会丢失、重复或乱序,这对许多应用场景是不合适的。而 TCP(传输控制协议)是一个面向连接的协议,提供可靠的数据传输服务。TCP通过握手建立连接,并通过序列号、确认应答、重传机制、流量控制和拥塞控制来保证数据的完整性和有序性。综上,TCP 是对 IP 层不足的补充,提供了更高层次的传输控制能力。
Step 2
Q:: TCP 的三次握手过程是什么?为什么需要三次握手?
A:: TCP 三次握手是指在建立一个 TCP 连接时,客户端和服务器之间进行的三个数据包交换过程:1. 客户端发送一个 SYN(同步序列号)包给服务器,表示请求建立连接。2. 服务器接收到 SYN 包后,回应一个 SYN+ACK(确认)包,表示同意建立连接。3. 客户端接收到 SYN+
ACK 包后,发送一个 ACK 包给服务器,确认连接已建立。三次握手的目的是为了确保双方都具备发送和接收的能力,并同步双方的初始序列号,以避免因旧数据包的干扰而导致错误的连接建立。
Step 3
Q:: TCP 和 UDP 的区别是什么?
A:: TCP 是面向连接的协议,提供可靠的数据传输,适合对数据传输可靠性要求高的应用,如网页浏览、文件传输等。UDP 是无连接的协议,不保证数据包的可靠传输,适合对传输速度要求高、对丢包不敏感的应用,如视频流、在线游戏等。TCP 通过握手、序列号、重传机制保证数据完整性,而 UDP 则没有这些机制,传输效率更高,但可靠性较低。
Step 4
Q:: 什么是 TCP 流量控制?如何实现?
A:: TCP 流量控制是为了防止发送方发送数据过快,导致接收方来不及处理数据而产生丢包的机制。TCP 通过滑动窗口机制实现流量控制:接收方会在每次确认应答中包含一个窗口大小(Window Size),表示自己当前可以接收的数据量。发送方根据接收方的窗口大小来控制自己的发送速度,确保不会超出接收方的处理能力。
Step 5
Q:: TCP 拥塞控制的原理是什么?有哪些常用算法?
A:: TCP 拥塞控制是为了避免网络中因过多的数据包而导致的拥塞情况。常见的 TCP 拥塞控制算法包括:1. 慢启动(Slow Start):从小的拥塞窗口(cwnd)开始,逐渐增加发送速率。2. 拥塞避免(Congestion Avoidance):当检测到网络无拥塞时,逐步增加发送速率。3. 快速重传(Fast Retransmit):在收到三个重复的 ACK 后,立即重传可能丢失的数据包。4.
快速恢复(Fast Recovery):在快速重传后,不再进入慢启动阶段,而是恢复到一个适当的发送速率。