UDP协议 和 TCP协议
  anLrwkgbyYZS 2023年12月30日 15 0


1. UDP协议 

1.1 概述

用户数据包协议UDP (User Datagram Protocol),提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),数据传输单位为 用户数据包。

  • 无连接:不需要建立连接,也不需要释放连接,减少了开销和发送数据的时延。
  • 最大努力的数据传输服务:不保证数据传输的可靠性,没有超时和重传功能。
  • 面向报文:发送方对应用程序交下来的服务,添加首部后就向下交付给IP层,不合并,也不拆分,保留文本的边界。UDP一次性交付一个完整的报文,因此应用程序一定要选择合适大小的报文,报文太长IP层需要进行分片,太短会导致IP数据包的相对长度过大,效率过低。接收方,去除首部后就交给应用程序。如下图所示(该图出自《计算机网络第七版》,谢希仁老师编著,下同)。

UDP协议 和 TCP协议_TCP

  • 没有拥塞控制:网络出现的拥塞不会使源主机的发送速率降低。对实时应用非常重要。例如:IP电话、实时视频会议、允许丢失数据但不允许有太大时延(即这些应用可以卡一下,但是要保证其实时性)。
  • 支持一对一、一对多、多对一、多对多的交互通信。
  • 首部开销小,只有8个字节,TCP首部需要20个字节。

1.1 首部格式和端口分用

UDP 由数据字段 和 首部字段。 首部字段很简单,只有 8 个字节,由四个字段构成。

  • 源端口 : 源端口号, 需要对方回复时选用 ,不需要时可全用 0 。
  • 目的端口号 : 目的端口号,交付报文必须使用。
  • 长度:UDP 数据包长度 ,最小值为 8 。
  • 检验和:检测UDP 用户数据包在 传输 中 是否有错 。 有错就丢弃

UDP协议 和 TCP协议_首部_02

UDP 分用 , 根据首部中的目的端口号,将UDP数据报通过响应的端口,上交给最后的终点:应用进程。如下图所示。

UDP协议 和 TCP协议_首部_03

如果接受方 UDP 发现收到的报文不正确,  丢弃该报文, 并由 ICMP 发送“端口不可达”差错报文给主机 。

2. TCP 协议

传输控制协议TCP (Transmission Control Protocol),提供面向连接、可靠的数据传输服务,其数据传输的单位为报文段。

  • 面向连接 : 在使用 TCP 协议之前,必须建立TCP连接,在传送数据完毕之后,必须释放连接。
  • TCP连接只能有两个端点:点对点  即一对一。
  • TCP提供可靠交付的服务。通过TCP连接传送的数据无差错、不丢失、不重复、并且按序到达
  • TCP提供全双工通信。通信双方的应用进程任何时候都可以发送数据。
  • TCP 连接两端都设有发送缓存,接受缓存,用来储存临时通信的数据。发送时,应用程序把数据传送给TCP的缓存,就可以做其他事了。接收时,TCP把收到的数据放入缓存,上层应用程序在合适的时候读取缓存。
  • 面向字节流: TCP中的流指的是流入到进程或从进程中流出的字节序列。”面向字节流 的含义“ 应用程序和TCP是一次一个数据块(大小不等)。如下图所示:

UDP协议 和 TCP协议_首部_04

参考文献:

  • 计算机网络/谢希仁编著. ——7版 ——北京:电子工业出版社,2017.1
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Java并发之AQS详解 下一篇: Java 中的继承
  1. 分享:
最后一次编辑于 2023年12月30日 0

暂无评论

anLrwkgbyYZS