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

TCP和UDP协议

时间:2024-10-16 10:11:37浏览次数:9  
标签:协议 UDP TCP 发送 传输层 数据 连接

既然能查到这篇文件那说明你还是一个网路小白,本片文章会对TCP和UDP做基本介绍、优缺点对比、以及适用的场景相信读完这篇你会对TCP和UDP有充分的了解。

TCP和UDP简介

如果把网络模型简单划分成四层,应用层首先把数据交给传输层,传输层的传输则是基于网线或者其他介质完成的,传输层实际提供的是一种逻辑通信。
TCP和UDP就是属于传输层!
TCP和UDP协议的传输就可以理解为应用层的数据以不同的方式到达目的地。TCP和UDP就是这两种不同的方式。

TCP和UDP的区别

数据传输方面:
TCP传输数据不会立马发送而是会先进行三次握手,握手成功后才会进行数据的发送。(这里不说具体是咋握手了)
握手的目的就是为了进行一对一的服务。这样数据就可以认为是在可靠的逻辑通信下进行传输。

UDP不会进行握手,而是直接发送数据*,也就是无连接发送数据,这样方式相对于TCP来说会更加灵活他不仅可以一对一,还可以一对多进行通信。*

上述的描述可能有同学会有疑问
那就是为什么UDP都不用不进行握手就能发送数据了为什么还要留着UDP呢,直接跳到传输层不行吗?
原因:UDP和TCP都提供端口,没有端口应用要同时进行通信就会出现问题。所以不能直接摒弃UDP跳到网络层!

数据首部内容方面:
UDP和TCP的首部都存在端口,但是两者的首部千差万别。当然也可以从下面的图片得出UDP的传输更轻量也更快。TCP的开销则相对较大。

  • TCP
    从上面的图片也可以看出TCP有UCP不具备的“序列号”和“确定答应号”。应用层把数据交给TCP之后如果数据比较大TCP会拆成多个数据段,并为每个数据段用序列号进行标注。
    但是!只有“序列号”是没有意义的,还需要确认数据是否到达目的地了,因此还需要“确认答应号”。如果接收方收到这份数据段,就可以用序列号+数据长度的和作为确认号进行返回。
    对于发送方就简单了,在指定时间内没有收到确认号就说明这个数据可能丢包了。

-UDP
但是UDP首部可没有这两个东西,不具备的“序列号”和“确定答应号”
UDP没有没有“序列号”的最直接感受就是没有顺序,一切都是乱的。
UDP能做的就是把应用层下来的每个报文都视为独立的消息,这样UDP就不进行分片了,在传输层封装成数据段直接交给网络层,这样数据段之间会有明显的边界。
因此就有逐条发送的说法了。当然这种方式很可能会乱序(当然也可以让应用层给乱序的UDP进行整理)

UDP没有“确认答应号”这样最直观的感受就是对发送的结果没有底(数据到没到、是不是发送的过程中丢失了)。
但是没关系!可以重新发送,这种传输方式即使第三次才传达成功也比TCP的开销和速度要好!

为保证数据传输可靠性和网络高效性方面:
-TCP
TCP为了确保网络中的传输速率能够适应网络的状况,避免数据的丢失和过载,推出了流量控制和拥塞控制。
流量控制:是针对发送双方的。即:让发送方放慢脚步,不要一下发送太多数据,因为接收方此时没有办法处理好这么多数据。
拥塞控制:是针对发送双方中间的网络,TCP可以更有效的利用网络的带宽,毕竟整个互联网是大家一起使用的,不能再原本网络就很拥堵的前提下还拼命发送数据。

-UDP
UDP没有拥塞控制和流量控制,因此接收方接收不了这么多数据或网络已经很拥挤的情况对UDP来说也是照发不误。
所以运营商会在不同层面进行管控.比如运营商会对UDP流量进行一定限制。

性能开销方面:

-TCP
TCP头部至少包含 20 字节的信息,加上额外的选项和填充。另外TCP是一种面向连接的协议,在数据传输之前需要建立一个连接(三次握手),数据传输完成后还需要释放这个连接(四次挥手)所以由于TCP需要建立连接和保证数据完整性,TCP开销会大于UDP。

-UDP
虽然UDP无连接,也不保证数据的可靠性,但是无连接和首部开销低对于某些协议来书也是优点
如:DNS核心只在查询不需要太大的数据量,要的就是结果和效率,而UDP在数据量小的时候就能做到简单高效
如:实时的语音和视频也很适合UDP,如果进行实时的视频因为丢包可能画面会有缺失,但总体不影响使用还是可以的。

帮助更好的理解TCP和UDP而做的假设

为了帮助理解这里做个假设:
1、假设如果实时的数据使用TCP的话,TCP就可能因为丢包而进行重传,已经抵达的需要等待没抵达的,这样就产生了时间差现在的数据可能就会变成过去的数据。

2、假设用UDP来发送一份文件呢,如果正常发送成功还好但是中途有丢包就会有数据缺失,这样就会造成内容的歧义,因此都是考虑用TCP来发送(TCP会建立连接来保证数据的可靠性)

适用场景

TCP适合网页、传输文件、电子邮件发送等需要保持长时间连接的情况。
UDP适合实时音视频传输、在线游戏等,这些应用场景对数据的实时性要求极高,而轻微的数据丢失相对于传输延迟来说是可以接受的。

总结:UDP不能保证数据交付的可靠性,但有时会比TCP更加适合针对性的场景。
1、连接方式:TCP 是面向连接的协议,UDP 是无连接的协议。
2、可靠性:TCP 提供可靠的传输,保证数据的完整性和顺序性,而 UDP 不保证数据的完整性和顺序性。
3、速度:UDP 比 TCP 更快,因为它不需要建立连接和维护连接状态。
4、传输方式:TCP 是基于字节流+的传输方式,UDP 是基于数据报的传输方式
5、性能开销:TCP开销比UDP大,TCP头部需要20字节,UDP头部只要8个字节
TCP无界有拥塞控制,UDP有界无拥塞控制。

标签:协议,UDP,TCP,发送,传输层,数据,连接
From: https://www.cnblogs.com/Edehuag/p/18464669

相关文章

  • ETAS ISOLAR-A/B配置CAN协议栈
    ETAS参考博世是研发需求为AUTOSAR平台提供了工具链,受到不是主机厂和Tire1的追捧,进行快速的平台开发和移植,本文一起分享BSW-CAN协议栈开发。1导入DBC解析CAN协议栈在IsolarA/B新建工程后,完成dbc和arxml的导入,系统上层的SWC和基本类型都有了,需要对工程BSW进行配置1.1OSOS......
  • DAY50WEB 攻防-PHP 应用&文件包含&LFI&RFI&伪协议编码算法&无文件利用&黑白盒
    知识点:1、文件包含-原理&分类&危害-LFI&RFI2、文件包含-利用-黑白盒&无文件&伪协议文件包含-原理&分类&利用&修复原理:程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无须再次编写,这种调用文件的过程一般被称为文件包含。在包含文......
  • Recaptcha3 协议识别 API 对接说明
    Recaptcha3协议识别API对接说明本文将介绍一种Recaptcha3协议识别API对接说明,它可让用户无需识别和点选Recaptcha3验证码图片,仅需通过提交WebsiteKey即可实现后台自动解码,完成验证。接下来介绍下Recaptcha3协议识别API的对接说明。注册链接点击链接注册......
  • Modbus TCP 西门子PLC指令以太口地址配置以及 Poll Slave调试软件地址配置
    1前言本篇文章讲了 ModbusTCP通讯中的一些以太网端口配置和遇到的一些问题,都是肝货自己测试的QAQ。2西门子SERVER指令该指令是让外界设备主动连接此PLC被动连接,所以这里应该填 外界设备的IP地址。这边我因为是电脑的Modbus Poll主机来进行通讯的所以填的是电脑......
  • MQTTnet.Server同时支持mqtt及websocket协议
    Net6后写法 Net6前写法Program.csusingMicrosoft.AspNetCore.Hosting;usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.Hosting;usingMQTTnet.AspNetCore;usingSystem;usingSystem.IO;namespaceMQTTnet.Server{publicclassProgra......
  • AXI4协议数据带宽计算
    AXI4协议数据带宽的计算需要考虑总线频率、数据宽度以及传输特性等因素。其计算公式为:最大传输带宽=总线频率×数据宽度×2(单位为bps)1。以下是对该公式的详细解释:总线频率:总线频率是指AXI总线工作的时钟频率,单位通常为赫兹(Hz),比如100MHz、200MHz等。它决定了在......
  • DLT645-2007 协议快速入门
    @目录DLT645-2007协议快速入门1.什么是DLT645-2007协议2.帧格式2.1帧起始符2.2地址域2.3控制码3.4数据长度3.5数据域2.6校验码CS2.7结束符2.8传输事项3.报文解析4.代码实例5.报文解析工具DLT645-2007协议快速入门1.什么是DLT645-2007协议DLT645目前主要使用......
  • TCP的连接与释放
    TCP的连接与释放TCP是面向连接的协议,它基于运输连接来传送TCP报文段TCP运输连接的建立和释放,是每一次面向连接的通信中必不可少的过程TCP运输连接有以下三个阶段:通过“三报文握手”来建立TCP连接。基于已建立的TCP连接进行可靠的数据传输。在数据传输结束后,还要通过“四......
  • TCP协议
    TCP报文段源端口和目的端口。各占2B。分别表示发送方和接收方使用的端口号。序号。占4B,范围为0~\(2^{32}-1\),共\(2^{32}\)个序号。TCP连接中传送的字节流中的每个字节都要按顺序编号,序号字段值指的是本报文段所发送的数据的第一个字节的序号。例如,一报文段的序号字段值是301,......
  • UDP协议
    UDP概述用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,即复用、分用以及差错检测功能。UDP的主要特点是:UDP是无连接的,即发送数据之前不需要建立连接,减少了开销和发送数据之前的时延UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态......