计算机网络原理--传输层

  • 🎥 个人主页:Dikz12
  • 📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香
  • 欢迎大家👍点赞✍评论⭐收藏

目录

 TCP/IP五层(或四层)模型

传输层 

TCP和UDP的区别 

UDP协议

 校验和

如何基于校验和完成数据传输?

 校验和是怎么计算的?

TCP协议 

 TCP协议报文格式


 TCP/IP五层(或四层)模型

传输层 

就是对应用层数据,在进行打包,变成传输层的数据报.把刚才的应用层数据,基础上拼接上传输层的报头.

学习传输层,就要学习传输层的典型协议TCP协议和UDP协议. 

TCP和UDP的区别 

UDP: 无连接 、面向数据报 、不可靠传输 、 全双工.

TCP:  有连接 、面向字节流 、 可靠传输 、 全双工.

UDP协议

 学习一个协议,最重要的就是去理解协议报文格式。

上图可以理解成:

 UDP报头:分成四个部分,每个部分占两个字节。

UDP报文长度:2个字节,16位表示数据,范围 0 - 65536 => 64kb (UDP 数据报最大就是64kb).

UDP载荷 : 真正保存数据的地方.

 校验和

在网络传输的过程中,由于外界干扰的情况下 ,就可能出现数据传输错误的情况。所以,就要有能识别出出错的数据,而校验和就是一种检查方式.

如何基于校验和完成数据传输?

1. 发送方,把要发送的数据整理好(data1),在通过一定的算法,计算出校验和 checksum1.

2.发送方把data1 和 checksum1 一起通过网络发送出去.

3.接收方收到数据,收到的数据称为(data2),这时候数据可能就不一样了,收到校验和checksum1.

4.接收方在根据 data2重新计算校验和(相同的算法).

5.对比,checksum1 和 checksum2 是否相同,如果相同,则认为data1 和 data2 大概率是相同的;否则,data1 和 data2 一定不同.

 校验和是怎么计算的?

 此处UDP中使用的是CRC算法(循环冗rong余算法)

     就是把当前要计算的校验和的数据,每个字节,都进行累加,把结果保存到这个 两个字节的变量中。(累加过程中如果溢出,也没关系)

 如果中间某个数据,出现传输错误,第二次计算的校验和就会和第一次不同。

CRC这个算法其实不是特别的靠谱,导致两个不同的数据,得到相同的校验的概率还是比较大的。(前一个字节恰好少1,后一个字节恰好多一)

md5 算法 

这个算法是很常用的,要了解它的一些特点.

1.定长.

 无论你原始的数据多长,计算得到的 md5,都是固定长度。

 

2.分散.

给定两个原始数据,只要有一个字节不同,得到的 md5值都会差异很大。

3.不可逆.

 给一个原始数据,计算 md5,非常容易;给你md5,还原出原始数据,计算量非常庞大,甚至超出了现有的计算机算力的极限,理论上是不可行的。

TCP协议 

 TCP协议报文格式

 32位序号 和 32位确认序号 :应用于TCP机制中的确认应答.

4位首部长度:TCP的报头长度是不固定的(变长的)报头最短是20字节(没有选项);最长是60字节.只有4位表示,最大取值范围15,单位是4个字节,所以最大值是60字节。

保留6位 : UDP有个问题,长度64kb,改不了,就很难受。所以,设计TCP的大佬就留了一个小心机,现在不用,先占个位置,后面需要再使用。

6个标志位:用来区分TCP报文的类别,分别用于TCP不同的机制中.

16位窗口大小:应用于TCP机制中的流量控制.

16位校验和:  跟UDP一样的.

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

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

相关文章

【Unity】如何设置Unity脚本的执行顺序?

在 Unity 编辑器中设置脚本执行顺序 在 Unity 中,如果有多个脚本,并且它们之间的执行顺序很重要,可以通过编辑器设置来确保它们按照自己期望的顺序执行。这对于确保某些脚本在其他脚本之前执行非常有用。在这篇文章中,将向会展示如…

Kubernetes IoTDB系列 | IoTDB数据库同步|IoTDB数据库高可用 | v1.3.0

目录 一、介绍二、应用场景三、IoTDB 数据库搭建四、数据同步一、介绍 IoTDB 数据同步功能可以将 IoTDB 的数据传输到另一个数据平台,我们将一个数据同步任务称为 Pipe。 一个 Pipe 包含三个子任务(插件): 抽取(Extract)处理(Process)发送(Connect)Pipe 允许用户自…

【MySQL】学习多表查询和笛卡尔积 - 副本

](https://img-blog.csdnimg.cn/21dd41dce63a4f2da07b9d879ad0120b.png#pic_center) ??个人主页: ??热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ??个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-N8PeTKG6uLu4bJuM {font-family:“trebuchet ms”,…

强化学习Agent系列(二)——PyGame虚拟环境创建与Python 贪吃蛇Agent制作实战教学

文章目录 一、前言二、gymnasium 简单虚拟环境创建1、gymnasium介绍2、gymnasium 贪吃蛇简单示例 三、基于gymnasium创建的虚拟环境训练贪吃蛇Agent1、虚拟环境2、虚拟环境注册3、训练程序4、模型测试 三、卷积虚拟环境1、卷积神经网络虚拟环境2、训练代码 一、前言 大家好&am…

300分钟吃透分布式缓存(拉钩教育总结)

开篇寄语 开篇寄语:缓存,你真的用对了吗? 你好,我是你的缓存老师陈波,可能大家对我的网名 fishermen 会更熟悉。 我是资深老码农一枚,经历了新浪微博从起步到当前月活数亿用户的大型互联网系统的技术演进…

NebulaGraph入门

感谢阅读 官方文档链接NebulaGraph简介nGQLnGQL简介占位标识符和占位符值注释实列大小写区分关键字 基本概念以及相关代码实现补充说明图空间语法以及列子创建克隆官方示例代码(创建并克隆)USE语句指定图空间时查看所有SPACESPACE详情CLEAR SPACE删库跑路(看玩笑的说…

C语言:字符函数 字符串函数 内存函数

C语言:字符函数 & 字符串函数 & 内存函数 字符函数字符分类函数字符转换函数tolowertoupper 字符串函数strlenstrcpystrcatstrcmpstrstrstrtok 内存函数memcpymemmovememsetmemcmp 字符函数 顾名思义,字符函数就是作用于字符的函数,…

3dgs学习(二)—— 3d高斯与协方差矩阵及其几何意义

协方差矩阵与3d高斯 3d高斯与椭球与协方差矩阵 3d高斯,及3维空间内的正态分布。 通过一元正态分布的坐标系图像不难想象,3维空间中的正态分布点集中在一片椭球空间中,各方向长轴取决于各方向正态分布的方差。 而协方差矩阵通过计算多元之…

好物周刊#42:国产项目管理软件

https://github.com/cunyu1943 村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. 菠萝博客 基于 Java 的菠萝博客系统,简单易部署,精致主题,贴心服务&#xf…

本届挑战赛亚军方案:面向微服务架构系统中无标注、多模态运维数据的异常检测、根因定位与可解释性分析

CheerX团队来自于南瑞研究院系统平台研发中心,中心主要从事NUSP电力自动化通用软件平台的关键技术研究与软件研发。 选题分析 图1 研究现状 本次CheerX团队的选题紧密贴合了目前的运维现状。实际运维中存在多种问题导致运维系统的不可用。比如故障发生时&#xff…

【常用】【测速】ptflops库---速度FPS、参数Params、计算复杂度Flops

一、常用名字 中文名字 英文名字 简称 单位 模型参数量 number of parameters. param. (单位B M) 计算复杂度 computational…

【Spring Cloud 进阶】OpenFeign 底层原理解析

参考文章 万字33张图探秘OpenFeign核心架构原理 | 三友SpringCloud OpenFeign源码详细解析Java 代理机制 OpenFeign 是一个精彩的使用动态代理技术的典型案例,通过分析其底层实现原理,我们可以对动态代理技术有进一步的理解。 目录 1. Feign 与 OpenFeig…

VUE3:统计分析页面布局+自适应页面参考

一、布局 <template><div class"container1"><div class"form white"><el-form :inline"true" :rules"rules" :model"queryParams" label-width"80px" ref"querParmRef"><e…

力扣递归:路径总和

思路&#xff1a;此题思路为递归实现&#xff0c;递归思路为&#xff1a;在每层递归的过程中将各个节点的数据记录下来&#xff0c;不断将减少目标数据的值准备进行判断&#xff0c;当进行到叶子节点时要进行判断 /*** Definition for a binary tree node.* struct TreeNode {…

OJ_二叉树最短路径长度

题干 C实现 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> using namespace std;struct TreeNode {int num;TreeNode* left;TreeNode* right;TreeNode* parent; };void createTree(vector<TreeNode*>& nodeArr, int n) {for (i…

2000-2022年上市公司绿色专利申请占比/数据

2000-2022年上市公司绿色专利申请占比数据 1、时间&#xff1a;2000-2022年 2、来源&#xff1a;国家知识产权局、WIPO绿色专利清单 3、指标&#xff1a;年份、股票代码、股票简称、行业代码、省份、城市、区县、行政区划代码、城市代码、区县代码、首次上市年份、上市状态、…

又降价啦!2024年阿里云核心产品价格全线下调,最高幅度达55%

2024年3月1日开始&#xff0c;阿里云将开启新一轮的降价政策&#xff0c;核心产品价格全线下调&#xff0c;平均降幅20%&#xff0c;最高幅度达55%&#xff0c;阿里云希望通过此次大规模降价&#xff0c;让更多企业和开发者用上先进的公共云服务&#xff0c;加速云计算在中国各…

深度学习 精选笔记(8)梯度消失和梯度爆炸

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

备战蓝桥杯Day19 - 堆排序基础知识

一、每日一题 - 填充 详细题解 s input() # 输入字符串 n len(s) # 定义字符的长度 judge ["00", "11", "0?", "1?", "?0", "?1", "??"] # 把所有的情况一一列举出来 count 0 # 设置计数…

【Python】PyGameUI控件

哈里前段时间写了一个windows平板上自娱自乐&#xff08;春节和家人一起玩&#xff09;基于pygame的大富翁游戏。 pygame没有按钮之类的UI控件&#xff0c;写起来不怎么顺手。就自己写一个简单的框架。 仓库地址 哈里PygameUi: pygame ui封装自用 (gitee.com) 使用示例 示…