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交互)。

 

 

 

滑动窗口算法

待深入。