TCP 和 UDP 都基于网络层协议 IP,但它们为应用层提供的服务却截然不同。TCP 提供的是一种面向连接的、可靠的字节流服务。
面向连接 意味着两个使用 TCP 通信的应用(通常是客户端和服务器)在交换数据之前必须先建立 TCP 连接。这就像打电话一样,需要先拨号呼叫,等待对方接听后才能开始通话。TCP 连接的建立和断开过程将在后续章节详细介绍。需要注意的是,一个 TCP 连接只能在两个应用程序之间建立,不支持广播或多播。
可靠性 是 TCP 的另一大特点,它通过以下机制来保障数据传输的可靠性:
- 数据分段与重组: 应用程序产生的数据会被 TCP 分割成大小合适的报文段 (segment) 进行发送,不再像 UDP 那样保持数据报长度不变。TCP 如何确定报文段的大小将在后续章节介绍。
- 超时重传: TCP 在发送报文段后会启动定时器,等待接收方的确认 (ACK)。如果在超时时间内没有收到确认,TCP 会重传该报文段。
- 确认机制: TCP 接收方在收到数据后会发送确认信息给发送方,但并非立即发送,而是会有一定的延迟。
- 数据校验: TCP 使用校验和机制来确保数据的完整性,对每个报文段进行端到端的校验。如果接收方发现校验和错误,会丢弃该报文段并要求发送方重传。
- 数据排序: 由于 IP 数据报的传输可能乱序,TCP 会对接收到的报文段进行排序,确保按顺序交付给应用程序。
- 重复数据处理: TCP 会识别并丢弃重复的报文段,避免数据冗余。
- 流量控制: TCP 通过缓冲区大小和滑动窗口机制来控制数据传输速率,防止接收方过载。
暂无评论