地址

网络基础篇之NAT(原理)

北战南征 提交于 2019-12-03 04:10:46
一、NAT的产生    由于网络的飞速发展和网络应用的极速增多,致使IPv4可用地址空间逐渐枯竭。尽管IPv6可以在根本上解决地址枯竭问题,但IPv4发展到IPv6还需要一个过渡,而这便产生了NAT。 二、NAT的作用    IP地址分为公网IP与私网IP。一般情况下,在互联网中,公网IP可直接访问,私网IP无法直接访问。而NAT则是将私网IP地址转换为公网IP地址(将IP报文头部的私网IP地址改为可以提供访问的公网IP地址),从而实现用户上网功能或服务器在互联网上提供服务。NAT还可以使得一个公网IP代表多个不同的内网IP,这样便节省了IP地址资源。 三、NAT的类型与分类    NAT分为静态转换、动态转换、端口转换   1、 静态转换 :私有地址与公有地址进行一对一的映射。这种一对一映射无法缓解可用公有地址短缺的问题。   2、 动态转换 :私有地址与公有地址进行一对多的映射。首先建立公有地址地址池,私有地址向外通信时,会从公有地址地址池中选择非在用的公有地址进行映射,当通信结束时,释放映射关系,公有地址重新恢复到地址池中待用。弊端:若私有地址向外通信,而公有地址地址池中无可用公有地址时,会等待公有地址释放后在进行通信。   3、 端口转换 :在大多数网络中,一般都使用的是IP上的某个端口(如80、443、3389等),所以不需要进行全地址映射

通过导出表找导出函数

梦想与她 提交于 2019-12-03 03:57:46
例如:一个HelloDll.dll 其导出表信息如下: 该dll有4个函数; 用.def的方式导出; 其中有个匿名函数; 1.分析 导入dll中的函数有两种方式: 1】通过序号 2】通过函数名 例如:显式链接dll时使用的库函数“GetProcAddress”实现了用函数的查找; myPlus = (lpPlus)GetProcAddress(hModule, "_Plus@8"); 其中的参数hModule实际上是pe文件拉伸后的起始位置ImageBase; 2.通过函数名导入 思路: 遍历名字表,获取函数名,与目标函数名比对,如果有相同的函数名,获得该函数名在名字表中的索引; 注意:名字表中储存的是函数名的内存镜像中相对ImageBase的偏移地址,需要转换成文件镜像偏移地址; 用获得的索引在序号表中找到该函数对应的序号; 以序号为索引在函数地址表中找到函数的地址; 注意:函数地址表中储存的是函数内存镜像的偏移地址,需要转换为文件镜像的偏移地址; 用函数指针接收函数的地址; 使用函数; 函数: GetFunctionAddrByName(FileBuffer指针,函数名指针) 代码: #include "stdafx.h" #include "PeTool.h" #include "string.h" #define SRC "C:\\Users\\Administrator\

第二次读汇编语言

南楼画角 提交于 2019-12-03 02:53:38
第一次读汇编语言的教材就是那本Kip Irvine dalao写的书, 比较急,因为赶着完成作业,只能囫囵吞枣了. 而最近用到汇编写点东西的时候总是感觉不是那么顺心, 于是就重新读了一遍基础知识,现在还只是读到了第三章(汇编语言基础知识), 大概这几天就会把这本书多翻阅几遍,以此来达到复习,提高的效果; 闲话少说,接下来就是我新发现的"知识点": 1. 以字母开头的十六进制数,必须加一个前置0 ,以防汇编器将其解释为标识符 2. 整形常量表达式只是在汇编时计算,同样的还有 伪指令 会有汇编器在汇编阶段将其汇编为相应的代替物 3. 预定义符号 如@data ,汇编时返回常量的整数值 4. 指令: [label:] mnemonic [operation] [;comment] 这是一个完整的指令的 ''原型''; 5. NOP指令 ------空指针 ,主要用处是为对其地址, Intel的芯片 在访问偶数的地址会快点. 6. 可执行文件 executable file 7. list 文件 地址 从程序内存起点算起(类似于段地址和偏移地址中的偏移地址) 8. db dw dd dq dt 是伪指令 10 BCD数据 Binary coded Decimal (二进制编码的十进制) 来源: https://www.cnblogs.com/love-coding/p/11774717

基于XCP协议分析和理解

匿名 (未验证) 提交于 2019-12-03 00:43:02
本篇文章主要从以下几个方面进行对XCP模块的讲解 1.XCP用来做什么; 2.XCP的工具简介; 3.XCP的工作流程; 4.XCP地址映射分析(软件与硬件方式); 5.XCP的命令简介; 6.XCP中的A2L文件简介; 1.XCP用来做什么? 在汽车电子软件开发中,经常会遇到需要在整车调试或者台架调试时才能确定的一些变量,这个时候就会用到XCP,例如电机控制器的PID参数,可能根据汽车的负载不一样需要调整,这个时候就可通过XCP来标定。 那么XCP主要的用处以下总结为四点: a.标定 b.测量(反馈一些变量的值供上位机或测试系统查看,如转速等) c.编程和刷新(例如更新一部分地址的数据值,甚至重编程等,这部分用的较少一般用UDS) d.对ECU功能进行旁路,简单来说就是模拟ECU的数据 其中主要用a,b两点,其他两点用的比较少。 2.XCP的工具简介 3.XCP的一般工作流程 首先XCP是主从的工作结构,主节点(Master)即一个上位机,我们定义它为测试系统,当然你也可以理解为我们使用的XCP工具,一个主节点可以连接多个从节点(Slave),以XCPOnCAN为例,可以通过CAN ID的方式来识别不同的从节点,一般从节点需要两个CANID,一个源地址,一个目标地址。那么硬件连接如下所示: Master(带上位机的笔记本)<-->CAN工具<-->Slave(ECU 可多个) a

通过思科模拟器CISCO PACKET TRACER学习网络9――OSPF

匿名 (未验证) 提交于 2019-12-03 00:41:02
RIP协议可以通过比较方便的方法进行配置,但是RIP自身的局限性表明它不适合于中大型网络。相比之下,OSPF虽然配置相较RIP复杂,但是其功能和性能上都比RIP要更胜一筹。 配置思路 1配置路由器下联交换机的物理接口地址以及路由器接其他路由器的物理接口地址并开启端口 2配置交换机下联PC的地址,并制定网关为路由器下联交换机物理接口的地址 3另一台路由器也接在交换机上,IP地址和PC在同一个网段中 4开启路由器的ospf功能,指定进程名,并宣告自身所在网段以及定义区域号 网络拓扑图如下 1配置路由器接口地址 2配置PC地址 3配置路由器的ospf协议 4其他路由器配置相似 5查看路由条目 6验证操作 原文:http://blog.51cto.com/13685543/2144914

nbtscan工具

匿名 (未验证) 提交于 2019-12-03 00:40:02
这是一款用于扫描Windows网络上NetBIOS名字信息的程序。该程序对给出范围内的每一个地址发送NetBIOS状态查询,并且以易读的表格列出接收到的信息,对于每个响应的主机,NBTScan列出它的IP地址、NetBIOS计算机名、登录用户名和MAC地址。但只能用于局域网,NBTSCAN可以取到PC的真实IP地址和MAC地址,如果有”ARP攻击”在做怪,可以找到装有ARP攻击的PC的IP/和MAC地址。 但只能用于局域网 , NBTSCAN可以取到PC的真实IP地址和MAC地址,如果有”ARP攻击”在做怪,可以找到装有ARP攻击的PC的IP/和MAC地址。NBTSCAN可以取到PC的真实IP地址和MAC地址,如果有”ARP攻击”在做怪,可以找到装有ARP攻击的PC的IP/和MAC地址。 总之,NBTSCAN可以取到PC的真实IP地址和MAC地址。 Example: 命令: 1.“nbtscan -r 192.168.0.0/24”(搜索整个192.168.0.0/24网段, 即 192.168.0.1-192.168.0.254); 原文:https://www.cnblogs.com/xingyunfashi/p/9285019.html

X86-64和ARM64用户栈的结构

匿名 (未验证) 提交于 2019-12-03 00:40:02
背景 ????主要基于Linux,介绍X86-64和ARM64的用户栈结构。断断续续的学了很多和栈相关的知识,今天打算整理用户栈相关的知识,废话少说,下面进入正题。在最初的最初,用户栈是OS创建的。 进程的创建 ????一个用户进程从无到开始运行,需要经过几个重要的步骤: Linux首先创建一个task_struct用于管理进程的方方面面。 建立进程的虚拟地址空间,也即建立页表,建立虚拟地址到物理地址的映射,到这时一个用户进程所需的基本元素已经具备,到这里frok()的任务基本完成。 接下来就需要可执行文件本身的参与,读取可执行文件头,解析文件头,文件头的前几个字节会指出当前文件是何种类型,如果是#!/bin/sh或 #!/bin/python 则该文件是脚本文件,有负责脚本文件的加载程序,本文只关注可执行文件。建立虚拟地址和可执行文件之间的映射。 初始化进程环境, 其中比较重要的一项便是初始化用户进程栈 跳转到可执行文件的入口,执行可执行文件,一个用户进程就开始运行起来了 用户进程栈的初始化 在进程刚开始运行的时候,需要知道运行的环境和用户传递给进程的参数。一般来说,Linux会在用户进程运行前,将系统的环境变量和用户给的参数保存到用户虚拟地址空间的栈中。 原文:http://blog.51cto.com/iamokay/2138525

地址解析协议ARP与逆地址解析协议RARP

匿名 (未验证) 提交于 2019-12-03 00:40:02
IP地址是用来通信的,但是和硬件地址是有区别的。物理地址是数据链路层和物理层使用的地址,IP地址是网络层及以上各层使用的地址。 发送数据时,数据从高层向下层传输,使用IP地址的IP数据报交给下层的数据链路层,就会被封装为MAC帧。IP数据报的首部存放着IP地址,包括源地址和目的地址。MAC帧的首部存放着物理地址,在数据链路层看不到数据报的IP地址。 在通信过程中,不管网络层使用什么协议,在实际网络的链路上传输数据必须使用硬件地址。 IP地址有32位,MAC地址有48位,它们之间不存在简单的映射关系,在网络中,经常会出现加入新主机,撤走主机,以及更换网卡,这些都会使主机的硬件地址发生改变,在主机中存放IP-MAC的映射表,应该要经常动态更新,实现起来很繁琐。 我们如何简便地实现IP地址到物理地址的转换呢,地址解析协议ARP很好地解决了上述问题。 首先,每个主机上都应该设有一个ARP高速缓存,存放着 所在的局域网上 的各主机IP地址和其物理地址的映射表。那么这些映射表是如何来的呢? 当主机A想向本局域网上的主机B发送IP数据报,那么先在ARP高速缓存中查找主机B的IP地址,如果有,就对应出主机B的硬件地址,将地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。 如果在ARP高速缓存中没有找到主机B的IP地址,有可能是主机B刚刚入网,或者主机A刚刚上电,高速缓存是空的

多周期CPU设计与实现

匿名 (未验证) 提交于 2019-12-03 00:39:02
设计一个多周期CPU,该CPU至少能实现以下指令功能操作。指令与格式如下: ==> 算术运算指令 1. add rd , rs, rt (说明:以助记符表示,是汇编指令;以代码表示,是机器指令) 000000 rs(5λ) rt(5λ) rd(5λ) reserved 功能:rd←rs + rt。reserved为预留部分,即未用,一般填“0”。 2. addi rt , rs ,immediate 000010 rs(5λ) rt(5λ) immediate(16λ) 功能:rt←rs + (sign-extend)immediate;immediate符号扩展再参加“加”运算。 3. sub rd , rs , rt 000001 rs(5λ) rt(5λ) rd(5λ) reserved 功能:rd←rs - rt ==> 逻辑运算指令 4. ori rt , rs ,immediate 010010 rs(5λ) rt(5λ) immediate(16λ) 功能:rt←rs | (zero-extend)immediate;immediate做“0”扩展再参加“或”运算。 5. and rd , rs , rt 010001 rs(5λ) rt(5λ) rd(5λ) reserved 功能:rd←rs & rt;逻辑与运算。 6. or rd , rs , rt