计算机网络 --- 初识协议

序言

 上一篇文章中 (👉点击查看),我们简单的了解了怎么寻找目标计算机,需要通过交换机,路由器等设备跨越多个网络来不断的转发我们需要传输的数据,直至到达目标计算机。
 那我们设备之间数据是如何传输的呢?让我们一起来了解一下吧。


1. 初识协议

1.1 协议的意义

 在我们的生活中,我们两个人达成了一个协议,换句话说也就是我们两个人制定了一个相应的约定,并且我们两个人都必须要遵守。
 计算机生产厂商是很多的,假如 A 厂制定我们在通信时的 0 代表低电平,1 代表高电平,而 B 厂制定 1 代表低电平,0 代表高电平。这就会造成不是一个厂生产的计算机不能正常通信地情况!这显然不是我们所需要达到的效果,我们想要的是不同型号的计算机之间,甚至于不同的操作系统之间的计算机都能够进行通信!
 为了达成这一目的,所以大家就要 约定一个共同的标准, 大家都来遵守, 这就是网络协议。

1.2 协议分层

 想要进行网络通信是一件非常复杂庞大的事情,需要软硬件的紧密结合。对于一个复杂庞大的任务我们常用的方式就是将该任务进行分解和模块化。
 这么说大家可能没有立刻理解到,但是想想我们初学 C语言 的时候,不管是什么我们都是一股脑地塞到 main 函数 里,这样写出来的代码很挫,也不好维护(很多时候都是牵一发而动全身😭)。但是随着我们学习的深入,我们懂得了将一个任务分成多个模块,实现多个函数,然后在我们的 main 函数 去调用该函数。当我们需要修改时只需要修改特定的部分接口不变,这样我们就实现了很好的 模块化,解耦合

1.3 七层网络模型

OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放
式系统互联参考模型:
在这里插入图片描述在这里插入图片描述

OSI七层模型 为网络通信提供了一个清晰、分层的结构框架,每一层都承担不同的功能和任务。这种分层结构使得网络通信变得更加有序和高效,同时也方便了网络设备的开发和维护。
 他考虑了太全面了,全面得无法落地。肯定有人会想,计划细致不是一件好事吗?怎么不执行呢。就像你制定了一个明天的计划,细致到了每一分钟都要干什么,你觉得严格执行简单吗?肯定是不简单的,所以我们一般使用更加实用的 五层模型

1.4 五层模型

 我们看看两者的区别:
在这里插入图片描述
将复杂的 应用层,表示层,会话层 统一交给 应用层 进行管理。各个层次的功能如下:

  • 物理层: 负责光/电信号的传递方式。(这个我们不关心,我们主要关心软件层面上的内容)
  • 数据链路层: 负责设备之间的 数据帧的传送和识别. 例如网卡设备的驱动、帧同
    步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线 LAN 等标准. 交换机工作在数据链路层.
  • 网络层: 负责 地址管理和路由选择. 例如在 IP 协议中, 通过 IP 地址来标识一台
    主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器
    工作在网路层.
  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据
    可靠的从源主机发送到目标主机.
  • 应用层: 负责应用程序间沟通,如简单电子邮件传输)、文件传输协议、网络远程访问协议等. 我们的网络编程主要就是针对应用层.

我们将在实际传输例子上介绍是如何使用协议的。


2. 数据包封装和分用

 大家都寄过快递吗?寄快递时,首先我们需要填写相应的表格寄快递的地址,联系人,联系电话等等信息。快递站将你的快递寄出,也不是直接让快递小哥将快递直线送到目的地址,也需要经过一个或多个快递中转站才能到达目的地。经过了如此多的转发,能保证快递顺利寄到的关键就是快递单!
 当我们需要网络通信时也是如此,我们的数据 每经过一个协议就会封包一次,封装的信息称为 报头:
在这里插入图片描述
每一层封包都有自己的目的:

  • 应用层封包的主要目的是确保数据能够按照应用层协议的规定进行 正确的解析和处理
  • 传输层封包的主要目的是在源主机和目的主机之间提供 端到端的数据传输服务,确保数据能够可靠、有序地到达接收方。
  • 网络层封包的主要目的是在多个网络之间传输数据,确保数据包能够 按照正确的路径从源主机到达目的主机
  • 数据链路层封包的主要目的是在相邻的网络节点之间提供可靠的数据传输服务,确保帧能够准确无误地到达下一个节点

封包理解了分用就更简单了。每一个网络层都有一个或多个协议,比如在传输层就包含 TCP, UDP等协议,可以取决于使用场景。所以,我们可以根据报头中的信息来判断上一层使用的是什么协议,交给正确的协议进行处理:
在这里插入图片描述


3. 局域网传输

 在上一篇文章中我们得知,在同一个局域网下传输数据只需要经过交换机即可. 现在有了协议和数据包的概念我们再来理解一下过程:
在这里插入图片描述
假设现在已经知道了需要发送对象的 MAC 地址。

  1. 将进行封装后的数据包通过物理层发送到交换机上
  2. 交换机接收到数据包后,拆包查看发送的目的 MAC地址
  3. 交换机锁定和 MAC地址 绑定的端口,并将数据重新封包
  4. 数据顺利转发到目的主机上,目的主机通过分用获取数据

我们的网络协议还有一个名称是 网络协议栈,现在大家知道为什么叫做 了吧 — 封装数据包的过程就是压栈,获取数据的过程就是出栈。


4. 跨网络传输

 跨网络传输就需要路由器了,并且交换机只是工作于数据链路层,而路由器工作于网络层:
在这里为了简便,省去了交换机,并且只知道目的地址的 IP 地址,不知道 MAC 地址
在这里插入图片描述

  1. 现在使用 ARP协议 没有查询到目的主机的 MAC地址
  2. 于是将自己的数据包通过交换机转发到网关处(路由器)
  3. 路由器通过数据包进行解析后获取了目的主机的 IP地址,通过使用 ARP协议 成功获取目的主机的 MAC地址
  4. 通过对数据包进行封包后发送,成功转发到目的主机上
  5. 目的主机通过分用获取数据

跨网络传输也是不断拆包,封包,发送的过程:
在这里插入图片描述

并且大家想一下,不同的局域网有可能使用的网络协议也是不一样的,但是通过拆包(去除原来网络协议的封装层),封包(基于现在的网络协议封包)的过程,是不是也是达到了 入乡随俗 的效果呀!


5. 总结

 在这一篇文章中我们认识了协议,并且再次学习了数据在局域网下或者是跨局域网下的传播,希望大家有所收获!

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

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

相关文章

JMeter 中使用 Gson 操作请求中的Boby参数

背景 使用org.json.JSONObject 转换,与原Body参数顺序发生变化,原因:JSONObject内部是用Hashmap来存储的,本质上是一个无序的键值对集合,不应依赖字段的添加顺序。 为解决org.json.JSONObject 输出顺序问题&#xff…

鸿蒙读书笔记2:《鸿蒙操作系统设计原理与架构》

2. OS基础平台部件化 (1)内核层 内核层包括内核部件和HDF驱动框架部件。当前已提供LiteOS-M、 LiteOS-A、Linux和UniProton这4种内核部件,未来还可增加更多类 型的内核部件。LiteOS、Linux内核部件可以按需部署在不同设备之 上,内…

echarts X轴文本太长 formatter自定义文本的显示方式

如果ECharts中X轴的文本太长,可以通过设置axisLabel的rotate属性来旋转标签,或者使用formatter函数来自定义文本的显示方式。另外,可以开启axisLabel的interval属性来控制显示的标签的间隔。 option {tooltip: {},xAxis: {type: category,d…

p14 使用阿里云服务器的docker部署NGINX

拉取NGINX的镜像 这里因为之前已经配置过从阿里云的镜像仓库里面拿镜像所以这里直接就执行docker pull nginx拉取NGINX镜像就OK了 运行NGINX镜像 这里执行docker run -d --name nginx01 -p 3344:80 nginx这里3344是服务器访问的端口80是容器内部的端口,可以看到…

【C++ Primer Plus习题】16.5

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <list> using namespace…

硬件工程师笔试面试——集成电路

目录 17、集成电路 17.1 基础 集成电路实物图 17.1.1 概念 17.1.2 集成电路的发展历程 17.1.3 集成电路的分类 17.1.4 集成电路的制造工艺 17.1.5 集成电路的应用 17.2 相关问题 17.2.1 集成电路的制造工艺中,光刻技术是如何实现的? 17.2.2 在集成电路设计中,如何…

微信电脑版聊天图片DAT格式文件转为普通JPG图片

1-7 本文章主要教你如何恢复微信聊天中的聊天图片&#xff0c;主要应用场景是&#xff0c;当你的微信被封号了&#xff0c;或者无法登录了&#xff0c;会导致微信聊天中的聊天图片没办法再打开&#xff0c;如果是重要的图片&#xff0c;那就有损失了&#xff0c;所以有了本文的…

【无人机设计与控制】四旋翼无人机轨迹跟踪及避障Matlab代码

摘要 本文主要研究了四旋翼无人机在复杂环境中的轨迹跟踪与避障控制策略。通过Matlab/Simulink对四旋翼无人机进行了建模与仿真。系统集成了避障算法&#xff0c;使得无人机在执行任务时能够有效避开障碍物&#xff0c;保证飞行的安全性与稳定性。 理论 无人机飞行控制通常涉…

leetcode-枚举算法

1.两数之和 题目一&#xff1a;两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素…

Java项目实战II基于Spring Boot的宠物商城网站设计与实现

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网…

6--SpringBootWeb案例(详解)

目录 环境搭建 部门管理 查询部门 接口文档 代码 删除部门 接口文档 代码 新增部门 接口文档 代码 已有前端&#xff0c;根据接口文档完成后端功能的开发 成品如下&#xff1a; 环境搭建 1. 准备数据库表 (dept 、 emp) -- 部门管理 create table dept( id int un…

快速入门Vue

Vue是什么 Vue.js&#xff08;通常简称为Vue&#xff09;是一个开源的JavaScript框架&#xff0c;用于构建用户界面和单页应用程序&#xff08;SPA&#xff09;。它由尤雨溪&#xff08;Evan You&#xff09;在2014年开发并发布。Vue的核心库只关注视图层&#xff0c;易于上手…

python实现多个pdf文件合并

打印发票时&#xff0c;需要将pdf合并成一个&#xff0c;单页两张打印。网上一些pdf合并逐渐收费&#xff0c;这玩意儿都能收费&#xff1f;自己写一个脚本使用。 实现代码&#xff1a; 输入pdf文件夹路径data_dir&#xff0c;统计目录下的“合并后的PDF”文件夹下&#xff0c;…

从边缘设备到云端平台,合宙DTURTU打造无缝物联网解决方案

如今&#xff0c;物联网&#xff08;IoT&#xff09;技术飞速发展&#xff0c;万物互联的时代已然到来&#xff0c;那么&#xff0c;高效、稳定地连接边缘设备与云端平台&#xff0c;实现数据的实时采集、传输与处理&#xff0c;就成为了推动物联网应用落地的关键。 DTU&#…

# wps必须要登录激活才能使用吗?

WPS 必须登录激活才能使用吗&#xff1f; 如下图&#xff0c;当我们使用WPS时&#xff0c;不登录会显示工具栏灰色不可用状态。 答&#xff1a;WPS 不一定要登录激活才能使用。 一、免费使用的情况 1、基础功能 在不登录的情况下&#xff0c;用户可以使用 WPS 的一些基础功…

【delphi】正则判断windows完整合法文件名,包括路径

在 Delphi 中&#xff0c;可以使用正则表达式来检查 Windows 文件名称或路径是否合法。合法的文件名和路径要求符合以下几点&#xff1a; 禁止的字符&#xff1a;文件名和路径不能包含以下字符&#xff1a;<, >, :, ", /, \, |, ?, *。文件名不能以空格或点结束。…

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 垃圾收集器

文章目录 垃圾回收机制Stop-the-World垃圾收集器垃圾收集器分类Serial 收集器Serial Old 收集器ParNew 收集器Parallel Scavenge 收集器Parallel Old 收集器CMS 收集器CMS 收集器缺点 G1 收集器G1 收集器特点G1 收集器的分代理念G1 收集器运作过程 垃圾回收机制 垃圾回收&…

【架构设计】多级缓存:应用案例与问题解决策略

【架构设计】多级缓存&#xff1a;应用案例与问题解决策略 多级缓存系统的工作原理及其在提升应用性能方面的关键作用。通过对比本地缓存与分布式缓存的特点 | 原创作者/编辑&#xff1a;凯哥Java | 分类&#xff1a;架构设计系列教程 多级缓存…

无人机助力智慧农田除草新模式,基于YOLOv10全系列【n/s/m/b/l/x】参数模型开发构建无人机航拍场景下的农田杂草检测识别系统

科技发展到今天&#xff0c;无人机喷洒药物已经不是一件新鲜事情了&#xff0c;在很多高危的工作领域中&#xff0c;比如高空电力设备除冰&#xff0c;电力设备部件传送更换等等&#xff0c;无人机都可以扮演非常出色的作用&#xff0c;前面回到老家一段时间&#xff0c;最近正…