TCP与UDP的区别
- TCP是面向连接的,UDP是无连接的
- TCP提供可靠传输,UDP提供不可靠传输
- TCP传输形式为字节流,UDP传输形式为数据报文段
- TCP传输效率慢,UDP传输效率快
- TCP所需资源多,UDP所需资源少
- TCP首部字节20-60,UDP为8个字节
TCP协议如何保证可靠传输
- 应用数据被分割为TCP认为最适合发送的数据块
- TCP给发送的每个包进行编号,接受方对数据包进行排序,把有序的数据传送给应用层
- 校验和:TCP计算首部的校验和。如果收到端的校验和有差错,TCP将丢弃这个报文段和不确认收到此报文段
- 流量控制:TCP连接的每一方都有固定大小的缓冲空间。当接受方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。采用可变大小的滑动窗口协议控制
- 拥塞控制:当网络拥塞的时候,减少数据的发送
- ARQ协议:基本原理是没发送完一个分组就停止发送,等待对方确认。在收到确认之后再发送下一个分组
- 超时重传:当TCP发出一个段之后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段
ARQ协议(Automatic Repeat-reQuest)
基本原理:每发完一个分组就停止发送,等待对方确认。如果过了一段时间(超时),还是没有收到ACK确认,说明没有发送成功,需要重新发送,知道收到确认后再发送下一个分组。
在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认。
发送放维持一个发送窗口,位于发送窗口内的分组可以连续发送出去,儿不需要等待对方的确认。接受方一般采用累积确认,对按序达到的最后一个分组发送确认,表明到这个分组为止的所有分组都已经正确收到了。
优缺点:
- 优点:信道利用率高,容易实现,即使确认丢失,也不必重传。
- 缺点:不能向发送方反映出接受方已经正确收到的所有分组信息。
滑动窗口和流量控制
TCP利用华东窗口实现流量控制。流量控制是为了控制发送放的发送速率,保证接受方来得及接受。接受方发送的确认报文中的窗口字段可以用来控制发送放窗口的大小。将窗口设置为0,则发送放无法发送数据。
拥塞控制
拥塞控制是针对整个网络而言的,为了防止过多的数据注入到网络中,导致网络的性能变差。
为了进行拥塞控制,发送发维持一个拥塞窗口(cwnd)。拥塞窗口的大小取决于网络的拥塞程度,并且动态变化。发送方让自己的发送窗口取值为拥塞窗口和接受方的接收窗口中较小的一个。
主要有四种算法:
- 慢开始:即由小到大逐渐增大拥塞窗口的值。cwnd初始值为1,没经过一个传播周期,cwnd加倍。
- 拥塞避免:思路是让拥塞窗口cwnd的值缓慢增大,即每经过一个往返时间RTT就吧发送方的cwnd加一。
- 快重传与快恢复(FRR):不采用FRR,如果数据包丢失,TCP将会使用定时器来要求传输暂停。使用FRR,如果接收端接收到一个不按顺序的数据段,它会给发送端发送一个重复确认。如果发送端接受到三个重复确认,它会假定确认接受段指出的数据段丢失了,并立即重传这些丢失的数据段。
拥塞控制过程:
- 首先建立TCP连接之后,执行慢启动算法,当cwnd达到一定阈值时候,转为执行拥塞避免算法。
- 若出现超时重传,则将慢启动阈值设置为原来的一半,重新开始执行上述算法
- 若出现连续收到3个ACK,则将慢启动阈值设置为当前cwnd的一半,然后将当前cwnd设置为慢启动阈值,开始执行拥塞避免算法。