TCP传输的特点

Posted by AndyCao on September 10, 2019

TCP传输的特点

  • 面向连接
  • 可靠传输
  • 面向字节流
  • 流量控制
  • 拥塞控制

面向连接

  • 数据传输开始之前,需要建立连接:三次握手

    为什么三次握手?

    主要解决的是超时的场景,防止建立多次连接。

    client发送的SYN若是超时,client基于超时重传机制,会重新发送SYN;server收到SYN,回复SYN/ACK,若是两次握手连接立成功,那么先前超时的SYN到达server后,server就会认为需要建立一条新的连接。若是三次握手的话,client就需要给server再发送一条ACK。server收到ACK后,才会建立连接。client收到超时产生的SYN/ACK,由于已经发送过ACK了,就不再发送,因此不会再建立一条新的连接。

  • 数据传输结束之后,需要释放连接:四次挥手

TCP建立的连接是全双工的,client可以给server发送数据,server也可以给client发送数据。因此,在关闭连接的时候,需要双方面的释放。

可靠传输

可靠传输的特点

  • 无差错
  • 不丢失
  • 不重复
  • 按序到达

可靠传输,是通过停止等待协议实现的

  • 无差错情况

  • 超时重传

  • 确认丢失

  • 确认迟到

面向字节流

图中10、11、12为发送方TCP缓存,2、3、4为接收方TCP缓存。

面向字节流,就是不论发送方发送多少字节的数据,TCP都会根据自己的实际情况,对数据进行拆分或合并进行发送

流量控制

流量控制,是基于滑动窗口协议实现的

比如发送方通过一个高速网络向处于低速网络的接收方发送数据,由于接收方数据传输速率低,缓存很容易堆满。接收方返回确认报文的时候,通过头字段告诉发送方还可以接收的数据大小。发送方根据这个值,动态调整发送窗口,以达到流量控制的目的。

拥塞控制

  • 慢开始(慢启动)、拥塞避免
  • 快恢复、快重传