网络原理 --- 传输层Ⅰ UDP协议

news/2024/4/27 14:50:04/文章来源:https://blog.csdn.net/m0_58437435/article/details/127446851

文章目录

  • 网络原理
  • 传输层
    • UDP 协议
  • 总结


网络原理

介绍TCP/IP协议中每一层里面的核心内容~

  • 应用层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

传输层

传输层主要负责端到端之间的传输,重点关注的是起点和终点

核心的协议有两个:

  • UDP: 无连接 ,不可靠传输,面向数据报,全双工
  • TCP : 有连接,可靠传输,面向字节流,全双工

UDP 协议

UDP协议:

所谓的学习协议,很大工作就是在理解协议的报文格式~~

UDP报头格式非常简单,里面只有4个字段~

为什么能使用的端口是 0-65535 ?
在传输层协议中,表示端口号,长度就是 2 个 字节~
在这里插入图片描述

但是64kb太小了,如果需要使用UDP传输一个比较大的数据,就需要考虑进行拆包!!

💙拆包:

把一个大的数据报,拆成多个小的~

🌰举个例子:
随着业务的发展,网页上的广告越来越多,广告的样式也越来越复杂,这就导致,商搜服务器和入口服务器之间传输的数据量越来越大~ 直到单个数据报长度已经接近64kb了~
但是在应用层代码这里,针对广告数据拆包,拆成多个UDP数据报,分别传输,开发起来会比较复杂,测试起来也比较复杂,风险较高~

真正的解决问题方案:

直接使用 TCP !
TCP 是字节流的,没有对包的长度做出限制~

在这里插入图片描述

🎠校验和: 检查数据是否出错了~

网络传输过程中,受到一些干扰,是容易导致传输的数据出错的~

毕竟光信号和电信号,在一些特殊环境中可能受到影响~
比如 强电场,强磁场等
因此就需要保证接收方收到数据之后,能知道这个数据是否正确

校验和 :

UDP的校验和使用一个比较常见的 CRC算法(循环冗余校验)
UDP报文中的每个字节,都进行累加,加和也放到一个两个字节 的数字中
加的过程中如果溢出了,不需要处理~~
最终得到的结果,就是校验和

发送方发送的时候,就先计算一个校验和~

接收方接收的时候按照同样的规则,再算一遍校验和,检查自己算的校验和和发送方算的校验和是不是一样,如果是,说明数据没问题,如果不是,说明数据出错了

校验和例子:

飞雪连天射白鹿,笑书神侠倚碧鸳

总结

在这里插入图片描述

你可以叫我哒哒呀
本篇到此结束
“莫愁千里路,自有到来风。”
我们顶峰相见!

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1024程序员节来了,

在中国“硅谷”西三旗,高精尖人才聚集地,一个砖头扔下来,砸中的10个人中,有7个是程序员 如今,程序员已发展成社会的主流职业,有多主流呢? 街头的王大妈李大爷都在讨论: “我儿子程…

vite+vue3+ts项目搭建之集成qiankun让其成为子应用模板(vite+vue3+ts+qiankun项目)

前言 以下操作,是续接之前 第四步 ——即:vitevue3tspiniaelement-plus项目已完成搭建好,可以直接业务开发了 主应用技术栈:vue2webpackjs 集成qiankun(微前端) 1、安装vite-plugin-qiankun npm install vite-plugin-qiankun2、…

在Eclipse 中使用 Maven 创建雅加达 EE 应用程序

在本教程中,我将指导大家如何在 Eclipse 中创建新的雅加达 EE 应用程序支持 Maven。 首先,在 Eclipse 中,转到“文件”,选择“新建”,然后选择“Maven 项目”: 要使用 Maven 创建雅加达 EE 项目&#xff0…

操作系统闲谈01——IO多路复用

IO多路复用 同步异步IO问题 select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读…

贴片电阻的读数方法

贴片电阻图 今天讲一下贴片电阻的阻值、精度与贴片电阻丝印之间细微的关系。 大家经常见到的贴片电阻上的丝印有纯数字、数字与R组合、数字与除R之外的字母组合的,但大家知不知道这样的标注与贴片电阻的i精度相关?同一个阻值因为精度不同,标…

【Git】Git基本配置和常用命令

💭💭 ✨: git基本配置和命令   💟:东非不开森的主页   💜:学习的过程就是不断接触错误,不断提升自己,冲鸭💜💜   🌸: 如有错误或不…

从前端到全栈

你会学到什么? 掌握 Node.js 开发必备基础知识;理解 HTTP 协议核心原理与实践;基于 Node.js 实现自己的工程脚手架;从 0 打造在线绘图 Web 应用。 作者介绍 月影,字节跳动 ByteTech 负责人,资深 JavaScript 程序员&am…

GeoDetector --- 最优参数离散化

安装R包 (直接在RStudio安装GD包) install.packages("GD")加载数据 library(GD) #加载GD包 setwd("X:\\work\\GD") #设置工作路径 data1<-read.csv("data_raw.csv") #读取数据(未经离散化处理的原始数据) head(data1) #可以查看数…

(附源码)计算机毕业设计SSM基于的英语学习网站的设计与实现

&#xff08;附源码&#xff09;计算机毕业设计SSM基于的英语学习网站的设计与实现 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。…

ZK集群搭建和Hadoop单机版及Java API简单操作

一、背景 作为软件界最为复杂度的软件代表&#xff0c;当时操作系统、数据库、中间件。而学习中间件&#xff0c;分布式系统&#xff0c;必然绕不开zookeepr、Hadoop的学习。以下做个人搭建zookeeper和Hadoop的搭建的简单记录。相关的代码操作放在github上。 二、搭建过程 1、…

Markdown使用方法

Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML、PDF 以及本身的 .md 格式的文件。因简洁、高效、易读、易写,Markdown被大量使用,如Github、Wikipedia、简书等。 基本语法…

【ffmpeg】YUV实践

【ffmpeg】YUV实践前言生成YUV使用摄像头采集到YUV数据从现有的视频文件中提取YUV数据播放YUV播放Y分量提取各分量参考资料个人简介 &#x1f4e6;个人主页&#xff1a;一二三o-0-O的博客 &#x1f3c6;技术方向&#xff1a;C/C客户端资深工程师&#xff08;直播音视频剪辑&…

Spring 6.0 要来了,太强了

Spring Framework 6.0 发布了首个 RC 版本。 发布公告写道&#xff0c;Spring Framework 6.0 作为重大更新&#xff0c;目前 RC1 要求使用 Java 17 或更高版本&#xff0c;并且已迁移到 Jakarta EE 9&#xff08;在 jakarta 命名空间中取代了以前基于 javax 的 EE API&#xff…

HTML零基础入门(上)

一、什么是HTML html是一门标记性语言 全称是超文本标记语言(Hyper Text Markup Language)&#xff0c;它是用来描述网页的一种语言。 HTML 不是一种编程语言&#xff0c;而是一种标记语言 (markup language)。 html只是用来制作网页的一种语言&#xff0c;由各种各样的标签…

Visual Code配置C/C++

1. 前言 VS Code和以前的Visual studio 开发环境不一样,只是代码编辑器,如果需要运行代码C/C++,需要额外安装编译器。在Linux环境下,一般系统自带了gcc编译器,但是windows环境没有,所以要额外安装编译器,选择MinGW。总体参考资料: C/C++ for Visual Studio Code2. MinG…

ZnCdTe/ZnS三元/Cu2MoS4荧光量子点/MoS2QDs二硫化钼量子点的制备

瑞禧小编这里给大家准备了ZnCdTe/ZnS三元/Cu2MoS4荧光量子点/MoS2QDs二硫化钼量子点的制备步骤与方法&#xff0c;一起来学习吧&#xff01; MoS2QDs二硫化钼量子点的制备 以钼酸钠提供钼源,谷胱甘肽提供硫源,通过"自下而上"一步水热法制备MoS2 QDs,并以其荧光强度作…

Oracle——行转列与列转行

文章目录行转列创建表和增加测试数据方式一&#xff1a;先分组&#xff0c;再统计平铺方式二&#xff1a;使用Oracle11g自带函数PIVOT实现列转行创建表和增加测试数据方式一&#xff1a;union all 单个合并方式二&#xff1a;unpivot 函数实现总结资料参考行转列 把某一个字段…

Js中六种拖拽(拉)事件(drag 和 drop)

拖拽事件 今天同事问有没有实现过表格的拖拽功能&#xff0c;我当时想的是应该跟图片的拖拽代码逻辑是一样的主要是使用了浏览器中的以下几个事件 例如&#xff1a; 一、dragstart 二、dragend 三、dragover 四、dragenter 五、drop 等 文章目录拖拽事件前言(各个浏览器的兼容性…

基于matlab的神经网络设计,深度神经网络代码matlab

为什么谈论深度学习工具时&#xff0c;很少有人讨论matlab的神经网络工具包 首先深度学习不光是在学术界非常火热, 在工业界也有着大量的运用, 这就要求深度学习框架要方便在服务器上部署, 而这个恰恰是Matlab的软肋, 想象一下你前端用个Django做个页面接受用户输入的图像, 后…

【Linux驱动开发】并发控制机制:原子操作、自旋锁、信号量、互斥锁详解

并发控制机制 首先我们来了解一下 “操作系统的并发性” 这个概念&#xff1a; 操作系统的并发性(concurrence)&#xff1a;指的是两个或者两个以上事件在同一时间间隔内发生&#xff0c;即这个设备一会执行这个事件一会执行那个事件&#xff0c;多个事件共同使用一个设备。 操…