|
知识路径: > 计算机网络原理 > Internet 协议 > 传输层协议 TCP 与 UDP > TCP 协议 > TCP可靠传输 >
|
相关知识点:3个
|
|
|
|
前面提到过,TCP提供面向连接的字节流传输服务,也就是说,TCP协议将要传送的数据看成是一个个字节组成的字节流,而且接收方返回给发送方的确认是按字节进行的,而不是按报文段进行。
|
|
|
每个TCP连接传输字节流数据的第一个字节序号是建立TCP连接时初始序号加1。
|
|
|
假设某条TCP连接要传送5000字节的文件,分为5个TCP报文段进行传送,每个TCP报文段携带1000字节,TCP对第一个字节的编号从10001开始(假设TCP连接建立随机选择的初始序号x为10000,而数据传送开始序号则从10001开始,也就是说,TCP连接建立过程要用掉一个序号)。那么每个TCP报文段的字节编号如下所示:报文段1的字节序号为10001(范围是从10001~11000);报文段2的字节序号为11001(范围是从11001~12000);报文段3的字节序号为12001(范围是从12001~13000);报文段4的字节序号为13001(范围是从13001~14000),报文段5的字节序号为14001(范围是从14001~15000)。
|
|
|
TCP采用差错控制机制是字节确认,一般情况下,接收方确认已收到最长的连续的字节计数,TCP报文的每个确认序号字段指出下一个希望接收到的字节,实际上就是对已经收到的所有字节的确认。
|
|
|
字节确认的优点是即使确认丢失也不一定导致发送方重传。下面来看一个例子,假设接收方TCP发送的ACK报文段的确认序号是1801,表明字节编号为1800前的所有字节都已经收到。如果接收方TCP前面已经发送过确认序号为1601的ACK报文段,但是如果确认序号为1601的这个ACK报文段丢失,也不需要发送方TCP重发这个报文段,这就是所谓的“累计确认”。
|
|
|