地址

SWA2G422&485JK2G基础篇: 手机APP通过APMACBind方式绑定W5500(以太网)设备,实现MQTT远程通信控制

此生再无相见时 提交于 2020-01-12 02:07:07
说明   上一节演示了W5500实现MQTT通信控制   通过上一节咱知道   W5500订阅的主题为:user/W5500的MAC地址   W5500发布的主题为:device/W5500的MAC地址   这节演示下APP利用APMACBind方式获取W5500的MAC地址,进而做到和W5500实现MQTT通信 APMACBind方式介绍   APMACBind是我自己做的一种方式,这种方式目前有一个项目在使用   不过那是前年做的项目,当时是为了解决微信配网绑定问题   不过自从微信小程序支持了UDP,这种方式也被我淘汰(在我心底被淘汰了,有了更为简便的方式)   不过还是有必要拿出来讲一下,因为这种方式比较经典!体现了知识的灵活运用.   首先说明简要说明一下如何实现的让手机APP获取W5500的MAC地址   1.W5500连接路由器,连接上MQTT   2.W5500获取路由器的MAC地址   3.W5500发布的主题:device/路由器MAC   4.手机APP和W5500连接一个路由器   5.手机APP获取路由器MAC地址   6.手机APP订阅:user/路由器MAC   这样W5500就能够把自身的MAC地址通过MQTT发给手机APP,实现绑定   至于为什么用路由器的MAC地址作为主题(因为唯一)   所有用户都用一个MQTT服务器

操作系统:内存管理(概念)

回眸只為那壹抹淺笑 提交于 2020-01-11 07:40:11
  1、物理地址和逻辑地址    物理地址:加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0开始一直到可用物理内存的最高端。这些数字被北桥(Nortbridge chip)映射到实际的内存条上。物理地址是明确的、最终用在总线上的编号,不必转换,不必分页,也没有特权级检查(no translation, no paging, no privilege checks)。   逻辑地址:CPU所生成的地址。逻辑地址是内部和编程使用的、并不唯一。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干。   2、连续内存分配方案:   内存必须容纳操作系统和各种用户进程,因此必须尽可能有效得分配内存,在分配内存过程中,通常需要将多个进程放入内存中,前面提到过,我们需要每个进程的空间相互独立,而且我们必须保护每个进程的内存空间的独立性,如果不同的进程间需要通信,可以按照我们前面提到的通信方法进行通信,但是在此时,我们考虑内存空间独立性的实现。这就涉及到内存分配:   我们将整个内存区域多个固定大小的分区,每个分区容纳一个进程,当一个分区空闲时,可以将内存调入内存,等待执行,这是最简单的内存分配方案,但是这种方案存在很多问题

网络知识入门,地址转换原理,解释为何无法从互联网访问公司内网(十一)

☆樱花仙子☆ 提交于 2020-01-11 05:52:08
地址转换 路由器有 一些附加功能 。比如 地址转换和包过滤,下面就来介绍一下这两种功能。 首先 , 我们先了解一下地址转换功能出现的背景 。 所谓地址,就是用来识别每一台设备的标志,因此每台设备都应该有一个唯一不重复的地址 。 网络也是一样, 本来互联网中所有的设备都应该有自己的固定地址 , 而且最早也确实是这样做的。 比如 , 公司内网需要接入互联网的时候 , 应该向地址管理机构申请 IP 地址 , 并将它们分配给公司里的每台设备 。 换句话说 , 那个时候没有内网和外网的区别, 所有客户端都是直接连接到互联网的 。 尽管互联网原本是这样设计的, 但进入 20 世纪 90 年代之后 , 互联网逐步向公众普及, 接入互联网的设备数量也快速增长 , 如此一来 , 情况就发生了变化。 如果还用原来的方法接入 , 过不了多久 , 可分配的地址就用光了。 如果不能保证每台设备有唯一不重复的地址 , 就会从根本上影响网络包的传输, 这是一个非常严重的问题 。 如果任由这样发展下去 , 不久的将来, 一旦固定地址用光 , 新的设备就无法接入了 , 互联网也就无法继续发展了。 解决这个问题的关键在于固定地址的分配方式。 举个例子 , 假如有 A 、 B 两家公司 , 它们的内网是完全独立的 。 这种情况下 , 两家公司的内网之间不会有网络包流动, 即使 A 公司的某台服务器和 B

Python赋值、浅拷贝、深拷贝的区别

非 Y 不嫁゛ 提交于 2020-01-11 03:39:11
一、赋值 str例子 >>> a = 'hello' >>> b = 'hello' >>> c = a >>> [id(x) for x in (a,b,c)] [42654216, 42654216, 42654216] a,b,c三者地址一样,相当于a=b=c。赋值系统先给变量或对象(这里的hello)分配了内存,然后将地址赋给a,b,c。所以他们的地址是相同的。 >>> a = 'world' >>> [id(x) for x in (a,b,c)] [42654384, 42654216, 42654216] >>> print(a,b,c) world hello hello 这时只有a的地址和值变了,但是b,c地址和值都没有变。因为str的不可变性,a要重新赋值则需重新开辟内存空间,所以a的值改变,a指向的地址改变。b, c由于'hello'的不变性,不会发生改变。 list例 >>> a = ['hello'] >>> b = ['hello'] >>> c = a >>> [id(x) for x in (a,b,c)] [42670920, 42671816, 42670920] 但是这种情况却不一样了,a和b的地址不同。为何? 因为str是不可变的,所以同样是'hello'只有一个地址,但是list是可变的,所以必须分配两个地址。 >>> a[0] =

进程中堆栈向下增长的原因

自闭症网瘾萝莉.ら 提交于 2020-01-11 02:54:23
http://www.cnblogs.com/Quincy/archive/2012/03/27/2418835.html 我们都知道X86系统进程中堆栈都向下增长的,那为什么是向下增长呢? “这个问题与虚拟地址空间的分配规则有关,每一个可执行C程序,从低地址到高地址依次是:text,data,bss,堆,栈,环境参数变量;其中堆和栈之间有很大的地址空间空闲着,在需要分配空间的时候,堆向上涨,栈往下涨。” 这样设计可以使得堆和栈能够充分利用空闲的地址空间。 如果栈向上涨的话,我们就必须得指定栈和堆的一个严格分界线,但这个分界线怎么确定呢?平均分?但是有的程序使用的堆空间比较多,而有的程序使用的栈空间比较多。所以就可能出现这种情况:一个程序因为栈溢出而崩溃的时候,其实它还有大量闲置的堆空间呢,但是我们却无法使用这些闲置的堆空间。所以呢,最好的办法就是让堆和栈一个向上涨,一个向下涨,这样它们就可以最大程度地共用这块剩余的地址空间,达到利用率的最大化!! 呵呵,其实当你明白这个原理的时候,你也会不由地惊叹当时设计计算机的那些科学家惊人的聪明和智慧!! http://www.cnblogs.com/encode/p/3343499.html 51的栈是向高地址增长, INTEL 的 8031 、 8032 、 8048 、 8051 系列使用向高地址增长的堆栈;但同样是 INTEL

Kali信息收集

痞子三分冷 提交于 2020-01-11 02:44:41
dnsenum 显示 DNS 服务的详细信息:主机地址,域名服务地址,和邮件服务地址。 DNS 暴力破解fierce 在一个安全的环境中,暴力破解 DNS 的方式是一种获取不连续 IP 地址空间主机的有效手段。 fierce 工具可以满足这样的需求,而且已经预装在 Kali Linux中。 fierce 是 RSnake 创立的快速有效地 DNS 暴力破解工具。 fierce 工具首先域名的 IP 地址,查询相关的域名服务器,然后利用字典进行攻击。 fierce -dns baidu.com DMitry收集域名信息 由于 DMitry 还不能判断网络的范围,因为一般的路由器和防火墙等并不支持 IP范围的方式,工作中需要要把 IP 地址转换成子网掩码的格式。 来源: https://www.cnblogs.com/Genesis2018/p/9079769.html

操作系统篇-浅析分页机制

末鹿安然 提交于 2020-01-11 02:31:16
|| 版权声明:本文为博主原创文章,未经博主允许不得转载。   一、前言   在我们进行程序开发的时候,一般情况下,是不需要管理内存的,也不需要操心内存够不够用,其实,这就是分页机制给我们带来的好处。它是实现虚拟存储的关键,位于线性地址与物理地址之间,在使用这种内存分页管理方法时,每个执行中的进程(任务)可以使用比实际内存容量大得多的连续地址空间。而且当系统内存实际上被分成很多凌乱的块时,它可以建立一个大而连续的内存空间的映象,好让程序不用操心和管理这些分散的内存块。分页机制增强了分段机制的性能。页地址变换是建立在段变换基础之上的。因为,段管理机制对于Intel处理器来说是最基本的,任何时候都无法关闭。所以即使启用了页管理功能,分段机制依然是起作用的,段部件也依然工作。    二、页表结构   那么到底如何使用分页机制呢?通过 设置cr0的PG位 可以开启分页机制。页大小是4K,并且是4K对齐的。线性地址通过分页机制转换成物理地址的时候,可能某些线性地址是无效的。如果某个线性地址对应的页不存在,那么访问的时候将产生一个异常。    两级页表结构   内存分页管理的基本原理是将整个主内存区域划分成 4096 字节为一页的内存页面。程序申请使用内存时,就以内存页为单位进行分配。上面提到了线性地址经过分页机制的转换变成物理地址,但是没有提到如何转换。其实是通过两个表,一个是页目录表PDE

Python——赋值、浅拷贝、深拷贝

ⅰ亾dé卋堺 提交于 2020-01-10 20:14:00
  和很多语言一样,Python中也分为简单赋值、浅拷贝、深拷贝这几种“拷贝”方式。   在学习过程中,一开始对浅拷贝理解很模糊。不过经过一系列的实验后,我发现对这三者的概念有了进一步的了解。   一、赋值    赋值算是这三种操作中最常见的了,我们通过一些例子来分析下赋值操作:    str例 >>> a = 'hello' >>> b = 'hello' >>> c = a >>> [id(x) for x in a,b,c] [4404120000, 4404120000, 4404120000]   由以上指令中,我们可以发现a, b, c三者的地址是一样的。所以以上赋值的操作就相当于c = a = b = 'hello'。   赋值是系统先给一个变量或者对象(这里是'hello')分配了内存,然后再将地址赋给a, b, c。所以它们的地址是相同的。    list例 >>> a = ['hello'] >>> b = ['hello'] >>> c = a >>> [id(x) for x in a,b,c] [4403975952, 4404095096, 4403975952]   但是这种情况却不一样了,a和b的地址不同。为何?    因为str是不可变的,所以同样是'hello'只有一个地址,但是list是可变的,所以必须分配两个地址。   这时

网络协议之LLDP

南楼画角 提交于 2020-01-10 18:24:07
一、协议简介 为什么会出现LLDP? 随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息。 LLDP(Link Layer Discovery Protocol,链路层发现协议)就是用于这个目的的协议。 它提供了一种标准的链路层发现方式,可以将本端设备的的主要能力、管理地址、设备标识、接口标识等信息组织成不同的TLV(Type/Length/Value,类型/长度/值),并封装在LLDPDU(Link Layer Discovery Protocol Data Unit,链路层发现协议数据单元)中发布给与自己直连的邻居,邻居收到这些信息后将其以标准MIB(Management Information Base,管理信息库)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。 二、基本概念 LLDP报文封装有两种格式,一是ethernet II另外一个是SNAP。 Destination MAC address:目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。 Source MAC address:源MAC地址

网络程序设计出题

三世轮回 提交于 2020-01-10 11:37:24
出题考察范围主要还是上课老师讲到的内容:应用层:DNS,socket编程接口的使用,传输层:TCP三次握手、网络层:路由表链路层:网桥等 选择题: 1.以太网交换机进行转发决策时使用的PDU 地址是_______。【408】 A.目的物理地址 B.目的IP 地址 C.源物理地址 D.源IP 地址 参考答案:考查交换机的工作原理。 交换机实质上是一个多端口网桥,工作在数据链路层,数据链路层使用物理地址进行转发,而转发通常都是根据目的地址来决定出端口。 2.下列网络设备中,能够抑制广播风暴的是______。【408】 Ⅰ 中继器Ⅱ 集线器Ⅲ 网桥Ⅳ 路由器 A.仅Ⅰ 和Ⅱ B.仅Ⅲ C.仅Ⅲ 和Ⅳ D.仅Ⅳ、 参考答案:考查网络设备与网络风暴。 物理层设备中继器和集线器既不隔离冲突域也不隔离广播域;网桥可隔离冲突域,但不隔离广播域;网络层的路由器既隔离冲突域,也隔离广播域;VLAN 即虚拟局域网也可隔离广播域。对于不隔离广播域的设备,他们互连的不同网络都属于同一个广播域,因此扩大了广播域的范围,更容易产生网络风暴。 3.某网络拓扑如下图所示,路由器R1只有到达子网192.168.1.0/24的路由。为使R1可以将IP分组正确地路由到图中所有子网,则在R1中需要增加的一条路由(目的网络,子网掩码,下一跳)是【408】 A.192.168.2.0 255.255.255.128 192