第零章 HCIA复习

news2024/11/15 22:44:49

目录

HCIA复习

一、OSI七层模型

二、TCP/UDP协议

传输层协议

TCP/IP协议簇

封装/解封装

模型区别

协议号和类型字段

类型字段

协议号

UDP协议头部:

TCP协议头部:

IP报文参数:

三、DHCP协议

定义

PC端初次获取IP地址

交换机转发原理

四、ARP协议

定义

作用

工作流程

正向ARP

免费ARP

流程:


HCIA复习

数据转换 --- 目标:抽象语言 --- 二进制 --- 电信号

应用程序 --- 接收参数和指令 --- 编码:接收传递给计算机指令参数最终转换为二进制

二进制 --- 电信号

处理电信号

一、OSI七层模型

对于整个互联网而言制定了统一的标准 —— OSI/RM参考模型。

核心:分层

OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),由下向上依次是1~7层。

应用层 --- 提供人机交互窗口

表示层 --- 编码 --- 转换数据为二进制 --- 编码格式的统一

  • 加密解密,压缩解压缩,编码转码等

会话层 --- 建立维护和端口一次PC到服务器之间的逻辑通道(会话)

传输层 --- 实现端到端的传输 --- 应用到应用之间的传输

  • 端口号:SPORT(源端口) DPORT(目标端口),由16位二进制构成

  • 范围:0-65535,实际使用的端口号为 1-65535

  • 知名(著名)端口号:1-1023

网络层 --- 利用IP地址进行逻辑寻址

  • SIP(源IP地址):1.静态配置 2.DHCP(动态主机配置协议)

  • DIP(目标IP地址):1.直接知道 2.DNS域名解析 3.通过广播获取

数据链路层 --- 二进制 --- 电信号 --- 控制物理层

  • 以太网环境下独有地址 --- MAC地址

物理层 --- 传递和处理电信号

二、TCP/UDP协议

传输层协议

  • TCP(传输控制协议,协议号6)

  • UDP(用户数据报文协议,协议号17)

TCP/IP协议簇

封装/解封装

  • 封装

    1. 应用层:产生原始数据,称为数据报文

    2. 传输层:写入封装源端口和目标端口的报头,利用端口号完成端到端的传输,否则无法传输数据包。产生的数据称之为数据段

    3. 网络层:写入源IP和目标IP的报头以便于数据通讯。产生的数据称之为数据包

    4. 数据链路层:写入源MAC和目标MAC,才能到达局域网/路由器。产生的数据称之为数据帧

    5. 物理层:传过来的数据变为数据信号,称为比特流

整个过程的行为就称作封装,从 应用层-->数据链路层 对数据不断包装。

  • 解封装

    将收到的电流信号转换为二进制并向上转发,链路层根据得到的目标MAC地址来判断,如果是则向上转发并进行拆包,不是则丢弃;网络层则同理根据目标IP进行判断;传输层再看目标端口同理进行;最终应用层得到原始数据

整个过程就称作解封装,即还原为原始状态/数据的过程。

模型区别

分别是 标准模型对等模型

OSI参考模型 只能支持 顺序封装

TCP/IP模型 支持 跨层封装

跨3/4层 封装ARP STP 跨4层:ICMP OSPF(协议号89)

PS:

  1. 应用层也需要封装,根据不同需求使用不同的协议,如http;而物理层不需要封装,因为数据已经变成电流信号。

  2. 如何判断一个协议是否在应用层:根据封装位置,若封装端口号则判断是。

  3. 大多数协议都是层层封装,个别如ARP协议的封装位置是从应用层-->数据链路层,这称为跨层封装

协议号和类型字段
类型字段

属于数据链路层的参数

典型的2层/数据链路层协议(以太网协议

协议号

属于网络层的参数,用于标注上层协议,区分不同层次的协议。典型的有TCP和UDP协议;TCP协议号为6,UDP协议号为17,根据协议号来判断用哪种来解析。

UDP协议头部:

协议号:8

TCP协议头部:

协议号:6

IP报文参数:

三、DHCP协议

定义

DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,是一个应用在局域网中的网络协议,它使用UDP协议工作,是一种典型的C/S架构

传输协议:UDP 端口号:67/68(S/C) Server/Client(服务端/客户端)

服务器负责下发地址,客户端负责获取地址

PC端初次获取IP地址

  1. DHCP --- Discover包 --- 广播发送

    客户端 向 DHCP 服务端 去要地址 --- 广播

    SPORT:68 DPORT:67

    SIP:0.0.0.0(没有地址但需要地址代表自己) DIP:255.255.255.255(受限广播地址)

    SMAC:自身的MAC地址 DMAC:(全F) ff...ff

  2. DHCP --- Offer包 --- 携带一个可用IP(单播华为/广播思科)

    DHCP 服务端收到后,向 DHCP 客户端进行回复

    Offer数据包中会携带一个临时有效的IP地址,并且暂时作为DHCP客户端使用

    SPORT:67 DPORT:68

    SIP:服务端IP地址 DIP:华为:预下发的地址/思科:255.255.255.255

    SMAC:服务端自身的MAC地址 DMAC:终端的MAC地址/全F

  3. DHCP --- Request请求包 --- 广播发送

    DHCP客户端向DHCP服务端发送

    SPORT:68 DPORT:67

    SIP:0.0.0.0 DIP:255.255.255.255

    SMAC:自身的MAC地址 DMAC:全F

  4. DHCP --- ACK包 --- (单播华为/广播思科)

    DHCP服务端向DHCP客户端发送

    SPORT:68 DPORT:67

    SIP:服务端IP地址 DIP:华为:预下发的地址/思科:255.255.255.255

    SMAC:服务端自身的MAC地址 DMAC:终端的MAC地址/全F

交换机转发原理

转发原理:当一个数据包来到交换机,交换机会根据数据包中的源MAC地址记录从自身那个接口接收到的对应关系到MAC地址表中,之后转发数据包中的目标MAC地址;如果交换机MAC地址表有记录则直接根据记录转发,如果没有记录则洪泛——除了接收到这个数据包的接口外向其他所有接口复制转发一份数据包。

四、ARP协议

定义

ARP(Address Resolution Protocol 地址转换协议):通过一个地址找到另一个地址,是个双向协议

过程:源IP/源MAC --> 目标IP/目标MAC(全F/泛洪) --> 广播发送的全F数据包

作用

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,用于将已知IP地址转换为MAC地址,以保证通信的顺利进行。

工作流程

正向ARP

想要获取目标MAC地址,设备会发送一个ARP请求包(携带自身IP地址并且请求目标IP的MAC地址),之后使用目标MAC为全F的广播数据包发送,之后在广播域中的目标主机收到后会先记录终端IP地址和MAC地址的映射关系到ARP表中,之后再单播回复;如果目标IP不是自身,则只会记录信息而不会回复。

免费ARP

定义:指主机发送ARP包查找自己的IP地址,通常发生在系统引导期间进行接口配置时。与标准ARP的区别就是免费ARP分组的目的IP地址字段封装的是自己的IP地址,即向所在网络请求自己的MAC地址

功能:自我介绍,检测地址冲突

流程:

假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:

  1. 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

  2. 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文

    ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。

    由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。

  3. 主机B比较自己IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。

  4. 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

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

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

相关文章

Linux vim的使用(一键安装则好用的插件_forcpp),gcc的常见编译链接操作

vim 在Linux系统上vim是个功能还比较完善的软件。但是没装插件的vim用着还是挺难受的,所以我们直接上一款插件。 我们只需要在Linux上执行这个命令就能安装(bite提供的) curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh …

基于1bitDAC的MU-MIMO的非线性预编码算法matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 基于1-bit DAC的非线性预编码背景 4.2 ZF(Zero-Forcing) 4.3 WF(Water-Filling) 4.3 MRT(Maximum Ratio Transmission&…

昇思25天学习打卡营第09天|保存与加载

在训练网络模型的过程中,实际上我们希望保存中间和最后的结果,用于微调(fine-tune)和后续的模型推理与部署,本章节我们将介绍如何保存与加载模型。 import numpy as np import mindspore from mindspore import nn fr…

【云岚到家】-day05-6-项目迁移-门户-CMS

【云岚到家】-day05-6-项目迁移-门户-CMS 4 项目迁移-门户4.1 迁移目标4.2 能力基础4.2.1 缓存方案设计与应用能力4.2.2 静态化技术应用能力 4.3 需求分析4.3.1 界面原型 4.4 系统设计4.4.1 表设计4.4.2 接口与方案4.4.2.1 首页信息查询接口4.4.3.1 数据缓存方案4.4.3.2 页面静…

C++相关概念和易错语法(20)(赋值兼容转换、多继承、继承与组合)

1.赋值兼容转换 赋值兼容转换有一点易混&#xff0c;先看一下下面的代码&#xff0c;想想a、b、c对象里面存的什么&#xff0c;顺便结合以前的知识&#xff0c;对继承加深理解。 #include <iostream> using namespace std;class A { protected:A(int a):_a(a){}int _a; …

PostgreSQL 中如何解决因频繁的小事务导致的性能下降?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中解决因频繁小事务导致性能下降的方法 PostgreSQL 中解决因频繁小事务导致性能下降的方法…

使用机器学习 最近邻算法(Nearest Neighbors)进行点云分析 (scikit-learn Open3D numpy)

使用 NearestNeighbors 进行点云分析 在数据分析和机器学习领域&#xff0c;最近邻算法&#xff08;Nearest Neighbors&#xff09;是一种常用的非参数方法。它广泛应用于分类、回归和聚类分析等任务。下面将介绍如何使用 scikit-learn 库中的 NearestNeighbors 类来进行点云数…

C++ | Leetcode C++题解之第233题数字1的个数

题目&#xff1a; 题解&#xff1a; class Solution { public:int countDigitOne(int n) {// mulk 表示 10^k// 在下面的代码中&#xff0c;可以发现 k 并没有被直接使用到&#xff08;都是使用 10^k&#xff09;// 但为了让代码看起来更加直观&#xff0c;这里保留了 klong l…

优化器算法

优化器算法 梯度下降算法 首先引用动手学深度学习中对梯度下降算法的直观理解与推导。说明了不断的迭代可能会使得f(x)的值不断下降&#xff0c;从直观上解释了梯度下降的可能性。 将损失函数在x点处一阶泰勒展开。 f ( x ϵ ) f ( x ) ϵ f ′ ( x ) O ( ϵ 2 ) . f(x\eps…

在InternStudio上创建一台GPU服务器

填写配置 创建完成 ssh连接&#xff0c;并测试常用指令 查看开发机信息 查看gpu信息 创建conda环境 跑个test

可重入锁深入学习(有码)

【摘要】 ​今天&#xff0c;梳理下java中的常用锁&#xff0c;但在搞清楚这些锁之前&#xff0c;先理解下 “临界区”。临界区在同步的程序设计中&#xff0c;临界区段活称为关键区块&#xff0c;指的是一个访问共享资源&#xff08;例如&#xff1a;共享设备或是共享存储器&a…

9. Python的魔法函数

Python中的魔法函数 在Python中魔法函数是在为类赋能&#xff0c;使得类能够有更多操作。通过重写类中的魔法函数&#xff0c;可以完成很多具体的任务 1. __str__ 通过str魔法函数&#xff0c;可以设置对类的实例的 print() 内容 2. __len__ 通过len魔法函数&#xff0c;可…

tessy 集成测试:小白入门指导手册

目录 1,创建集成测试模块且分析源文件 2,设置测试环境 3,TIE界面设置相关函数 4,SCE界面增加用例 5,编辑数据 6,用例所对应的测试函数序列 7,添加 work task 函数 8,为测试场景添加函数 9,为函数赋值 10,编辑时间序列的数值 11,执行用例 12,其他注意事项…

计算机毕设:服装购物管理系统(Java+Springboot+MySQL+Tomcat),完整源代码+数据库+毕设文档+部署说明

本文关键字&#xff1a;Java编程&#xff1b;Springboot框架&#xff1b;毕业设计&#xff1b;毕设项目&#xff1b;编程实战&#xff1b;医护人员管理系统&#xff1b;项目源代码&#xff1b;程序数据库&#xff1b;毕设文档&#xff1b;项目部署说明&#xff1b; 一、项目说…

Java中JUC包详解

文章目录 J.U.C.包LockReadWriteLockLockSupportAQSReentrantLock对比synchronized加锁原理释放锁原理 CountDownLatchCyclicBarrierSemaphore J.U.C.包 java.util.concurrent&#xff0c;简称 J.U.C.。是Java并发工具包&#xff0c;提供了在多线程编程中常用的工具类和框架&a…

实战检验:Orange Pi AIpro AI开发板的性能测试与使用体验

文章目录 前言Orange Pi AIpro 简介Orange Pi AIpro 体验将Linux镜像烧录到TF卡YOLO识别视频中物体肺部CT识别 Orange Pi AIpro 总结 前言 Orange Pi AIpro&#xff0c;作为首款基于昇腾技术的AI开发板&#xff0c;它集成了高性能图形处理器&#xff0c;配备8GB/16GB LPDDR4X内…

MySQL复合查询(重点)

前面我们讲解的mysql表的查询都是对一张表进行查询&#xff0c;在实际开发中这远远不够。 基本查询回顾 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J mysql> select * from emp where (sal>500 or jobMANAGER) and ename l…

强化学习:bellman方程求解state value例题

最近在学习强化学习相关知识&#xff0c;强烈推荐西湖大学赵世钰老师的课程&#xff0c;讲解的非常清晰流畅&#xff0c;一路学习下来令人身心大爽&#xff0c;感受数学抽丝剥茧&#xff0c;化繁为简的神奇魅力。 bellman方程还是比较容易理解的&#xff1a;当前状态下的state …

嵌入式linux系统中GDB调试器详解

前言 GDB全称GNU symbolic debugger,它是诞生于GNU开源组织的(同时诞生的还有 GCC、Emacs 等)UNIX及UNIX-like下的调试工具,是Linux下最常用的程序调试器,GDB 支持调试多种编程语言编写的程序,包括C、C++、Go、Objective-C、OpenCL、Ada 等。但是在实际应用中,GDB 更常…

linux_进程周边知识——理解冯诺依曼体系结构

前言&#xff1a; 本篇内容是为了让友友们较好地理解进程的概念&#xff0c; 而在真正了解进行概念之前&#xff0c; 要先了解一下冯诺依曼体系结构。 所以博主会先对冯诺伊曼体系结构进行解释&#xff0c; 然后再讲解进程的概念。 ps&#xff1a; 本篇内容适合了解一些linux指…