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

  • 🎥 个人主页: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.mzph.cn/news/709774.shtml

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

相关文章

Linux 基础之 vmstat 命令详解

文章目录 一、前言二、使用说明2.1 vmstat [delay/count/d/D/t/w]2.2.vm模式的字段 一、前言 vmstat(VirtualMeomoryStatistics,虚拟内存统计)是一个不错的 Linux/Unix 监控工具,在性能测试中除了top外也是比较常用的工具之一,它可以监控操作…

同局域网共享虚拟机(VMware)

一、前言 首先我们先来了解下 VMware 的三种网络模式桥接模式、NAT模式、仅主机模式,网络类型介绍详情可以参考下我之前的文档 Linux系统虚拟机安装(上)第三章 - 第9步指定网络类型。了解三种网络模式的原理之后,再来剖析下需求&…

Python爬虫——Urllib库-上

这几天都在为了蓝桥杯做准备,一直在刷算法题,确实刷算法题的过程是及其的枯燥且枯燥的。于是我还是决定给自己找点成就感出来,那么Python的爬虫就这样开始学习了。 注:文章源于观看尚硅谷爬虫视频后笔记 目录 Urllib库 基本使…

自定义View中的ListView和ScrollView嵌套的问题

当我们在使用到ScrollView和ListView的时候可能会出现显示不全的问题。那我们可以进行以下分析 ScrollView在测量子布局的时候会用UNSPECIFIED。通过源码观察, 在ScrollView的onMeasure方法中 Overrideprotected void onMeasure(int widthMeasureSpec, int heightMe…

MySQL进阶:大厂高频面试——各类SQL语句性能调优经验

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:MySQL进阶:强推,冲大厂必精通!MySQL索引底层(BTree)、性能分析、使用…

HTTP笔记(五)

个人学习笔记(整理不易,有帮助点个赞) 笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 目录 一:HTTP报文首部 (1)HTTP请求报文 (2&#xff09…

Kaggle 竞赛入门

打比赛不用写算法源码,应用的时候不用自己写。学习的时候可以自己写。 Kaggle 竞赛入门 认识 Kaggle 平台Kaggle竞赛知识前提结构化数据前提图像数据文本数据 Kaggle竞赛套路一个赛题的完整流程 认识 Kaggle 平台 Kaggle 官网 主页,比赛(数据…

复现nerfstudio并训练自己制作的数据集

网站:安装 - nerfstudio GitHub - nerfstudio-project/nerfstudio:NeRF 的协作友好工作室 安装之前要确保电脑上已经有CUDA11.8或以上版本(更高版本的可以安装11.8的toolkit) 创建环境 conda create --name nerfstudio -y pyt…

浅谈 Linux 网络编程 - Server 端模型、sockaddr、sockaddr_in 结构体

文章目录 前言前置知识Server 端核心模型 【重点】相关函数 【重点】socket 函数bind 函数listen 函数accept 函数close 函数 sockaddr 数据结构 【重点】 前言 本文主要是对 Linux 网络编程中,Server 端的模型、相关函数 以及 sockaddr、sockaddr_in 结构体做介绍…

黑马程序员——接口测试——day05——Request库、Cookie、Session、UnitTest框架

目录: Requests库 Requests库安装和简介设置http请求语法应用案例 案例1案例2案例3案例4Cookie Cookie简介CookieSession认证方式案例5-看演示,此代码不需实现Session Session简介Session自动管理Cookie案例6面试题Cookie和Session区别获取指定响应数据…

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

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

Linux|centos7|yum和编译安装ImageMagick记录

一, yum安装imagemagick imagemagick这个软件是图像文件的处理神器,可以文字转图像以及图像的剪辑等等工作,也是配合人工智能工程的不可或缺的工具,具体的用处和特点就不在这里废话了,有兴趣的百度就行了 本次是在…

SpringBoot底层原理

SpringBoot底层原理 一 配置优先级 1.配置方式 Springboot中支持三种配置方式,分别为: application.propertiesapplication.ymlapplication.yaml 2.配置优先级 当存在多份配置文件时,配置文件会按照它们的优先级生效。 优先级从高到底…

蓝桥杯-灌溉

参考了大佬的解题思路&#xff0c;先遍历一次花园&#xff0c;找到所有的水源坐标&#xff0c;把它们存入 “水源坐标清单” 数组内&#xff0c;再读取数组里的水源坐标进行扩散。 #include <iostream> using namespace std; int main() {int n,m,t,r,c,k,ans0,list_i0;…

(每日持续更新)jdk api之OutputStreamWriter基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

c++ for 循环语句

循环语句 在C中&#xff0c;有几种循环语句可用于重复执行一段代码&#xff0c;直到满足指定条件为止&#xff0c;主要有 for 循环、while 循环、do-while 循环三种循环语句。三者区别&#xff1a; 循环类型特点for 循环1. 适用于已知循环次数的情况&#xff0c;循环次数事先…

推荐系统经典模型YouTubeDNN代码

文章目录 前言数据预处理部分模型训练预测部分总结与问答 前言 上一篇讲到过YouTubeDNN论文部分内容&#xff0c;但是没有代码部分。最近网上教学视频里看到一段关于YouTubeDNN召回算法的代码&#xff0c;现在我分享一下给大家参考看一下&#xff0c;并附上一些我对代码的理解…

一张图读懂人工智能

一、生成人工智能的概念和应用&#xff0c;以及如何使用大型语言模型进行聊天和创造原创内容。这项技术将会对人类和企业产生深远影响。 计算机获得学习、思考和交流的能力&#xff0c;被称为生成人工智能。生成人工智能可以立即获得人类所有知识的总和&#xff0c;并回答任何…

综合实战(volume and Compose)

"让我&#xff0c;重获新生~" MySQL 灾难恢复 熟练掌握挂载卷的使用&#xff0c;将Mysql的业务数据存储在 外部。 实战思想: 使用 MySQL 5.7 的镜像创建容器并创建一个普通数据卷 "mysql-data"用来保存容器中产生的数据。我们需要容器连接到Mysql服务&a…

TeXiFy IDEA 编译后文献引用为 “[?]“

文章目录 1. 问题描述2. 原因分析3. 解决方案3.1 添加自动化脚本3.2 附录——配置一览表 1. 问题描述 在 IDEA 中使用 TeXiFy IDEA 编译后的文章文献引用是 [?] 2. 原因分析 根据网上教程所生成的目录结构如下&#xff1a; 报错日志&#xff1a; 根据 /out 目录结构&#x…