网络协议,OSI,简单通信,IP和mac地址

news2024/10/5 15:29:26

认识协议

1.讲故事

2004年,小明因为给他爹打电话(座机)费用太贵,所以约定一种信号,响一次是报平安,响两次是要钱,响三次才需要接通。

2.概念

协议:是一种约定,这种约定可以减少通信成本。

3.网络协议解决的问题

A向B发送信息,距离很远,必须要经过设备的中转,才能到达B端电脑。

网络协议就是解决:网络通信中因为距离变远而出现的新问题。

网络分层

1.软件分层

每个层次或模块负责特定的功能,并通过定义良好的接口与其他层次或模块进行交互。

  1. 提高可维护性:通过将系统划分为不同的层次,每个层次只处理特定的任务,使得系统更加易于理解和维护。
  2. 增强可扩展性:当需要添加新功能或修改现有功能时,只需要在相应的层次上进行修改,而无需影响其他层次。
  3. 促进技术独立性和专业分工:不同的层次可以使用不同的技术和框架来实现,使得每个层次的开发和维护可以更加专业和高效。

2.网络分层

好处:层与层之间是松耦合的,可以随时替换和方便维护。

OSI七层模型

TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.

因为有了用户层,用户会自己实现会话层,表示层。而平常也不说物理层,所以最常是四层。

物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆

(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决

定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测

到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太

网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规

划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标

主机.

应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问

协议(Telnet)等. 我们的网络编程主要就是针对应用层.

3.网络 vs OS

因为TCP 和 IP 是OS内部实现的,网络也属于操作系统源代码的一部分。

所以只要遵守TCP IP协议,不同的OS系统都能够通信。

而双方想看到相同的数据类型,所以就得在网络传输上约定好,所以协议就是struct结构体。

局域网通信

1.局域网单通信

每个网络有自己的Mac地址,在局域网中所有人都能收到消息,但根据要送达的地址发现自己不同,就丢弃了数据。

MAC地址是物理网卡硬件地址,在出厂时就会设定,不能修改,它的大小是6字节,一台计算机可以绑定多个网卡,进而可以拥有多个MAC地址。

2.数据碰撞

因为C一直给局域网发数据,和我A发的数据就会进行碰撞,此时都要停下来。

所以:局域网本质是个临界资源,只不过是在事后(发信息后拦截)处理的。

碰撞检测:比如令牌环网就是持有令牌才能够上网。

如何黑掉一个局域网? 只需要给它一直发送垃圾数据进行碰撞,就可以使得另一主机无法上网。

自己电脑的Mac地址:Xshell下 ifconfig命令可以看到 ether: xxxx

3.以太网

以太:物理上没有的介质,但网络上可以有的数据传输的介质。

每向下发一层,就多一层协议报头,而每一层新加的报头是协议报头,上面所有层的报头+数据 变为有效载荷。

理解:“报头” = 协议报文 + 有效载荷,报文在不同层有不同的名字。

应用层 —— request / response 传输层 —— 数据段 网络层 —— 数据报 链路层 —— 数据帧

而到另一台主机上,就要自底向上进行解包和分用

1.解包 : 将报头和有效载荷进行分离

2.分用 : 将自己的有效载荷交付给上一层的协议。

4.跨网络文件传输

看图:主机A 要发送数据到 主机 B,但是两个主机不在一个网络中,而中间的路由器,又同时存在于两个网络,那就可以让A把数据发给路由器了。那问题是发给路由器后,还怎么把数据传给主机 B呢?

上图:两套地址 : 源头 和 目的地(IP地址) 上一站 和 下一站(MAC地址)。

主机A 到 路由器 :

先自顶向下进行封装,通过以太网通信到路由器(因为MAC地址只在同一局域网中有效,所以访问不到B的,只能访问到路由器的MAC地址),传输到路由器的底层,还是得自底向上进行解包和分用,到达路由器(只剩IP地址,和有效载荷)。

路由器 到 主机 B:

还是得自顶向下做封装,MAC地址的dest变为MACB,通过令牌环网通信到主机B底层,再解包和分用直至最上层拿到”你好“。

看图:在IP层网上,两个主机对应的协议没有差别(我发的就是你收的),而底层一个是以太网的报头,一个是令牌环网的报头,但在IP层就已经是一个东西了。(一切皆IP)

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

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

相关文章

如何实现电脑监视员工的电脑屏幕?六个方法偷偷分享给你

实现电脑监视员工的电脑屏幕,通常需要借助专业的监控软件或系统,这些工具旨在帮助企业管理者监督员工的工作状态,确保工作效率,同时保护公司资产和数据安全。以下是几种常见的实现方式。 1. 使用专业的远程监控软件 安企神软件&a…

kaggle竞赛实战10——特征优化

特征优化思路: 在完成常规流程后,如果不知道怎么办,可以针对文本or时间序列特征进行进一步处理 首先,我们注意到,每一笔信用卡的交易记录都有交易时间,而对于时间字段和文本字段,普通的批量创…

解决用Three.js实现嘴型和语音同步时只能播放部分部位的问题 Three.js同时渲染播放多个组件变形动画的方法

前言 参考这篇文章ThreeJSChatGPT 实现前端3D数字人AI互动,前面搭后端、训练模型组内小伙伴都没有什么问题,到前端的时候,脸部就出问题了。看我是怎么解决的。 好文章啊,可惜百度前几个都找不到,o(╥﹏╥)o 问题情况 …

【C++】环境搭建及基本工作流程

C 当你需要写性能良好的代码时,C仍是不二选择 如果你想访问硬件、如果你想对硬件进行控制,C仍是首选。 所有的游戏引擎都是用C编写的,因为C可以直接控制硬件。 原理: C代码-->编译器编译comple-->目标平台的机器码-->放…

[算法刷题—二分法]寻找插入位置

题目展示: 本道题本身并不是很难,主要是学习和分析二分查找插入位置的方法。 首先大体上分为两种情况: 一.target在待查找的数组之中,返回对应值的下标索引。 二.target不在待查找的数组之中,需要返回target插入位置的索引(原数组有序) 第一种情况不难&#xff…

视图-什么是(VIEW)?怎么创建(CREATE VIEW)?怎么删除(DROP)?怎么用(SELECT/INSERT/UPDATE/DELETE)?

一、引言 之前对数据库的操作都是针对基本关系表,操作都是在数据库的全局逻辑模式上进行的,而在实际的数据库系统中,可能用户只关心或只被允许使用数据库中的某些基本关系表或基本关系表中的某些属性列,这些数据构成了数据库的外…

基于SVD的点云配准(下)

点云配准及特征提取详细解读 本篇博客将介绍一个用于点云配准的 C++ 代码示例,该示例使用 PCL(Point Cloud Library)库来处理和配准两个点云数据集。我们将逐步解析代码的关键部分,并解释每个步骤的作用。 代码说明 代码的整体结构及其主要功能: int main(int argc, ch…

Vue 状态管理:从Vuex到Pinia,Vue 3官方推荐的状态管理库深度解析

大家好,我是前端宝哥。 在编程界有句老话:“命名和缓存失效是世上两大难题。” 我得说,在现代Web应用的状态管理上,这难题得排第三! 今天,咱们来深挖一下Vue的状态管理之道,并介绍一个超直观的解…

汽车IVI中控开发入门及进阶(二十八):视频SERDES芯片

前言: SerDes不是很常见,SerDes是将Ser和Des两种产品组合在一起的名称。Ser是Serializer或“并串转换器”的缩写,Des是Deserializer或“串并转换器”的简写。 Serdes是不是必须的?上一节介绍了camera,上上节也研究了video decoder,那么带摄像头的应用应该具体选哪个方案…

从踢足球到数字孪生

前言 贵州“村超”的火热现象是一个多方面因素共同作用的结果,它不仅是一场体育赛事,更是一个文化现象,反映了时代的精神和人民的情感诉求,同时也推动了乡村振兴和地区发展。足球的魅力是多方面的,它不仅仅是一项运动,更是一种全球性的文化现象。 简单规则下的无限变化:…

MySQL数据操作与查询- select 数据查询

一、select 选择列表 1、select基本结构 select 字段列表 from 表名 where 条件表达式 说明: (1) 必须的子句只有 select 子句和 from 子句。 (2)where 子句用于对查询结果进行过滤。 2、选择(查询&am…

【会议征稿,IEEE出版】第六届物联网、自动化和人工智能国际学术会议(IoTAAI 2024,7月26-28)

第六届物联网、自动化和人工智能国际会议(IoTAAI 2024)将于2024年07月26-28日在中国广州召开。 会议旨在拓展国际科技学术交流渠道,搭建学术资源共享平台,促进全球范围内的科技创新,提升中外学术合作。会议还鼓励不同领…

再谈软件设计中的抽象思维(下),从FizzBuzz到规则引擎

作为《程序员的底层思维》出版两年之后的再回顾,在上一篇《再谈软件设计中的抽象思维(上),从封装变化开始》中,我介绍了抽象设计的本质是发现变化点,结合问题域,提炼共性,沉淀领域知…

Golang | Leetcode Golang题解之第151题反转字符串中的单词

题目&#xff1a; 题解&#xff1a; import ("fmt" )func reverseWords(s string) string {//1.使用双指针删除冗余的空格slowIndex, fastIndex : 0, 0b : []byte(s)//删除头部冗余空格for len(b) > 0 && fastIndex < len(b) && b[fastIndex]…

建造者模式(大话设计模式)C/C++版本

建造者模式 C 参考&#xff1a;https://www.cnblogs.com/Galesaur-wcy/p/15907863.html #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std;// Product Class&#xff0c;产品类&#xff0c;由多个…

【Java】Object类中的toString、equals方法

Object类 所有类都直接或间接的继承自Object类&#xff0c;Object类是所有Java类的根基类。 也就意味着所有的Java对象都拥有Object类的属性和方法。 如果在类的声明中未使用extends关键字指明其父类&#xff0c;则默认继承Object类。 toString()方法 【1】Object类的toStr…

植物大战僵尸杂交版 v2.0.88 mac版 Plants vs. Zombies 杂交版下载

特别注意&#xff1a;该游戏最低系统要求为macOS Sonoma 14.X&#xff0c;低于此系统版本的请勿下载&#xff01; 游戏介绍 植物大战僵尸杂交版是由B站UP主“潜艇伟伟迷”制作的一款结合了《植物大战僵尸》原有元素与创新玩法的游戏。这款游戏以其独特的“杂交”植物概念在B站…

【TypeScript】泛型工具

跟着 小满zs 学 ts&#xff1a;学习TypeScript24&#xff08;TS进阶用法-泛型工具&#xff09;_ts泛型工具-CSDN博客 Partial 所有属性可选的意思Required 所有属性必选的意思Pick 提取部分属性Exclude 排除部分属性emit 排除部分属性并且返回新的类型 Partial 属性变为可选。…

Python基础教程(二十):SMTP发送邮件

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

Python 小市值股票模型代码及回测分析

目录 一、模型介绍 二、代码详解 2.1 初始化函数 2.2 股票筛选过滤函数 2.3 止损函数 2.4 开盘时运行函数 2.5 调仓函数 三、回测结果分析 3.1 收益净值图与概述 3.2 模型收益概览 3.3 年度收益图 3.4 月度收益的时间序列 3.5 月度收益热力图 3.6 月度收益频次分…