(Java高级教程)第三章Java网络编程-第一节2:网络编程必备网络知识2之网络协议分层

news2024/11/8 3:44:41

文章目录

  • 一:生活中的协议分层
    • (1)生活中的分层1——汉堡包
    • (2)生活中的分层2——打电话
  • 二:网络分层
    • (1)OSI七层模型
    • (2)TCP/IP分层模型
  • 三:OSI参考模型与TCP/IP参考模型比较
    • (1)相同点
    • (2)不同点

一:生活中的协议分层

(1)生活中的分层1——汉堡包

汉堡包属于一种快餐,之所以称之为快餐,是因为它的制作效率高,在一定时间内可以满足不同口感,搭配出不同风格的食物。之所以这样是因为汉堡包采用了分层结构,想要替换哪一步就替换那一部分,每一层与每一层互不干扰

在这里插入图片描述
这样带来的好处就是解耦,在软件设计中我们经常提到高内聚,低耦合,汉堡包所做的目的就是这样,我们学习C++也是这样,在C语言中所有代码都是通过调用接口完成,耦合性太强,中间一旦一个环节出现错误,满盘皆输。但是增加了类之后,类于类之间互不干扰,就像STL中的vector,它可以放自定义类型,vector一定能保证它的插入删除接口是不出现错误的,那么最终如果仍然产生问题的话,就一定是你的自定义了类型有问题了

(2)生活中的分层2——打电话

如下图,有两个人通过通信设备进行交谈。在这个过程中,他们使用的语言协议作为麦克风的音频输入,在通信设备那一层转换为电信号,然后将电信号传送到另一个人的通信设备,再向上转化为我们可识别的内容,依次完成通信
在这里插入图片描述
上图中反应的就是:上层需要使用下层接口完成通信,而下层需要将数据通过某种方式翻译后反馈给上层

如下图,在实际生活中,我们与人交谈可以使用座机也可以使用手机,并且在通信设备不变的情况下,也可以使用英语交流(前提是双方都采用这种“协议”)
在这里插入图片描述
这样做带来的好处就是下层只负责能将数据正确翻译给上层,而上层负责会使用这些接口(就像会使用手机一样),依次达到通信

上面的例子其实只涉及到了两层,实际的协议分层相较它还是比较复杂的,但是所体现的思想是一致的。

二:网络分层

(1)OSI七层模型

OSI将协议分为如下7层,协议规定了每一层各自的作用,也就是说每一层应该干什么。当然这只是一种参考模型,实际的网络协议如TCP/IP在设计时思想上基本一致,但是还是存在区别

  • 物理层:负责0,1比特流(0,1序列)与电压的高低,光的闪灭之间的互换
  • 数据链路层:负责物理层面上互连的,节点之间的通信传输。关键设备就是交换机
  • 网络层:解决跨网络的通信问题,主要负责寻址和路由选择。关键设备就是路由器
  • 传输层:保证传输的稳定,可靠和效率等问题
  • 会话层:负责建立和断开通信连接,以及数据的分割等数据传输相关的管理
  • 表示层:主要负责数据格式的转换
  • 应用层:为应用程序提供服务并规定应用程序通信的相关细节

在这里插入图片描述

按照OSI的规定,一次网络通信流程应该是下面这样的

在这里插入图片描述

(2)TCP/IP分层模型

OSI规定的七层模型太过复杂,所以TCP/IP协议将网络分为了下面5层(TCP/IP协议是一组协议的集合的代表,只不过这两个协议太过著名,就以他们的名字命名了)。在TCP/IP协议中,每一层都呼叫它的下一层所提供的网络或者接口完成自己的需求

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
  • 数据链路层:: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
  • 网络层:: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
  • 传输层:: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
  • 应用层:: 负责应用程序间沟通。如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等我们的网络编程主要就是针对应用层

在这里插入图片描述

可以看出:OSI参考模型注重“通信协议必要的功能是什么”,TCP/IP则强调“在计算机上实现协议应该开发哪种程序”。也就是说操作系统承担了网络协议中非常重要的角色

三:OSI参考模型与TCP/IP参考模型比较

(1)相同点

主要有以下几点

  • 二者都采取分层的体系结构,将庞大且复杂的问题划分为若干较容易处理的、范围较小的问题,而且分层的功能也大体相似。
  • 二者都是基于独立的协议栈的概念
  • 二者都可以解决异构网络的互联,实现世界上不同厂家生产的计算机之间的通信

在这里插入图片描述

(2)不同点

①:OSI参考模型的最大贡献就是精确地定义了三个主要概念:服务、协议和接口,这与现代的面向对象程序设计思想非常吻合。而TCP/IP 模型在这三个概念上却没有明确区分,不符合软件工程的思想

②:第二,OSI参考模型产生在协议发明之前,没有偏向于任何特定的协议,通用性良好。但设计者在协议方面没有太多经验,不知道把哪些功能放到哪一层更好;TCP/IP模型正好相反,首先出现的是协议,模型实际上是对已有协议的描述,因此不会出现协议不能匹配模型的情况,但该模型不适合于任何其他非TCP/IP的协议栈

③:TCP/IP模型在设计之初就考虑到了多种异构网的互联问题,并将网际协议 (IP) 作为一个单独的重要层次。OSI参考模型最初只考虑到用一种标准的公用数据网将各种不同的系统互联。OSI参考模型认识到网际协议IP的重要性后,只好在网络层中划分出一个子层来完成类似于TCP/IP模型中的IP的功能

④:重点区别

  • OSI参考模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信
  • TCP/IP模型在网际层仅有一种无连接的通信模式,但传输层支持无连接和面向连接两种模式

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

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

相关文章

前端基础(六)_流程控制语句(if、if-else、if-else嵌套、switch)

流程控制语句主要分为 : 顺序结构:即按顺序执行代码 ;条件选择结构 ( 分支语句 ):包括 if-else 以及 switch;循环结构:包括 for循环,while,do-while,for-in 等;其他语句: break 和continue。 一、流程控制…

Java学习(23)Java一维数组概述

什么是数组 数组是相同类型的数据按顺序组成的一种引用数据类型。 数据类型分为基本数据类型和引用数据类型,引用数据类型分为类、接口、数组。要学习的内容 一维数组的声明、创建、初始化、元素的引用、长度。数组声明 语法格式: 数据类型[] 数组名; 数…

卡尔曼滤波原理公式详细推导过程[包括引出]

卡尔曼滤波在很多项目中都有用到,但是对于原理却很少有详细分析,而只是直接应用,在看完b站up主DR_CAN视频推导后自行推导一遍和查看其他资料后进行总结,将从最初的递归算法,利用数据融合,协方差矩阵&#x…

[vp] 2021 山东省赛 CDGHM

目录前言G. Grade Point Average ( 难度有先后)M. Matrix ProblemH. Adventurers GuildD.Dyson BoxC. Cat Virus前言 打满 2个小时30分钟 基本都在做题 体验非常好 传送门 : https://codeforces.com/gym/103118 G. Grade Point Average ( 难度有先后) 题意 : 让你求sum/ns…

UG/NX二开Siemens官方实例解析 4.4 EX_Curve_ProjCurves(创建投影曲线)

前言 本系列文章主要讲解NXOpen UF API(简称ufun函数)的使用,之前看教学视频大都建议用ufun进行开发,这里西门子官方还专门给了一套系列文章来讲,说明官方也是特别推崇ufun。 本人从事二开也有一段时间了,我…

干货 | 测试人职场晋升“潜规则”:15 年经验资深测试经理的职场忠告

大家好,我是云胖虎,有近 15 年工作经验,在测试专业上擅长的方向是自动化测试,测试工具平台开发和探索测试相关的一些领域,也拿到过项目管理和敏捷教练的认证,目前是在某知名金融银行企业担任技术经理。今天…

dataworks调度问题

文章目录名词解释月调度关于空跑名词解释 业务日期 定时日期 - 1 自定义参数示例: 月调度 调度详情: 重要 使用补数据功能对月调度任务执行补数据操作时,请注意补数据选择的为业务日期 ,业务日期定时调度日期-1。 例如&#xf…

初始C++(一)

文章目录前言cout的用法cin的用法endl的用法一.命名空间1.:: (域作用限定符)2.命名空间定义3.命名空间的使用4.命名空间的一些其它使用5.全局展开6.部分展开二.缺省参数2.1全缺省2.2半缺省前言 既然这篇文章叫初始C,看我文章的应该和我一样,基本是个小白…

React-Router6路由相关二(路由传参、编程式路由导航、路由相关hooks)(八)

系列文章目录 第一章:React基础知识(React基本使用、JSX语法、React模块化与组件化)(一) 第二章:React基础知识(组件实例三大核心属性state、props、refs)(二&#xff0…

ffmpeg vs2017录制vp9格式的桌面视频

ffmpeg本身不支持vp8,vp9;若要支持,则需要自己事先编译好vpx库,然后在ffmpeg中显式支持vpx库。 windows下采用mingw编译器编译vpx;本人采取的是MSYS2,并且本人编译vpx和ffmpeg时,编译的都是静态库&#xf…

【云原生】在Ubuntu18/20上部署Kubernetes/k8s集群详细教程——亲测可用!!网上其他教程均有问题!

在Ubuntu18/20上部署Kubernetes/k8s详细教程一、设置Docker二、安装Kubernetes第 1 步:添加Kubernetes签名密钥第 2 步:添加软件存储库第 3 步:Kubernetes 安装工具三、部署 Kubernetes步骤 1:准备 Kubernetes 部署步骤 2&#xf…

怎么找回笔记本的数据?笔记本数据恢复,6个教程

“我不小心删除了笔记本电脑里面的重要数据,请问被误删的数据还可以恢复吗?如果可以恢复,我应该怎么恢复笔记本里面的数据?” 很多人在使用笔记本电脑的时候,经常误删一些数据,有时是工作文档,…

我是如何将同事的代码改成DDD风格的

DDD是领域驱动设计的简写。前段时间听群友说行业里少有DDD的代码案例,进而对DDD没有一个感性的认识。我想这是行业里普遍存在的现象吧。所以,就有了写此文的想法。文章标题说的是“同事的代码”,其实只是为了让此文更具传播,没别的…

组件的生命周期、vue2中使用axios、插槽

目录 一、组件的生命周期 1、什么是组件的生命周期 2、生命周期函数 3、生命周期的阶段划分 4、钩子函数 5、keep-alive组件 6、生命周期函数: 二、vue2中使用axios 1、axios:是一个基于Promise的网络请求库。既可以在node.js(服务器…

【MySQL】1. 了解数据库以及MySQL安装

了解数据库和SQL什么是数据库为什么使用数据库MySQL下载,安装,配置客户端连接MySQL方法一方法二SQLSQL分类SQL的基本规则命名规则最后大家好, 我是路不停_。 上学期学校学习了MySQL之后,课后也没有做很多总结,加上课时紧凑,后续考试也是考前草草备考了一下. 最近读了本MySQL必知…

C 程序设计教程(03)—— C 语言的数据类型(一):基本数据类型

C 程序设计教程(03)—— C 语言的数据类型(一):基本数据类型 一、数据类型简介 C 语言提供了丰富的数据类型,每一个常量和变量必须属于某一种数据类型。C 语言中的数据类型如下: &#xff08…

基础数学(八)——期末考试复习

文章目录考试要求考试内容简单复习插值拟合和回归数值积分直接法迭代法非线性方程求根微分方程数值解去年考题第一题,插值(12分)第二题,回归和拟合第三题,数值积分第四题,线性方程组求解第五题,…

MGRE实验配置(华为)

华为ENSP的MGRE实验: 建立好拓扑图 之后就是对各个路由器的配置: R2配置: int s3/0/0 link-protocol hdlc 更改接口为hdlc认证 ip address 12.1.1.2 24 int lo0 ip add 2.2.2.2 24 int s3/0/1 [r2-Serial3/0/1]ip address 23.1.1.2 24 [r2-Se…

【ML】 基本概念

ML 基本概念1. different types of functions2. how to find the function - training data3. unseen during training4. Back to ML Framework4.1 Step1: function with unknown4.2 Step2: define loss from training data4.3 step3: optimization4.4 其他4.4.1 Sigmoid → Re…

基础算法(五)——双指针算法

双指针算法 介绍 双指针算法分为两大类: 两个指针指向两个不同序列,用两个指针维护某一种逻辑,例如归并排序 两个指针指向一个序列,即用两个指针维护一段区间,例如快排 核心思想: 若能证明出题目存在…