UDP/TCP的相关性你知道几个?

news2025/6/15 4:42:41

TCP/IP网络原理——主要围绕UDP/TCP进行讲解

文章目录

  • TCP/IP网络原理——主要围绕UDP/TCP进行讲解
    • 应用层
    • 传输层UDP/TCP
    • TCP
    • 丢包
    • 总结

应用层

网络协议的五层协议分别是应用层,传输层,网络层,数据链路层,物理层,这五层构成。
应用层主要是与程序员相关,代码是和应用层息息相关的,代码的功能就相当于对于该应用层的一种扩展,比如说http就是应用层的关键协议,在使用该协议时,程序员会针对该协议进行一系列的约定,约定数据报,数据格式。
约定方法,简单介绍就是两种。
1.确定传输信息:请求信息,响应信息(这些信息的格式都是由产品需求确定的)
2.数据组织方法。例:将二进制数据转化为字符串数据
2.1)如果是一串需要传输的字符串,可以使用在正文外的所有符号将正文属性信息隔开。
例:hello world!=》hello/world/!
2.2)将数据信息使用xml或者json进行组织。(具体信息需要程序员自行决定)

传输层UDP/TCP

初识UDP,我们定要知道UDP的模样,就像我们刚刚开始认识一个人,定要知道他原本的模样。
在这里插入图片描述

udp报头是由8个字节组成
报头存储的信息:源端口,源IP,源端口,目的端口

  • UDP 协议规定报文长度为 16 位,所以 UDP 的报文长度不能超过 2^16 = 65536 字节=64kb

udp报文是64kb,对于当时的计算机使用来说是很巨大的传输包,所有在当时使用并没有出现问题。而现在由于科技的发展迅速,这64KB对当前的数据传输已经不够用了,虽然可以将数据进行拆分传输,这样的话会增加处理数据的复杂度,因此我们的前辈们经过重重困难,创建了TCP数据传输……

TCP

同样的,在我们认识TCP传输模式时,现将报文格式:

在这里插入图片描述

TCP传输的数据没有限制!!!因为TCP的数据传输没有限制,使用时会有其他的问题。网络传输数据不稳定,有时候会被外界干扰导致数据错误,这时候的校验和及CRC算法就可以帮助检验数据是否正确。

使用校验和(checksum)时,当数据通过校验和,数据也不一定正确,不过没有通过校验和的数据一定是错误的

介绍校验和使用原理:

发送方将载荷数据带入校验和中计算得到sum1,将sum1带入载荷,然后接收方将载荷数据带入校验和中进行计得到sum2,对比sum1和sum2,相同数据可使用,不同则将数据丢弃。

TCP特点

  1. 有连接
  2. 全双工
  3. 可靠传输
  4. 面向字节流

TCP的创造是为了可靠传输!!!(可靠传输是将数据尽可能的传输,没有达到100%成功,不过在TCP数据传输失败会有信息返回)
TCP的应答报文:ACK

ACK是用于接收方对数据的响应策略,当发送方将数据发过去时,会生成相应的序号,如果接收方接收到信息,就会返回ACK报文也就是确认号。比如发送方发送了1000个数据,ACK应答报文会回复1001,此时发送方就会知道对方接受到了数据。这里的回应规则是发送序号的下一个序号。
有时候发送数据也会出现其他情况:先发后至

就像你和你女朋友聊天

女朋友:最近心情不好,有没有时间约个饭?

你:随时都可以

女朋友:我把我闺蜜介绍给你认识?

你:还是算了吧。

这样你们的关系还可以维持,但是如果数据发生了先发后至!

//出现先发后至

女朋友:最近心情不好,有没有时间约个饭?

你:还是算了吧。

女朋友:我把我闺蜜介绍给你认识?

你:随时都可以

兄弟,完了!!!

不过这里的TCP可以帮助你把发送的数据进行排序,所以在这里不会出现先发后至!TCP有一个接收缓冲区,会将接收的数据进行排序。这是TCP非常重要的一个用途。

丢包

丢包也是网络传输经常会遇到的事情,出现丢包的可能情况就是网络传输中设备分配网络不均匀,在多转发,达到转发上限的情况下会出现丢包的情况,注意这里连续丢包是十分严重的问题,需要检查网络设备。
TCP用于解决丢包问题是一把好手!
超时重传:针对丢包时,不会返回确认序号,会等待一段时间后,会重新发送数据,以此类推,没丢包一次系统等待的时间会变长,多次无果会尝试重置连接,如果重置连接失败,最后才会关闭连接。

ACK丢失,也就是确认序号丢失,作为发送方是不会知道ACK丢失的,所以这里会发生数据重传,会发生重复数据的问题,然而TCP有一个重复数据处理机制,可以自动去重。

总结

网络协议的五层模型中应用层与程序员契合度最高,协议约定和组织数据格式都是由程序员决定的。传输层中两大主角UDP/TCP中,UDP的数据稳定但是适用场景不多对于TCP的四大特性,和对数据的传输中的困难和出现的错误都有针对的解决方案,对于TCP中序号的传递可以知道数据传输中的错误和应对错误的解决方法。以上,希望能帮助大家理解UDP/TCP的特性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STL十】关联容器——set容器、multiset容器

【STL十】关联容器——set容器、multiset容器一、set简介二、头文件三、模板类四、set的内部结构五、成员函数1、迭代器2、元素访问3、容量4、修改操作~~5、操作~~5、查找6、查看操作六、demo1、查找find2、修改操作insert3、修改操作erase、clear七、multisetset和multiset会根…

linux四剑客 grep awk sed find

Grep 过滤来自一个文件或标准输入匹配模式内容。 除了grep外,还有egrep、fgrep。egrep是grep的扩展,相当于grep -E。fgrep相当于grep -f,用的少。 Usage: grep [OPTION]… PATTERN [FILE]… 支持的正则描述-E,–extended-regexp…

爱智EdgerOS之深入解析VSCode的EdgerOS插件

一、安装插件 EdgerOS 插件是一个专门为应用开发者提供的在 EdgerOS 下提供应用构建、应用部署、应用更新等功能的插件,同时它还可以监视爱智应用的执行状态,方便开发者更好地调试应用。EdgerOS 插件需要在 VSCode 的 “拓展” 中下载安装,如…

vue-vue2和vue3的diff算法

核心要点 数据变化时,vue如何更新节点虚拟DOM 和 真实DOM 的区别vue2 diff 算法vue3 diff 算法 一、 数据变化时,vue如何更新节点 首先渲染真实DOM的开销是很大,比如有时候我们修改了某个数据且修改的数据量很大时,此时会频繁的…

自学编程的5大误区,早知道早避坑,过来人的宝贵经验

前言 有的人自学很快,几乎一个多月就能掌握一门技术,而有的人苦苦坚持,最后还是半途而废,很大的原因就在于在学习的时候掉进了一些误区没能走出来。 今天我们就来讲讲自学编程常见的5大误区,避开这些误区我们定能在自…

【Java Web】014 -- SpringBoot原理(配置优先级、Bean管理、SpringBoot原理)

目录 一、配置优先级 1、配置(3种:.properties、yml、yaml) ①、配置文件优先级 ②、如何指定Java系统属性和命令行参数 ③、5种配置文件的优先级 二、Bean管理 1、获取bean(3种方法) 2、bean作用域(5种&am…

Arduino开发之如何连接超声波模块?

文章目录0、引言1、超声波模块说明2、代码编写3、功能演示0、引言 在利用Arduino开发过程中,若需知道设备与周围环境的距离,可利用超声波模块测量短程距离,使运动设备感知周围环境。本文在【Arduino如何进行开发?】基础上&#xf…

探索树形数据结构,通识树、森林与二叉树的基础知识(专有名词),进一步利用顺序表和链表表示、遍历和线索树形结构

树与二叉树 1.树 1.树形结构(非线性结构) 结点之间有分支,具有层次关系 树的定义: 树(tree)是n(n≥0)个有限集。 若n 0,则称为空树; 若n > 0,则它满足如下两个条件: 有且仅有一个特定的称为根(Ro…

NIFI大数据进阶_Json内容转换为Hive支持的文本格式_实际操作_02---大数据之Nifi工作笔记0032

然后首先我们来看一下hdfs中的数据的格式可以看到,还是json的格式对吧 而且也没有回行 然后我们来操作,首先添加一个evaluateJsonPath处理器 可以看到找到这个处理器 添加以后,我们去配置 ​​​​​​​ 点击去配置evaluateJsonPath处理器 可以看到首先我们destination这里配…

Rancher部署K8s集群

一、集群配置 服务器CPU内存磁盘操作系统k8s-master16核16G60GCentOS Linux release 7.5.1804k8s-node-116核16G60GCentOS Linux release 7.5.1804k8s-node-216核16G60GCentOS Linux release 7.5.1804 Rancher version : 2.6.3 二、环境初始化 所有服务器均执行一遍 1、将…

如何在矩池云上部署 Carla,模拟自动驾驶

简介 Carla 是一款基于 Python 编写和 UE(虚幻引擎)的开源仿真器,用于模拟自动驾驶车辆在不同场景下的行为和决策。它提供了高度可定制和可扩展的驾驶环境,包括城市、高速公路和农村道路等。Carla 还提供了丰富的 API 和工具&…

vscode中的配置

首先,运行或调试某文件,需要该文件是活动文件(当前打开的文件)。 下面依次介绍tasks.json和launch.json的配置参数。 tasks.json 1.tasks.json的用途 用于指定编译器和链接文件等。默认路径在.vscode下面。 2.如何打开一个tas…

springboot+Mybatis项目搭建教学(controller、service、dao、entity),并写一个简单的接口

创建一个springboot的项目 首先我们需要新建一个文件夹对吧,这里就不展示了,然后我们用IDEA打开这个文件夹,是这样的 新建一个模块 然后按照这里的进行选择 模块名字是自己随便起的,命名在这里时无关紧要的,然后我…

Python实现Imagenet数据集的合并和拆分

Python实现Imagenet数据集的合并和拆分 1. 合并Imagenet 任务需求 文件夹形式为一个数据集MyImagenet,路径为/home/lihuanyu/code/03AdaBins/img_data/MyImagenet/val,val文件夹又有若干的类别子文件夹,子文件夹是每一个类别的图片&#xf…

数据结构_第十一关:二叉树的链式结构

目录 1.二叉树链式结构的实现 1.1前置说明 1.2二叉树的遍历 1.3二叉树遍历的实现: 1)先序遍历、中序遍历、后续遍历代码如下 2)层序遍历: 1.4结点个数以及高度的计算 1)求二叉树的总节点: 2&#…

阿里张勇:所有行业都值得用大模型重新做一遍!

‍数据智能产业创新服务媒体——聚焦数智 改变商业“2023阿里云峰会”于4月11日在北京国际会议中心隆重召开,本次峰会以" 与实俱进 为创新提速!"为主题,阿里巴巴集团董事会主席兼首席执行官张勇、阿里云智能集团首席技术官周靖人、…

Python机器学习:适合新手的8个项

再多的理论也不能代替动手实践。教科书和课程会让你误以为精通,因为材料就在你面前。但当你尝试去应用它时,可能会发现它比看起来更难。而「项目」可帮助你快速提高应用的 ML 技能,同时让你有机会探索有趣的主题。此外,你可以将项…

java mysql高校教学成果管理系统dzkfY3程序

1.用户管理模块: 该模块包括注册用户管理和系统用户管理,系统用户主要是普通管理员,对用户信息进行管理,只有注册用户才可在该系统上进行相应的操作。用户对个人信息可进行修改;管理员可对自己的个人信息进行维护&…

Java线程系列详解

一,基本概念 进程: 程序是计算机指令的集合,它以文件形式存储在磁盘上,而进程就是一个执行中的程序,而每一个进程都有其独立的内存空间和系统资源。线程: 线程运行在进程中,不能独立存在。线程…

2019年 团体程序设计天梯赛——题解集

前言: Hello各位童学大家好!😊😊,茫茫题海你我相遇即是缘分呐,或许日复一日的刷题已经让你感到疲惫甚至厌倦了,但是我们真的真的已经达到了我们自身极限了吗?少一点自我感动&#xf…