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

news2025/2/22 10:51:37

  • 🎥 个人主页: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一样的.

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

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

相关文章

配置前端项目到 github-pages

Quickstart for GitHub Pages - GitHub Docs

腾讯云优惠:2024云服务器租用价格表,买前必看

一张表看懂腾讯云服务器租用优惠价格表,一目了然,腾讯云服务器分为轻量应用服务器和云服务器CVM,CPU内存配置从2核2G、2核4G、4核8G、8核16G、4核16G、8核32G、16核32G、16核64等配置可选,公网带宽1M、3M、5M、12M、18M、22M、28M…

LINUX基础培训二十五之shell表达式与运算

一、条件表达式 条件表达式是用于判断条件是否满足的逻辑表达式,当条件为真,返回0,否则返回1。 常用语法: 1、test 测试表达式 2、[ 测试表达式 ] #两边需要有空格 3、[[ 测试表达式 ]] 4、(( 测试表达式 )) 第一种和第二种是等…

鸿蒙这么大声势,为何迟迟看不见岗位?最新数据来了

对于鸿蒙生态建设而言,2024年可谓至关重要,而生态建设的前提,就是要有足够的开发人才。与之对应的,今年春招市场上与鸿蒙相关岗位和人才旺盛的热度,一方面反应了鸿蒙生态的逐渐壮大,另一方面也让人们对鸿蒙…

Tomcat源码解析(二): Bootstrap和Catalina

Tomcat源码系列文章 Tomcat源码解析(一): Tomcat整体架构 Tomcat源码解析(二): Bootstrap和Catalina 目录 一、基础组件1、Lifecycle生命周期顶级接口2、组件的默认实现 二、启动类Bootstrap1、main2、init3、load与start 三、加载Catalina1、load2、s…

2024腾讯云优惠券免费领取_代金券查询和使用方法

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

工厂模式 详解 设计模式

工厂模式 其主要目的是封装对象的创建过程,使客户端代码和具体的对象实现解耦。这样子就不用每次都new对象,更换对象的话,所有new对象的地方也要修改,违背了开闭原则(对扩展开放,对修改关闭)。…

spring6学习笔记

1.环境准备 1.idea建立一个空项目,jdk要求是17 2.Maven配置(和mybatis里一样) 3.新建一个模块 2.ocp原则 3.依赖倒置原则(DIP) 什么是依赖倒置原则? 1.面向接口编程,面向抽象编程,不要面向…

Windows安装VNC连接工具并结合cpolar实现远程内网Ubuntu系统桌面

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

回溯【基础算法精讲 14】

视频地址 : 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 基本概念 1 . 例子 例如从abc和def(n 2)中各选出一个组成新的字符串? 如果n很大 , 这个时候for循环的表达能力有限 ; 2 . 原问题 和 子问题 3 . 增量构造答案 这个增量构造答案的过程就是回溯…

java之Bean对象

1. 什么是Bean? Bean被实例化的,是被Spring框架所管理的Java对象。 Spring容器会自动完成Bean的实例化。将所创建的的Bean自动注入到Ioc容器中以供调用。 spring框架中 IOC容器中管理的对象就是Bean对象 2. 第三方bean Bean 因为第三方bean&#xff0…

SQL函数学习记录

聚合函数 函数是编程语言的基础之一,在对数字的运算中,我们用的最多的就是聚合函数,本篇接下来就详细阐述下SQL中聚合函数的运用。 什么是聚合函数(aggregate function)? 聚合函数指的是对一组值执行计算…

手撕LRU缓存——LinkedHashMap简易源码

题目链接:https://leetcode.cn/problems/lru-cache/description/?envTypestudy-plan-v2&envIdtop-100-liked 原理非常简单,一个双端链表配上一个hash表。 首先我们要知道什么是LRU就是最小使用淘汰。怎么淘汰,链表尾部就是最不常用的直接…

92、评估代码生成操作带来的性能提升

本节评估一下,通过代码生成操作之后,对于模型的性能提升。 评估下性能 在相同的环境下,分别运行 4th_no_malloc 和 5th_codegen 下的 compile.sh 脚本进行代码编译,然后运行编译后生成的可执行文件 ./resnet。 可以分别获取到权值预加载前后的性能指标。 注意:不同电脑机…

可视化图文报表

Apache Echarts介绍 Apache Echarts是一款基于Javascript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网&#xff1a;Apache ECharts 入门案例&#xff1a; <!DOCTYPE html> <html>…

Git教程-Git的基本使用

Git是一个强大的分布式版本控制系统&#xff0c;它不仅用于跟踪代码的变化&#xff0c;还能够协调多个开发者之间的工作。在软件开发过程中&#xff0c;Git被广泛应用于协作开发、版本管理和代码追踪等方面。以下是一个详细的Git教程&#xff0c;我们将深入探讨Git的基本概念和…

基于大模型思维链(Chain-of-Thought)技术的定制化思维链提示和定向刺激提示的心理咨询场景定向ai智能应用

本篇为个人笔记 记录基于大模型思维链&#xff08;Chain-of-Thought&#xff09;技术的定制化思维链提示和定向刺激提示的心理咨询场景定向ai智能应用 人工智能为个人兴趣领域 业余研究 如有错漏欢迎指出&#xff01;&#xff01;&#xff01; 目录 本篇为个人笔记 记录基…

【算法】最小生成树—Prim算法与Kruskal算法

Prim算法和Kruskal算法都是解决最小生成树问题的经典算法。最小生成树是原图的最小连通子图&#xff0c;它包含原图的全部结点&#xff0c;且保持图连通的所有边代价和最小。一个连通图可能有多个最小生成树。 一、Prim算法 含义 Prim算法&#xff0c;也被称为普里姆算法&…

项目解决方案: 实时视频拼接方案介绍

目 录 1、实时视频拼接概述 2、适用场景 3、系统介绍 3.1拼接形式 3.1.1横向拼接 3.1.2纵向拼接 3.2前端选择 3.2.1前端类型 3.2.2推荐配置 3.3后端选择 3.3.1录像回放 3.3.2客户端展示 4、拼接方案介绍 4.1基于4K摄像机的拼接方案 4.1.1系统架构…

ESP8266智能家居(3)——单片机数据发送到mqtt服务器

1.主要思想 前期已学习如何用ESP8266连接WIFI&#xff0c;并发送数据到服务器。现在只需要在单片机与nodeMCU之间建立起串口通信&#xff0c;这样单片机就可以将传感器测到的数据&#xff1a;光照&#xff0c;温度&#xff0c;湿度等等传递给8266了&#xff0c;然后8266再对数据…