HTTP多个TCP怎么连接
多个TCP连接是靠某些服务器对 Connection:keep-alive 的 Header 进行了支持。简而言之,完成这个HTTP请求之后,不要断开 HTTP 请求使用的 TCP连接。这样的好处是连接可以被重新使用,之后发送 HTTP请求的时候不需要重新建立TCP 连接,以及如果维持连接,那么SSL的开销也可以避免。
TCP连接如何确保可靠性
- 数据块大小控制:应用数据被分割成TCP认为最合适发送的数据块,再传输给网络层,数据块被称为报文段或段。
- 序列号:TCP给每个数据包指定序列号,接收方根据序列号对数据包进行排序,并根据序列号对数据包去重。
- 校验和:TCP将保持它首部和数据的校验和,这是一个端到端的校验和,目的是监测数据在传输过程中的任何变化。如果收到报文的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。
- 流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP利用滑动窗口实现流量控制。
- 拥塞控制:当网络拥塞时,减少数据的发送
- 确认应答:通过ARQ协议实现,基本原理是每发完一个分组就停止发送,等待对方确认。如果没收到确认,会重发数据包,直到确认后再发下一个分组。
- 超时重传:当TCP发出一个数据段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
拥塞控制是怎么实现的
拥塞控制算主要有以下几种
- 慢启动:在连接刚开始时,发送方会逐渐增加发送窗口大小,从而以指数增长的速度增加发送的数据量。
- 拥塞避免:一旦慢启动阶段过去,发送方进入拥塞避免阶段。在这个阶段,发送方会逐渐增加发送窗口的大小,但增加速率较慢,避免过快增加导致网络拥塞
- 超时重传:如果发送⽅在超时时间内未收到确认,它会认为数据包丢失,并重传这些数据包。这是拥塞控制的最后⼿段,⽤于检测和处理⽹络中的丢包或拥塞情况。当⽹络出现拥塞,也就是会发生数据包重传。
- 快速重传和快速恢复:当发送方发送的数据包丢失或网络出现拥塞时,接收方会发送重复确认通知发送方有数据包丢失。当发送方收到一定数量的重复确认后,它会立即重传丢失的数据包,而不是等待超时。这样可以减少网络的拥塞程度。
- 拥塞窗口调整:发送方根据网络的拥塞程度动态调整发送窗口的大小,通过监测网络延迟和丢包情况来确定合适的发送速率,以免网络拥塞。