20170902_TCP是如何保证可靠性的
TCP 的可靠性应该是相对于 UDP 的不可靠传输来说的。
因为 UDP 提供的是不可靠的数据报服务,不保证数据报一定能到达接收端,中途可能会有丢失;
另外,处于传输层之下的 IP 层也是不可靠的,仅提供尽力而为的端到端数据传输服务(best-effort delivery service),不作任何保证。
所以,TCP 的可靠性是指基于不可靠的 IP 层在传输层提供可靠的数据传输服务,主要是指传输数据不会损坏或丢失,而且所有数据都是按照发送顺序进行传送。
实现 TCP 的可靠传输有以下机制:
1,校验和(校验数据是否损坏);
2,定时器(分组如果丢失则重传(超时重传机制));
3,序列号(每一个字节均被分配了一个序列号,用于检测丢失的分组和冗余的分组);
4,肯定的确认应答信号(接收方告知发送方正确接收分组了,以及期望接收的下一个分组序列号);
5,否定的确认应答信号(接收方通知发送方未被正确接收的分组序列号,然后发送方则会重传这个未被正确接收的分组);
6,通告窗口与重发控制、TCP 流量控制、拥塞控制(拥塞窗口)。(用于增加网络的吞吐量)。
至于数据是否在中途被修改或者被窃听,这应该是属于安全性问题。
提高安全性最根本的办法就是加密数据,比如远程登录用 ssh 而非 telnet 。