地址

x86架构

被刻印的时光 ゝ 提交于 2020-01-16 20:56:15
基础概念 cpu:命令的执行 内存:中间结果保存、进一步计算,cpu无法保存太多的中间结果 总线:连接cpu、内存、显卡、磁盘空盒子器、usb控制器 进程:可以理解为实例化的程序,程序是存在硬盘的,而进程是要讲程序加载到内存,不同进程的内存空间是隔离的。进程空间粗略的分有代码段和数据段。cpu包含两个寄存器,分别存放当前处理进程的代码段的起始地址和数据段的起始地址,进程切换会切换这两个寄存器存储的起始地址。 cpu cpu包括三部分: 运算单元 数据单元 控制单元 运算单元 做加法、移位等。 数据单元 包括cpu内部的缓存和寄存器组,空间小、速度快,展示存放数据和运算结果。 数据单元从数据段中读取数据。 8086处理器内部有8个16位通用寄存器:AX、BX、CX、DX、SP、BP、SI、DI。 其中AX、BX、CX、DX可以分成两个8位寄存器使用,分别为AH、BH、CH、DH、AL、BL、CL、DL。H是高位、L是低位。这样长短数据可以用不同大小的寄存器存放。 控制单元 统一指挥,获取下一条命令、执行,指令会指导运算单元获取数据单元数据,进行计算,结果存数据单元。 控制单元中的 指令指针寄存器 用于存放吓一条指令在内存中的地址,控制单元将代码段的指令放入指令寄存器进行后续执行。 指令分为 操作 和 数据 ,操作对应运算单元,数据对应数据单元。

图解TCP/IP 记录

我们两清 提交于 2020-01-16 20:02:45
网关 负责将从传输层到应用层的数据进行转换和转发的设备。 典型例子:互联网邮件与手机邮件之间的转换服务。 IP:ip不具有重发机制,属于非可靠传输协议。 ICMP:ip数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个发生异常的通知,icmp就是为这一功能而制定的。 ARP:从分组数据包的ip地址中解析出物理地址(MAC地址)的一种协议。 TCP:面向有连接的传输协议,保证两端通信主机之间的通信可达。TCP能正确处理在传输过程中丢吧、传输顺序乱掉灯异常情况。为了建立与断开连接,有时它需要至少7次的发包收包,导致网络流量的浪费,为提高网络的利用率,TCP协议中定义了各种各样负责的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用。 UDP:面向无连接,常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。 FTP:进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接。 包首部 每个包首部至少包含两个信息:1、发送端和接收端地址。2、上层协议类型。 TCP首部:包括源端口号和目标端口号(识别发送主机跟接收主机上的应用)、序号(用以发送的包中哪部分数据)、校验和(用以判断数据是否被损坏)。 IP首部:包含接收端IP地址以及发送端IP地址

计算机网络学习(3)ARP协议

佐手、 提交于 2020-01-16 10:42:14
一、 ARP 协议   网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口。因此我们需要进行IP地址与物理地址之间的转化。   对于IPv4来说,我们使用ARP地址解析协议来完成IP地址与物理地址的转化(IPv6使用邻居发现协议进行IP地址与物理地址的转化,它包含在ICMPv6中)。   ARP协议提供了网络层地址(IP地址)到物理地址(mac地址)之间的动态映射。ARP协议 是地址解析的通用协议。 二、ARP缓存   ARP高速缓存(即ARP表)是 ARP地址解析协议能够高效运行的关键 (如果有多次ARP响应时,以最后一次响应为准)。   ARP给IP地址和MAC地址中间做了动态映射,也就是说缓存了一个ARP表,将得到的IP地址和MAC地址对应起来,如果在表中没有查到IP地址对应的MAC地址,就会发广播去找。随着用户的使用,ARP表如果不做任何措,就会变得越来越臃肿缓慢,就降低了网络传输数据的效率,所以ARP缓存中每一项被设置了生存时间,一般是20分钟,从被创建时开始计算,到时则清除,如果在计时期间又被使用了,计时会重置。电脑断电则ARP表内容清空。 三、ARP 报文的各个字段以及含义   帧类型: ARP: 0x0806 (2) ARP 首部: 硬件类型:硬件地址的类型, 1 表示以太网地址。(2) 协议类型:协议地址的类型, 0x0800

Linux动态DMA映射

爷,独闯天下 提交于 2020-01-16 08:53:33
1. 几种地址类型 虚拟地址   Linux内核使用的地址是虚拟地址,数据类型为void *。例如,kmalloc()和vmalloc()函数返回值就是虚拟地址。 物理地址   处理器真实地址总线上的地址,数据类型为phys_addr_t。   对I/O设备寄存器和内存统一编址的处理器,如ARM/PowerPC,参考手册一般会给出memory map,也就是各种I/O设备的寄存器在物理地址空间的分布。对I/O设备寄存器独立编址的处理器。如X86,访问I/O设备寄存器或内存时,向 地址总线发送地址,并通过控制信号来实现对I/O设备寄存器和内存的不同寻址。这些I/O设备寄存器的地址可以在/proc/iomem中查看,必须使用ioremap()映射到虚拟地址空间才可以使用。 总线地址   从I/O设备的角度看,I/O设备使用的地址是总线地址。DMA使用地址也是总线地址,数据类型为dma_addr_t。对一些简单的系统,设备通过DMA可以直接访问物理地址,但大多数系统都有IOMMU将总线地址转换为物理地址。 2. DMA寻址能力   默认情况下Linux认为设备DMA可以进行32位寻址。必须对DMA mask进行设置,将设备的DMA寻址能力通知内核。 int dma_set_mask_and_coherent(struct device *dev, u64 mask)  

IP地址和硬件地址 ARP协议

强颜欢笑 提交于 2020-01-16 03:58:18
ip地址使用在网络层以上,是一个逻辑地址,物理地址是数据链路层和物理层使用的 在发送数据的时候,数据是从上层往下层发送的,通过tcp报文-》ip数据报-》mac数据帧 IP地址放在数据报的首部,硬件地址放在mac帧的首部,在里面有几点注意 1:在ip层抽象的互联网上只能看到ip数据报。 2:在局域网的链路层只能看到MAC帧 3:虽然ip数据报首部有目的ip地址,但是路由器只根据目的地址的ip网络号进行选者 4:ip层抽象的互联网层屏蔽了下面的复杂的细节,所以在网络层上我们只对统一的ip地址研究原地址和目的地址就可以了 ARP解析协议: 我们在进行通信的时候,需要知道相互的硬件地址,但是我们只知道源ip和目的ip,怎么才能进行相互通信呢,这就需要了ARP地址解析协议,通过arp可以通过ip找到对应的硬件地址,rarp逆地址解析协议可以通过硬件地址找到ip地址 ARP的原理就是在主机ARP高速缓存中存储着一个ip地址到硬件地址的映射表,每一个主机都有arp高速缓存, 当主机A向主机B发送ip数据报的时候,他先查看本地arp缓存是否有主机b的mac地址,如果有,则将硬件地址写入mac帧,并通过局域网将mac帧发送到硬件地址去,如果找不到,那么主机A自动运行ARP,通过下面的方法找到mac地址 (1)主机A在局域网发送一个广播ARP请求,说我的ip是什么,我的硬件是什么,我要找到ip多少的

汇编语言学习分享(三)

扶醉桌前 提交于 2020-01-15 21:56:37
字的存储 在上一篇中说到一个16位寄存器可以存放一个字(16位)或者一个字节(8位),当存放一个字节的时候只需要一个内存单元(内存单元是以字节为单位的,8位),而存放一个字需要两个内存单元,这样存放一个字就需要两个连续的内存单元,这个16位的字, 高位存放在高地址,低位存放在低地址 。 内存地址 内存数据 0 20H 1 4EH 2 12H 3 00H 对于字来说0就是低地址单元,1是高地址单元,则字型数据4E20H的低地址位20存放在0号单元,高地址位4E存放在高地址单元,因为它的起始地址为0,又可以称作0地址字单元。 段地址寄存器 通过前面学过的知识我们可以知道当CPU想要对一个内存单元进行操作时,必须知道它的地址,要知道内存单元的地址就要知道它的段地址和偏移地址,在8086 CPU中,DS寄存器就是用来存放段地址的,执行指令的时候,CPU会自动读取DS中的数据为内存单元的段地址,使用 [偏移地址] 来表示偏移地址,假设DS寄存器中此时存放的是1000H,那么 mov al,[0] 就表示将10000H(物理地址=段地址x16+偏移地址)地址上存放的数据存到al中。 如果想要修改DS寄存器中的值,那么直接使用mov指令将数字存到DS寄存器中是不行的,只能先将值存到一个寄存器中,再使用mov指令将这个寄存器中的值存到DS中,例: mov bx,1000H mov ds,bx

ARP协议和NDP协议分析

青春壹個敷衍的年華 提交于 2020-01-15 02:05:31
简介 Linux下查询arp表执行arp –n: ARP(Address Resolution Protocol)即地址解析协议,根据IP地址获取MAC地址。 主机 发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 IPv6协议中邻居发现协议(Neighbor Discovery Protocol)替换了IPv4协议中的ARP,它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。 ip neigh del 240e:ff:e000:c:6595:b501:a0 53:8137 dev ens33 发送NS请求,目标MAC地址为目标IPv6地址拼接而成,前缀为33:33:ff,后面为IPv6地址的24位16进制组成。IP层目标地址为组播地址,ff02::1:ff前缀开头。 抓包 ARP请求报文和应答报文 请求报文,可以看出二层发广播包,广播地址(ff:ff:ff:ff:ff:ff),arp请求包内容里面目标MAC地址全0: 应答报文,只有目标主机才响应,响应包中有源MAC和目标MAC: NS请求: NA通告: 来源: CSDN 作者: gbbfum 链接: https:

ARP:地址解析协议

三世轮回 提交于 2020-01-15 01:38:03
文章目录 1. ARP定义 2. ARP过程 3. 注意事项 本文整理自《TCP-IP详解》 1. ARP定义 当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查I P数据报中的目的I P地址。 把一个源端IP地址发送到紧邻的路由器或者主机时,需要获取临端的链路层地址(对于以太网就是Mac地址,令牌环网有自己的地址)。逻辑I n t e r n e t地址到对应的物理硬件地址需要进行翻译。这就是A R P的功能。 2. ARP过程 A R P本来是用于广播网络的,有许多主机或路由器连在同一个网络上。 A R P发送一份称作A R P请求的以太网数据帧给以太网上的每个主机。这个过程称作广播,A R P请求数据帧中包含目的主机的I P地址(主机名为b s d i),其意思是“如果你是这个I P地址的拥有者,请回答你的硬件地址。” 目的主机的A R P层收到这份广播报文后,识别出这是发送端在寻问它的I P地址,于是发送一个A R P应答。这个A R P应答包含I P地址及对应的硬件地址。 收到A R P应答后,使A R P进行请求—应答交换的I P数据报现在就可以传送了。 发送I P数据报到目的主机。 3. 注意事项 A R P为I P地址到对应的硬件地址之间提供动态映射。我们

汇编语言学习分享第2章

风流意气都作罢 提交于 2020-01-14 20:05:55
CPU的组成 CPU是由运算器(信息处理)、控制器(控制器件工作)、寄存器(信息存储)等器件组成,他们之间通过总线相连。 通用寄存器 通用寄存器时用于存放一般性数据的,以8086 CPU为例,8086 CPU所有的寄存器都是16位的,8086 CPU中的通用寄存器有AX、BX、CX、DX。为了兼容上一代CPU中的8位寄存器,这4个寄存器都可以拆成两个8位的寄存器使用,也就是将16位分成两个8位,AX可分为AH和AL,BX可分为BH和BL,CX可分为CH和CL,DX可分为DH和DL。这里的H可以记为High,高位,L可以记为Low,低位。 再来说一下数据宽度,因为寄存器有16位和8位两种,所以数据宽度可以分为字节和字,一个字节由8个bit组成,可以直接使用低位存储,一个字由两个字节,也就是16位,比如一个十六进制3E10,将这个十六进制存放到AX寄存器总,3E就存放在高位AH中,10存放在低位AL中。 内存单元的物理地址 之前说过数据是通过地址线存放在内存单元中的,那么就必须要确定这个内存单元的地址。 基础地址=段地址x16 基础地址+偏移地址=物理地址 所以 物理地址=段地址x16+偏移地址 ,这里的16是十进制的16,也就是十六进制的A。 这里的段地址可以理解为一段一段的内存存储单元,但是段地址并不是固定的,可以认为10000H-100FFH是一个段

指针和引用的区别

北慕城南 提交于 2020-01-14 06:27:12
引自 http://www.cnblogs.com/jiu0821/p/4127382.html 1.指针与引用的区别: 指针是一块内存的地址值,而引用是一块内存的别名。 从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。 而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。 在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的: 指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。 而在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。