20170902_TCP是如何保证可靠性的

来源:互联网 发布:pc游戏优化为什么难 编辑:程序博客网 时间:2024/06/05 05:26

20170902_TCP是如何保证可靠性的


TCP 的可靠性应该是相对于 UDP 的不可靠传输来说的。

因为 UDP 提供的是不可靠的数据报服务,不保证数据报一定能到达接收端,中途可能会有丢失;

另外,处于传输层之下的 IP 层也是不可靠的,仅提供尽力而为的端到端数据传输服务(best-effort delivery service),不作任何保证。

所以,TCP 的可靠性是指基于不可靠的 IP 层在传输层提供可靠的数据传输服务,主要是指传输数据不会损坏或丢失,而且所有数据都是按照发送顺序进行传送。

实现 TCP 的可靠传输有以下机制:

1,校验和(校验数据是否损坏);

2,定时器(分组如果丢失则重传(超时重传机制));

3,序列号(每一个字节均被分配了一个序列号,用于检测丢失的分组和冗余的分组);

4,肯定的确认应答信号(接收方告知发送方正确接收分组了,以及期望接收的下一个分组序列号);

5,否定的确认应答信号(接收方通知发送方未被正确接收的分组序列号,然后发送方则会重传这个未被正确接收的分组);

6,通告窗口与重发控制、TCP 流量控制、拥塞控制(拥塞窗口)。(用于增加网络的吞吐量)。


至于数据是否在中途被修改或者被窃听,这应该是属于安全性问题。

提高安全性最根本的办法就是加密数据,比如远程登录用 ssh 而非 telnet 。