TCP的三大特性:面向连接、可靠传输、面向字节流
上次我们已经说了三次握手四次挥手的连接管理机制,今天我们来说说TCP的可靠传输是怎样实现的。
一、可靠传输:
1.确认应答机制:
TCP为每个字节都进行了编号,即序号。
每一个ACK都有对应的确认序列号,目的是为了告诉发送者下一次要发送的位置。
2.超时重传机制:
发送方在发送完数据之后,会等待一个特定的时间间隔(200ms),称为超时时间。
若超出时间范围,还没有收到接收方的确认应答ACK,则认为数据丢失,此时发送方会
重新发送数据包。
我们来分析以下两种情况:
- 情况1:ACK丢失,其实此时数据已经成功发送,只是没有确认应答,但超时等待之后,系统还是会进行重传,就会造成接收方会接受许多重复的数据,此时我们可以使用每条数据的序列号来达到去重的效果。
- 情况2:数据包丢失,经过超时等待之后进行数据重传即可。
其实我们想一想,ACK丢失的情况只是没有收到确认回复,但是接收方已经收到了数据,再次传输重复数据,其实会影响我们的性能。
TCP为了保证可靠传输,其实牺牲了一部分性能,为了提高