UDP与TCP

1.UDP用户数据协议

  • UDP是无连接的,在发送数据之前无需建立连接
  • UDP使用尽最大努力交付,即不保证可靠交付
  • UDP是面向报文的,既不合并也拆分报文,而是保留报文的边界
  • UDP没有拥塞控制,网络出现拥塞不影响发送速度,没有太大延迟。
  • UDP支持一对一、一对多、多对一、多对多的交互通信
  • UDP的首部开销小

UDP与TCP

传输控制协议TCP

  • TCP是面向连接的运输层协议
  • TCP只能点对点(一对一)连接
  • TCP提供可靠交付
  • TCP提供全双工通信,允许通信双方任何时候发送或接收数据,同时TCP连接的两端都设有发送/接收缓存
  • 面向字节流,TCP中的“流”指的是流入到进程或从进程中流出的字节序列,TCP连接是一条虚连接(逻辑连接)

UDP与TCP

2.TCP连接

    TCP连接的端口是套接字(socket)或插口,由IP地址和端口号组成。

   套接字={IP地址:端口号}

   UDP与TCP

3.可靠传输的工作原理

理想的传输条件有以下两点:

  1. 传输信道不产生差错
  2. 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据

由于传输层以下无法提供可靠的传输,不具有以上两点。

  3.1 停止等待协议

   1.无差错情况

UDP与TCP

2.出现差错

对于这两种情况,B都不会发送任何信息:

  • B收到M1时检测出了差错,就丢失M1
  • M1在传输过程丢失

可靠性传输协议这样设计:

    超时重传:A只要超过一段时间仍然没有收到确认,就认为丢失了该分组,重传该分组。

    实现超时重传,通过为发送的分组设置定时器,在计时器收到对方的确认,就撤销已经设置的定时器。这里需要注意的有三点:

  1.     A在发送完一个分组后,必须暂时保留该分组的副本(在发生超时重传时使用),只有收到确认后才清除该副本。
  2.     分组和确认分组都必须进行编号(明确哪个分组发送失败)
  3.     超市计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些。

UDP与TCP

3.确认丢失和确认迟到

B收到M1分组,关于收到M1分组的确认丢失,因此A将重传M1分组,B经采取以下行动:

  1. 丢失这个重复的分组M1
  2. 向A发送确认

UDP与TCP

在传输过程没有出现差错,但B对分组M1的确认迟到了。A收到重复确认,收下后丢失,B收到重复分组,同样丢失重复分组。

UDP与TCP

        上述的这种可靠传输协议常称为自动重传请求ARQ。

连续ARQ协议

UDP与TCP

         图(b)表示发送方收到了对第一个分组的确认发送窗口向前地洞一个分组。如果原来已经发送了前5个分组,现在就可以发送窗口内的第6个分组。

        接收方一般采用累积确认方式,也就是,接收方不对每个分组逐一发送确认,在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都以正确收到了。

转载于:https://my.oschina.net/u/4045381/blog/3076667