首页 > 其他分享 >UDP协议 和 TCP协议

UDP协议 和 TCP协议

时间:2023-12-30 10:35:31浏览次数:34  
标签:协议 UDP 首部 报文 TCP 数据传输 连接


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协议_UDP_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

标签:协议,UDP,首部,报文,TCP,数据传输,连接
From: https://blog.51cto.com/xuxiangyang/9038480

相关文章

  • 关于开源协议的介绍
    关于开源协议的介绍写这篇文章主要是源于Gitee中的某个开源项目,此项目有90多K的Star,开源协议用的是MIT。笔者在README.md中又看到作者声明代码开源且未来和现在没有商业版本,继而点开项目文档,有趣的事情来了,开源项目的文档要收费(有的开源项目在查看文档的时候会要求点Star),笔者无......
  • steam 登录 Protobuf 协议详解
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者......
  • TCP и IP
    ПротоколпередачиTCP/IP,аименнопротоколуправленияпередачей/сетевойпротокол,такженазываемыйпротоколомсетевойсвязи.Этосамыйпросто......
  • SpringBoot+modbus4j实现ModebusTCP通讯读取数据
    场景Windows上ModbusTCP模拟Master与Slave工具的使用:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135290463ModebusTCPModbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP。Modbus协......
  • DockerCompose中重启某个服务时提示: (iptables failed: iptables --wait -t nat -A D
    场景DockerCompose修改某个服务的配置(添加或编辑端口号映射)后如何重启单个服务使其生效:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/134666413除了以上重启某个服务的方式外。基于docker-compose的方式,如果只是要单纯的重启某个服务,则可以通过docker-compo......
  • grpc是基于http/2协议的高性能的rpc框架
    师傅领进门,修行在个人,跟着官方脚手架demo了grpc后,之后就需要扩展前后知识边界,下面总结grpc的前世今生和最佳实践。https://www.cnblogs.com/JulianHuang/p/14441952.htmlgrpc是基于http/2协议的高性能的rpc框架为什么已经有http?还需要grpc?八股文都说grpc是基于http2的rpc框......
  • 19 I2C通信协议原理
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述我们知道I2C总线具备广泛的用途,比如寄存器的配置,EEPROM的使用,更重要的是I2C总线上可以挂载非常多的外......
  • 13 SPI通信协议原理
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MILIANKE)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述SPI是一种串行总线接口,也是各类嵌入式设备以及FPGA应用开发中常用的一种串行通信接口。SPI的接口速度......
  • windows 创建自定义url协议 通过浏览器打开cmd
    打开regedit注册表编辑器找到HKEY_CLASSES_ROOT新建如下目录 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------......
  • 极兔面试:一台服务器,支持的TCP连接数最大是多少?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......