【lwip】12-一文解决TCP原理( 二 )

  • 丢弃重复报文:IP数据报会发生重复,TCP的接收端必须丢弃重复的数据 。
  • 重排序:TCP报文段作为 IP 数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序 。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层 。
  • 流量控制:TCP还能提供流量控制 。TCP连接的每一方都有固定大小的缓冲空间 。TCP的接收端只允许另一端发送 接收端缓冲区 所能接纳的数据 。(窗口)
  • 12.3.4 缓冲机制发送缓冲:
    在发送方想要发送数据的时候,由于应用程序的数据大小、类型都是不可预估的,所以TCP提供了缓冲机制来处理这些数据 。
    在发送少量数据时,协议通常会延迟发送数据的时间,已缓冲到更多的用户数据后,组成一个合适大小的报文段再发送出去 。
    对于每个发送出去的报文,TCP也不会马上删除他们,而是将他们保存在缓冲区中,以便超时时重传,收到ACK时才删除 。
    接收缓冲:
    报文到达时,可能是乱序的,也可能因为应用层来不及处理,需要缓存起来,这些数据就能先保存到接收缓冲区 。
    12.3.5 拥塞控制如果一个主机还是以很大的流量给另一个主机发送数据,但是其中间的路由器通道很小,无法承受这样大的数据流量的时候,就会导致拥塞的发生,而拥塞控制考虑的就是网络的传输状况 。
    通常在路由器发送拥塞时,它会丢弃掉不能处理的数据报,这将导致发送方因接收不到确认而重传,重传的数据同样不会成功,且重传会使得路由器中拥塞更为严重 。
    拥塞发生时报文被丢弃,但是发送方不会得到任何报文丢失的信息,因此,发送方必须实现一种自适应机制,及时检测网络中的拥塞状况,自动调节数据的发送速度,这样才能提高数据发送的成功率 。
    在TCP中,引进了一个名为拥塞窗口的概念,与滑动窗口相似,拥塞窗口也是发送方控制数据发送速度的方式之一 。
    12.3.6 基于字节流tcp是面向字节流的,数据间没有明显的间隔 。
    12.3.7 其它机制糊涂窗口避免、零窗口探查、连接保活等 。
    12.4 TCP报文12.4.1 TCP报文段封装
    【lwip】12-一文解决TCP原理

    文章插图
    12.4.2 TCP报文段格式
    【lwip】12-一文解决TCP原理

    文章插图