TCP与UDP

最后一次更新时间:Saturday, August 22nd 2020, PM

 

TCP与UDP的对比

类型 是否面向连接 是否可靠 传输形式 传输效率 所需资源 应用场景 支持
TCP 面向连接 可靠 字节流 低 多 要求通信数据可靠 单播
UDP 无连接 不可靠 数据报文段 高 少 要求通信速率高 广播、多播

 

 

 

TCP如何保证可靠性

  1. 数据包编号排序。发送方给包编号,接收方给包排序。
  2. 校验和。若一组数据包校验和有误,则丢弃整组数据包。
  3. 接收端丢弃重复数据。
  4. 流量控制(滑动窗口算法)
  5. 拥塞控制
  6. 自动重传(ARQ协议)
  7. 超时重传

 

 

 

TCP ARQ协议

ARQ协议分为两种,一种是停止等待ARQ,另一种是连续ARQ。

停止等待ARQ:发完一个分组,便等待接收方确认。优点是简单,但是信道的利用率低,且等待时间长。

连续ARQ:连续发送分组,接收方对按序的最后一个发送进行确认。举个栗子,收到了编号为1,2,4,5的数据包,则需重发3,4,5数据包。优点是信道的利用率高,丢失不需要全部重传。

 

 

 

TCP 拥塞控制

拥塞:网络中分组过多,使得整体性能下降。

TCP拥塞控制:慢开始、拥塞避免、快重传+快恢复。

 

 

 

TCP 粘包、拆包

举个栗子:Socket接收消息时,多个字符串粘在一起;一个字符串被拆开。

解决:可以用Netty自带的解码器解决。

 

 

 

TCP 长连接/短连接,心跳机制

短连接:Client与Server读写完就关闭连接。
长连接:Client与Server读写玩不关闭连接。

若Client与Server保持长连接,且一段时间无数据交互,它们是无法发现对方是否仍然在线,即无法保证TCP的可靠性。为了解决这个问题,引入了心跳机制。

心跳包:双方一段时间无交互时,一方就会主动发送一个特殊数据包,另一方收到之后也会回复一个特殊数据包。双方收到即可确认彼此在线(亦称作PING-PONG交互)。

 

 

 

滑动窗口算法

待深入。