网络之再谈体系结构

大家都知道的是网络的体系结构,现代软件常用的体系结构无非是TCP/IP协议栈,OSI因为实现复杂并且效率没有TCP/IP协议栈好,所以不用OSI,但是,最近在复习网络知识的时候,发现了一些奇怪的地方,那就是OSI与TCP/IP协议栈的运输层以及ARP协议,有些争执。先看看两个体系的结构吧!如下:

不知道有没有人注意过,那就是在OSI与TCP/IP协议栈中,他们的区别有一个是OSI的传输层是面向接连的,没有无连接,但是TCP/IP协议栈的传输层是面向连接加无连接的,不知道大家注意到这一点没有。刚开始学习网络的时候,可能也没有往深处想,那天复习的时候,突然看见,就有点疑惑了。一直在想为什么呢?

刚开始我想到的是难道OSI没有UDP协议吗?错,后来才发现我错的离谱,因为没有想到一点,那就是他们建立模型的时候,是不同的,OSI是现有划分完层,再根据每层划分的功能,把协议分进去,而TCP/IP是先有了协议,根据协议划分的层,这使我顿时拨云见日。他们的先后顺序不同,且TCP/IP网络层中支持的是IP协议,而OSI网络层支持所有的网络协议。

其次,再看看下面的图:

看看其中网络层的ARP协议,有些朋友看到这里应该是疑惑了,不对,ARP不是是数据链路层的协议吗?怎么上网络层了,其实我刚开始注意的时候也很疑惑,这是为什么呢?后来查看了很多的资料,看了TCP/IP图解,各有各的说法,且都是对的。有人说他应该在网络层,应为他是服务于网络层的,这怎么说呢?其实是也很好理解,因为网络体系中,每一层几乎都是透明的,就是你传下来或者传上去的报文中,数据部分对于我这一层来说是不知道是什么,所以我根本就不知道你的内容,我只把自己这一层的功能做好就行了(这里忽略NAT与NAPT),所以很多人感觉既然他要知道IP地址,那么他如果是属于数据链路层的话,那么就不可能拿到IP地址,所以属于网络层。但是很多又说他是链路层的协议,所以这就产生了争议,但是其实都是对的,因为其实他是属于网络层之下,数据链路层之上的一个协议,从我们所学的五层模型来说的话,自下往上,我个人认为是它属于2.5层的协议,但是如果硬要说的话我会把它归纳到数据链路层。

其实原因是我自己认为的,不知道对不对,若是有大佬知道希望说一下。很简单,最直接的一个列子就是NAT技术,他是工作在网络层的,但是如果这样的话,他结合NAPT技术转换的时候,把我们的上层也就是传输层的端口号给改了,这说明什么,这说明下层我是知道你上一层的内容的(这里只是特殊处理,所以使得下层知道了上层的内容),如若不然,他是改不了我们传输层的端口号的,如若不用这用这个技术,那么好,你怎么用公网的资源,怎么访问公网服务器?公网服务器怎么给你所在的局域网返回请求呢?所以,个人认为这里的ARP协议与这里有点像,如果我有了网络中的唯一标识主机的地址,但是,跨网怎么办?跨越不同局域网需要路由器中路由算法,但是我怎么到路由器上,肯定是需要再局域网内传输的啊,那怎么到路由器上,这就需要mac地址了,所以此时就需要arp上场了,那么arp是属于数据链路层的,如果这样的话,他怎么知道这个IP地址呢?我个人认为它这里肯定是做了类似于NAT技术的那种处理,获取了上一层数据的报文内容。所以画图的时候我们都是这样画(五层模型):

这个是个人理解,若是有大佬知道,希望可以说一下。

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

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

相关文章

C/C++连接MySQL

本章Gitee仓库地址:mysql连接基本操作 文章目录 1. mysql connect库2. mysql相关接口2.1 mysql_init()2.2 mysql_real_connect()2.3 mysql_query()2.4 mysql_store_result()2.41 mysql_num_rows2.42 mysql_num_fields2.43 mysql_fetch_row2.44 mysql_fetch_fields 2…

中国上市企业行业异质性数据分析

数据简介:企业行业异质性数据是指不同行业的企业在运营、管理、财务等方面的差异性数据。这些数据可以反映不同行业企业的特点、优势和劣势,以及行业间的异质性对企业经营和投资的影响。通过对企业行业异质性数据的分析,投资者可以更好地了解…

STM32系列-STM32介绍

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” STM32介绍 STM32介绍 ST:指的是意法半导体 M:指定微处理器 32:表示计算机处理器位数 ARM分成三个系列: Cortex-A&#xff1…

Python读取Excel表格文件并绘制多列数据的曲线图

本文介绍基于Python语言,读取Excel表格数据,并基于给定的行数范围内的指定列数据,绘制多条曲线图,并动态调整图片长度的方法。 首先,我们来明确一下本文的需求。现有一个.csv格式的Excel表格文件,其第一列为…

爬山算法详解

爬山算法详解 背景 爬山算法(Hill Climbing Algorithm)是一种基于启发式搜索的优化算法,用于在搜索空间中寻找局部最优解。该算法的基本思想是从一个初始解出发,通过不断移动到邻域内更优的解来寻找最优解,直至无法找…

Flutter 中的 Flow 小部件:全面指南

Flutter 中的 Flow 小部件:全面指南 Flutter 的 Flow 是一个功能强大的布局小部件,它允许开发者在父组件的任意位置放置子组件。Flow 可以通过使用 FlowDelegate 完全自定义子组件的布局,这为创建复杂的自定义布局提供了极大的灵活性。本文将…

Sqoop的安装与测试

这里写目录标题 什么是Sqoop?Sqoop的安装与配置安装测试 什么是Sqoop? Sqoop就是hadoop和mysql的一个中间介质 , 作用就是可以将hadoop中的数据传到mysql中 , 或将mysql中的数据导入到hadoop中 Sqoop的安装与配置 安装 详细代码 //解压安装 [roothadoop soft]# tar -zxv…

【如何在Qt C++中使用SSL和TLS加密传输数据?】

在Qt C++中使用SSL和TLS加密传输数据,一般步骤如下: 准备工作: 确保您的Qt项目已经链接了网络模块(QT += network)和SSL模块(QT += ssl)。 步骤: 创建QNetworkRequest对象:使用QNetworkRequest对象指定要访问的URL。 创建QNetworkAccessManager对象:使用QNetworkA…

【漏洞复现】用友NC registerServlet JNDI 远程代码执行漏洞(XVE-2024-10248)

0x01 产品简介 用友NC是 用友软件股份有限公司开发的一套企业级管理软件系统。它是一个基于互联网的多层应用系统,旨在为中大型企业提供全面、集成的管理解决方案。是一种商业级的企业资源规划云平台,为企业提供全面的管理解决方案,包括财务…

深度学习中的梯度消失和梯度爆炸问题

在深度学习领域,随着模型层数的增加,我们常常会遇到两个棘手的问题:梯度消失(Vanishing Gradients)和梯度爆炸(Exploding Gradients)。这两个问题严重影响了深度神经网络的训练效率和性能。本文…

SwiftUI中EnvironmentObject的使用(多界面共享数据)

SwiftUI的EnvironmentObject是一个强大的工具,它允许你在多个视图之间共享数据(使用一个可观察对象)。当你有一个复杂的视图层次结构,并且需要在没有直接连接的视图之间共享相同的可观察对象时,它特别有用。 我们之前传递数据主要是通过init…

Nginx R31 doc-16-logging 配置日志

前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

SOLIDWORKS正版一年多少钱 2024版报价

SOLIDWORKS软件作为一款优秀的三维设计工具,以其强大的功能和优质的设计工具,为设计师们提供了前所未有的便利。SOLIDWORKS三维设计软件是一款多科学集成软件,它在产品开发和制造方面发挥着重要作用。 作为整个SOLIDWORKS产品开发解决方案套件…

SQL使用函数给多个分表添加同一字段

数据库中分表时,往往需要向多个分表中添加同一个字段,可以定义一个函数,每次调用这个函数向多个份表中添加同意字段。 1、创建函数示例: 在PostgreSQL中创建一个简单的函数 以下是一个在PostgreSQL中创建函数的简单示例&#x…

kotlin基础之高阶函数

Kotlin中的高阶函数、内联函数以及noinline和crossinline关键字是函数式编程中的重要概念。下面我将逐一解释这些概念的定义、实现原理、使用场景以及noinline和crossinline关键字的具体用法。 高阶函数 定义:高阶函数是接受一个或多个函数作为参数,或…

android上用QT实现绘制曲线及双指放大缩小

Android上用QT绘制曲线有多个绘图库可用,比如QCustomPlot,Qwt,Qchart,但经过博主测试在Android上并不是每种库都能满足要求,本文会进行三者对比,并给出一个android上可以实现双指滑动和放大缩小的具体解决方案及代码示例。 一.三种QT绘图库介绍 1.QCustomPlot在windows系统…

如何修改 Kafka 消息保留时长:经验总结

如何修改 Kafka 消息保留时长:经验总结 引言 Apache Kafka 是一种高性能的分布式消息系统,用于处理实时数据流。在实际使用中,我们可能需要根据业务需求调整 Kafka 消息的保留时长。本文将介绍如何修改 Kafka 消息保留时长,并分…

SEO之核心关键词(二)

初创企业或者需要建站的朋友看以下两篇文章,谢谢支持: 我给不会敲代码又想搭建网站的人建议新手上云 (接上一篇。。。。) 4、查询搜索次数 经过自己及朋友、同事的头脑风暴和检查竞争对手网站之后,再到Google 关键词…

用天工AI写文章,节约了8个人的成本

关注卢松松,会经常给你分享一些我的经验和观点。 当下AI工具最大的问题是什么? 是写的文章没有灵魂、没有感情、像机器人! 生成的文章官话连篇,人们一眼就看出是AI写的,这种文章怎么能给客户交差呢?自己这关都过不去,是吧? …

快乐数-力扣

使用一个set来存储遇到的每个数,如果遇到的数在set中,那么说明这个数不是快乐数,否则一直循环下去,直到n 1结束循环,表示这个数是个快乐数。 需要注意的是,给定一个数 n, 怎样对这个数 n 进行每一位求和。…