TCP协议如何保证可靠传输
TCP协议是如何保证可靠传输的
-
校验和
发送的数据包的二进制相加再取反, 目的是检测数据在传输过程中的任何变化. 如果校验和有差错, TCP将丢弃这个报文段, 并不确认收到此报文段, 这时TCP发送数据端超时后会重发数据.
-
合理分片和排序
TCP将数据报合理分片传输, 接收方会缓存未按序到达的数据, 重新排序后再交给应用层.
-
TCP的接收端丢弃重复数据.
-
应答机制
当接收方收到发送方传来的数据, 会回传一个确认, 这个确认不是立即发送, 通常推迟几分之一秒.
-
超时重传
当TCP发出一个报文段后, 会启动一个定时器, 等待接收方确认收到这个报文段. 如果发送方不能及时收到一个确认, 会再重发这个报文段.
-
流量控制
TCP连接的每一方都有固定大小的缓冲空间, TCP的接收方只允许发送方发送接收方缓冲区能接纳的数据. 当接收方来不及处理发送方的数据, 会提示发送方降低发送速率, 防止包丢失. 这样可以防止较快主机致使较慢主机的缓冲区溢出. TCP使用的流量控制协议是可变大小的滑动窗口协议. 接收方有滑动窗口, 会随ACK报文发送.
-
拥塞控制
当网络拥塞时, 减少数据的发送. 发送方有拥塞窗口, 发送数据前, 比对接收方发过来的即时窗口, 取小. 拥塞控制: 慢启动, 拥塞避免, 快重传, 快恢复.