TCP和UDP

TCP
TCP有连接,传输的数据,无差错、不丢失、不重复、并且按序到达。
面向字节流的,没头没尾

1.拥塞控制,它意识到包丢弃了或者网络的环境不好了,就会根据情况调整自己的行为,看看是不是发快了,要不要发慢点。通过滑动窗口控制,避免包丢失和超时重传
TCP BBR 拥塞算法:充分利用带宽,降低buffer占用率(进入缓存且等待,等待的时间就是额外的延时)。TCP和UDP_第1张图片

2.有状态服务,通俗地讲就是有脑子的,里面精确地记着发送了没有,接收到没有,发送到哪个了,应该接收哪个了,错一点儿都不行。

3.确认与重传,设置一个定时器,超过一个时间没有收到对端回来的ack包。就会重新尝试,时间一般大于往返时间RTT。
自适应重传算法,超时间隔加倍。每当遇到一次超时重传的时候,都会将下一次超时时间间隔设为先前值的两倍。两次超时,就说明网络环境差,不宜频繁反复发送。(例如数据包5、6、7超时后,就会重新发送,接收端发现5原来接受过了,于是丢弃5,如果收到数据包6之后,会发送ack告诉下对端下一次直接发送7)
快速重传的机制:向对端发送三个冗余的 ACK 后,就会在定时器过期之前,重传丢失的报文段
SACK机制:需要在 TCP 头里加一个 SACK 的东西,可以将缓存的地图发送给发送方。例如可以发送 ACK6、SACK8、SACK9,有了地图,发送方一下子就能看出来是 7 丢了。

4.累计应答(累计确认),应答某个之前的ID,表示都收到了

5.缓冲,发送端缓冲根据处理情况分4分部分:

  • 发送并已经确认
  • 发送尚未确认
  • 没有发送,等待发送
  • 没有发送,暂时不会发送

接收端缓冲区:

  • 接受并且确认过的
  • 还没接收,但是马上就能接收的
  • 还没接收,也没法接收的

6.流量控制:如果发送端发送的太快,接收端慢的时候,发送缓冲区的窗口会缩小,知道缩小为0。发送方会发送窗口探测数据包,来确认是否有机会调整窗口大小。

UDP
UDP继承IP特性,基于数据报,一个个发,一个个收
UDP报头,源端口和目的端口

你可能感兴趣的:(网络协议)