UDP协议 和 TCP协议

1. UDP协议 

1.1 概述

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

  • 无连接:不需要建立连接,也不需要释放连接,减少了开销和发送数据的时延。

  • 最大努力的数据传输服务:不保证数据传输的可靠性,没有超时和重传功能。

  • 面向报文:发送方对应用程序交下来的服务,添加首部后就向下交付给IP层,不合并,也不拆分,保留文本的边界。UDP一次性交付一个完整的报文,因此应用程序一定要选择合适大小的报文,报文太长IP层需要进行分片,太短会导致IP数据包的相对长度过大,效率过低。接收方,去除首部后就交给应用程序。如下图所示(该图出自《计算机网络第七版》,谢希仁老师编著,下同)。

  • 没有拥塞控制:网络出现的拥塞不会使源主机的发送速率降低。对实时应用非常重要。例如:IP电话、实时视频会议、允许丢失数据但不允许有太大时延(即这些应用可以卡一下,但是要保证其实时性)。

  • 支持一对一、一对多、多对一、多对多的交互通信。

  • 首部开销小,只有8个字节,TCP首部需要20个字节。

1.1 首部格式和端口分用

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

  • 源端口 : 源端口号, 需要对方回复时选用 ,不需要时可全用 0 。

  • 目的端口号 : 目的端口号,交付报文必须使用。

  • 长度:UDP 数据包长度 ,最小值为 8 。

  • 检验和:检测UDP 用户数据包在 传输 中 是否有错 。 有错就丢弃

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

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

2. TCP 协议

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

  • 面向连接 : 在使用 TCP 协议之前,必须建立TCP连接,在传送数据完毕之后,必须释放连接。

  • TCP连接只能有两个端点:点对点  即一对一。

  • TCP提供可靠交付的服务。通过TCP连接传送的数据无差错、不丢失、不重复、并且按序到达

  • TCP提供全双工通信。通信双方的应用进程任何时候都可以发送数据。

  • TCP 连接两端都设有发送缓存,接受缓存,用来储存临时通信的数据。发送时,应用程序把数据传送给TCP的缓存,就可以做其他事了。接收时,TCP把收到的数据放入缓存,上层应用程序在合适的时候读取缓存。

  • 面向字节流: TCP中的流指的是流入到进程或从进程中流出的字节序列。”面向字节流 的含义“ 应用程序和TCP是一次一个数据块(大小不等)。如下图所示:

参考文献:

  • 计算机网络/谢希仁编著. ——7版 ——北京:电子工业出版社,2017.1
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 撸撸猫 设计师: 设计师小姐姐
应支付0元
点击重新获取
扫码支付

支付成功即可阅读