网络基础三——其他周边问题
3.1ARP原理
ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议;
以广播的形式(主机号填成全1)构建Mac帧,发送ARP请求包,告诉所有在局域网的主机我的IP地址和Mac帧,与目的IP相同的主机用它的Mac地址构建Mac帧,返回ARP响应包;即先广播消息,然后其他主机一对一地将数据返回或者丢弃数据帧;
3.2ARP报文格式
硬件类型,指的是数据链路层的网络类型,1为以太网;
协议类型,指的是要转换的地址类型,一般是IP地址,即0800;
硬件地址长度,与硬件类型对应,如果是以太网长度应该是6字节;
协议地址长度,与协议类型对应,如果是IP协议,则长度应该是4字节;
OP,1表示是ARP请求,2表示ARP响应;
在局域网内部的主机都可以发送ARP请求和ARP响应,在数据链路层和网络层之间进行构建,之后再数据链路层进行构建Mac数据帧;
如果是ARP请求:发送端以太网地址就是入口路由器的Mac地址,IP地址同理,目的以太网地址为全F,目的IP为IP报文的目的IP地址;在发送IP报文前是会先发送ARP请求,构建好ARP请求,然后添加Mac报头;以太网目的地址为广播地址,以太网源地址为路由器Mac地址,帧类型为0806,OP为1;
如果是ARP响应:发送端以太网地址就是发送主机的Mac地址,IP地址同理,目的以太网地址为路由器Mac地址,目的IP地址同理;构建好ARP响应,然后添加Mac报头;以太网目的地址为路由器Mac地址,以太网源地址为当前主机的路由器Mac地址,帧类型为0806,OP为2;
在ARP层先看的是OP;对于ARP请求,因为目的地址是广播地址,所以每一个主机的数据链路层的会接收并解包分用给ARP层,而ARP应答,因为目的地址不是广播地址,在数据链路层就可以判断出来进行丢弃;根据OP确定请求和应答,然后确定关注目的端还是发送端的Mac地址和IP地址;
4.ARP相关指令
arp -a
#查看被主机临时缓存起来的目标主机的Mac地址和IP地址
ARP完成之后会将目标主机的Mac地址和IP地址临时缓存起来;之后发送IP报文就会在数据链路层添加目标主机的Mac地址,成功发送到目标主机;
5.ARP周边问题
1.ARP只有在失效的时候才会将进行;
2.ARP在任何局域网内的两设备之间都可以进行;
3.可以通过本机IP地址和子网掩码获取当前网段的网络号,ping所有本网段的主机之后获得所有主机的IP地址和Mac地址映射;
4.收到多个ARP应答,实际上是会以最新的为准;如果第三方主机构建大量的虚假ARP应答,就会使得发送端主机发送的IP报文被发送虚假ARP应答的第三方主机收到并且丢弃,使得发送方主机发生了一次断网;这种攻击方式称为ARP欺骗;其实也可以将获取的IP报文发送给路由器,然后路由器会将报文返回给第三方主机,第三方主机将IP报文发送回发送端主机,这样就是实现了一次单向中间人攻击,当然也可以对路由器进行ARP欺骗,实现双向的中间人攻击;
5.RARP是通过Mac地址获取IP地址;
6.其他问题
1.DNS是域名解析技术,将域名解析成对应的IP地址;浏览器内置了DNS服务器的IP地址,进行域名和IP地址的转化;
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称;域名使用 . 连接;
com: 一级域名. 表示这是一个企业域名. 同级的还有 “net”(网络提供商), “org”(非盈利组织) 等;
baidu: 二级域名, 公司名;
www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议;
2.ICMP是网络层的协议,在IP之上,传输层之下;ping就是使用的ICMP协议,使用原始套接字直接发送到网络层;一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输;如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因,此时就需要使用ICMP协议来进行网络诊断和通知出错原因;
7.NAT技术
将私有IP和WAN口IP不断替换的技术;
缓解IP地址不足的问题,使用私有IP和WAN口IP将源IP地址不断替换成内网入口路由器IP地址,最终从内网入口路由器发送公网,然后公网发生数据响应返回到内网入口路由器;这时是区别不了具体发送到哪一个子网中,因为此时的目的IP地址是内网入口路由器的IP地址;这时就需要使用NAPT建立一个内网源IP:端口号和目的IP:端口号与公网源IP:端口号和目的IP:端口号的映射,最后多个映射组成一个NAT转化表;最后就实现了内网向公网转发,公网向内网转发;
其实在NAT替换的过程当中不仅仅是源IP替换,端口也替换了,因为要保证公网和内网部分key都唯一,而内网IP一定是唯一的,转换成WAN口IP地址会导致IP都一样,需要使用不同的端口号保证唯一性;
这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项;
NAT缺陷
无法从NAT外部向内部服务器建立连接;
转换表的生成和销毁都需要额外开销;
通信过程中一旦NAT设备异常, 即使存在设备, 所有的TCP连接也都会断开;
内网穿透
不同内网是不可以直接进行通信,需要先访问外网然后外网转发到内网,间接实现不同内网的通信;
frp工具会提供frps(服务器端)和frpc(客户端),实现了通过外网访问内网;
相关文章:

网络基础三——其他周边问题
3.1ARP原理 ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议; 以广播的形式(主机号填成全1)构建Mac帧,发送ARP请求包,告诉所有在局域网的主机我的IP地址和Mac帧,与目的IP相同的主…...

学习周报:文献阅读+Fluent案例+水力学理论学习
目录 摘要 Abstract 文献阅读:物理信息的神经网络与湍流传质的非封闭机制模型相结合 文献摘要 提出问题 提出方案 实验设置 所需方程介绍 雷诺时均方程(RANS) K-epsilon两方程模型 神经网络框架 DNN部分 损失函数定义 PINN部分…...

Redis(持久化 -- RDB AOF)
持久化 通常我们认为持久化为: 重启进程/重启主机之后, 数据仍然存在不丢失 把数据存储在硬盘上 – 持久 把数据存储在内存中 – 不持久 Redis 持久化 redis 是一个内存数据库, 也就是说本身是不持久的(但是快[效率高]), 于是 Redis 提供了持久化机制 — RDB 和 AOF 二者都是对…...

LDR6328助力Type-C普及,便捷充电,绿色生活更精彩
随着科技的进步和全球统一接口的需求,Type-C接口正日益受到青睐。越来越多的设备正选择采纳这一先进的接口设计,它的普及无疑在改善着我们的日常生活。 在过往,许多小功率设备如小风扇、蓝牙音箱、桌面台灯以及家用加湿器等,都普遍…...

redis主从复制、哨兵模式、集群
文章目录 redis主从复制主从复制的配置**安装Redis**配置主服务器配置从服务器验证主从效果 哨兵模式哨兵的工作机制哨兵模式的搭建启动哨兵 集群分布式集群的搭建 redis主从复制 Redis主从复制(Redis replication)是Redis提供的一种数据备份和故障转移…...
shell免登陆脚本
#!/bin/bash ## 脚本接收的参数,也就是要互相配置 SSH 免密登录的服务器列表参数 BASE_HOST_LISTip ## 密码,默认用户是当前运行脚本的用户,比如 root 用户 ## 这里改成你的用户对应的密码 BASE_PASSWORD"password" ## shell 函…...

基于springboot+vue+Mysql的职称评审管理系统
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...

GitLab教程(一):安装Git、配置SSH公钥
文章目录 序一、Git安装与基本配置(Windows)下载卸载安装基本配置 二、SSH密钥配置 序 为什么要使用代码版本管理工具: 最近笔者确实因为未使用代码版本管理工具遇到了一些愚蠢的问题,笔者因此认为代码版本管理工具对于提高团队…...
【算法】无序数组的两数之和 - map标记
题目 在一个无序数组中找到两个数,两个数之和为给定的一个数,返回两个数在数组中的下标。 原理 遍历数组,遍历到一个数字的时候,记录下这个数及其下标,遍历时判断给定数减去这个数为key在map中是否存在,…...

Prime (2021): 2
前言 这个靶机有亿点难,收获很多。打靶的时候,前面很顺,到创建ssh公钥之后就一点不会了。 1 01 arp扫描,发现有一个130,再查看端口 有22,80,129,445,10123 dirb扫描目录 这…...
React 状态管理:安全高效地修改对象属性的 3 种方法
在 React 应用程序中,状态(state)是驱动整个应用程序的核心。当应用程序的状态发生变化时,React 会自动重新渲染相应的组件,以确保用户界面的更新。 与数组状态一样,对象状态在 React 中也需要特别处理。直接修改对象属性是不被允许的,因为 React 的不可变性原则要求我们创建一…...
python实现pdf的页面替换
利用第三方库PyPDF2,下面例子中进行的是将 origin.pdf 的第17页替换为 s17.pdf 的第1页: import PyPDF2def replace_pages(original_pdf_path, replacement_pages):with open(original_pdf_path, rb) as original_file:original_pdf PyPDF2.PdfReader(…...
[AIGC] Java List和Map常用API以及其Python实现方式对照介绍
Java和Python作为当今非常浅显易懂的编程语言,其数据结构中对于List和Map(Java)或List和Dict(Python)的操作无疑是每个程序员都非常必需的知识。本文将介绍在Java中对List和Map常用的一些操作,并给出在Pyth…...

零基础如何闯入IT的神秘大门?
前言 随着信息技术的飞速发展,IT行业成为了许多有志之士梦寐以求的职业领域。但对于零基础的人来说,如何成功进入这个行业却是一个不小的挑战。下面,我将结合自身的C语言专业知识,为大家详细阐述一条可行的学习路径,并…...

java程序 .exe启动nginx防止重复启动,已解决
java代码生成好的.exe启动nginx服务程序 根据nginx占用端口来解决nginx服务重复启动问题(下面代码了解代码逻辑后根据自己的业务需求修改即可) 代码: package org.example;import javax.swing.*; import java.awt.*; import java.io.*; …...
二十一、Rust 反射 获取类型
不同于 java 中的反射,Rust 没有提供以往意义上的运行时反射,取而代之的是 “编译期反射”,如 类型分析、类型转换、类型签名。但即便如此,也已经能对 Rust元编程 提供很多助力了。 这种操作,主要通过 Any 来实现&…...
Flutter Engine引擎概念
1.Flutter是Google提供的开源框架。 2.本身由C编写并兼容iOS(底层C)/Android(底层C)平台的FlutterEngine框架负责UI渲染、数据转移、调用DartVM虚拟机。 3.FlutterEngine框架由Skia图形库、Dart运行时、Flutter框架代码组成。Skia是用于图形绘制和文本显示的2D图形引擎库&#…...
【运行环境】加载资源的形式
相关资源:性能优化原则 1 加载资源的形式 html代码 媒体文件,如图片,视频等 javasccript css 2 加载资源的过程 DNS解析:域名-> ip地址 浏览器根据IP地址向服务器发送http 请求 服务器处理http 请求,并返回给浏览器…...

备战蓝桥杯Day40 - 第11届python组真题 - C跑步锻炼
一、题目描述 二、思路 1、使用datetime库中的方法可以很好的解决这个问题。 2、定义起始时间和结束时间,判断是否是周一或者是1号,结果res加上相应的里程数。 3、最后输出 res 即为本题答案。 三、代码实现 import datetimestart datetime.date(2…...

书生·浦语大模型第二期实战营第二课笔记和基础作业
来源: 作业要求:Homework - Demo 文档教程:轻松玩转书生浦语大模型趣味 Demo B站教程:轻松玩转书生浦语大模型趣味 Demo 1. 笔记 2.基础作业 2.1 作业要求 2.2 算力平台 2.3 新建demo目录,以及新建目录下的文件,下载模型参数 2.4 Intern…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...