字节序
1.LE(Little Endian)
低字节存在低地址, 符合人类思维.
2.BE(Big Endian)
低字节粗在高地址, 最直观的.
3. 网络字节序, TCP/IP 中规定的一种字节序, 采用 BE
例: 0x01020304
- 4000 4001 4001 4003
- 04 03 02 01 LE
- 01 02 03 04 BE
ARM 寻址的寻址方式
1. 立即寻址
立即寻址的操作数由指令的地址部分直接给出.
ADD R4,R3,#1 ; R4 := R3 + 1;
2. 寄存器寻址
操作数是通用寄存器中的数值.
ADD R0,R1,R2 ; R0 : = R1+ R2;
3. 间接寻址
寄存器中的值是操作数的地址.
ADD R0,R1,[R2] ; R0 := R1+[R2];
4. 基址寻址
基址寻址指将指令中给出的基址寄存器内容与偏移量 disp 相加, 其结果作为有效地址, 从存储器中读出操作数. ARM 的基址寻址包括前索引寻址和后索引寻址两种方式.
4.1 前索引寻址是将基址与偏移量相加作为传送数据的地址. 如在寻址中使用 "!" 符号, 传送数据后自动将数据的地址传送给基址寄存器, 否则不修改基址寄存器.
LDR R0,[R1,#4] ;R0←[R1+4];
LDR R0,[R1,#4]!;R0←[R1+4],R1←R1+4;
4.2 后索引寻址是将基址作为传送数据的地址, 传送数据后自动将基址的内容与偏移量相加传送给基址寄存器.
LDR R0,[R1] ,#4 ;R0←[R1],R1←R1+4;
5. 相对寻址
程序计数器 PC 的内容与指令中的地址码部分给出的位 移量 disp 之和作为操作数的有效地址. 相对寻址是基址寻址的一种变通, 其基地址由程序计 数器 PC 提供, 指令中的地址码字段作为位移量, 两者相加后得到操作数的有效地址.
6. 移位寻址
移位寻址方式是 ARM 指令集特有的. 移位寻址方式包括 寄存器型移位寻址和立即数型移位寻址.
ADD R3,R2,R1,LSL #4 ; R3 := R2+2^4*R1;
☆ASL ( Arithmetic Shift Left)和 LSL 是等价的, 可以任 意互换
☆ASR (Arithmetic Shift Right)算术右移. 对象为符号数;
☆LSL (Logical Shift Left) 逻辑左移;
☆LSR (Logical Shift Right) 逻辑右移;
☆Ruby on Rails (Rotate Right) 循环右移;
☆RRX (Rotate Right with extend)扩展循环右移.
7. 多寄存器寻址
多寄存器寻址是一次向几个寄存器传送的值, 允许一条指令向 16 个寄存器的任何子集 (或所有 16 个寄存器) 传送数据.
LDMIA R1,{R0,R2,R5} ;R0 := [R1] ; R2 := [R1+4] ; R5 := [R1+8]
8. 堆栈寻址
堆栈寻址是隐含的, 这种寻址方式使用寄存器 SP 指向一 块存储器区域(堆栈). 堆栈指针所指定的存储单元为堆栈 的栈顶.
ARM 分别采用 LDMFD 和 STMFD 指令进行 pop 和 push 的操作.
使用堆栈操作有四个, 分别表示为:
FD 表示满递减堆栈; ED 表示空递减堆栈; FA 表示满递增堆栈; EA 表示空递增堆栈;
STMFD SP!,{R1,R3-R7,LR} ; 将寄存器的数据保存到堆栈, 存储器指针在保存后自动增加
LDMFD SP!,{R1,R3-R7,LR} ; 将堆栈的数据恢复到寄存器
- TCP/IP & OSI
- TCP/IP
应用层(Application layer):Telnet,FTP,SMTP,SNMP,http
传输层(Transport layer):TCP ,UDP,UGP
网络层(Internet layer): IP,ICMP,IGMP
链路层(Link layer):ARP,RARP
OSI
应用层(Application layer):FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP,ftp(用户接口, 应用程序, 网关)
表示层(Presentation layer):TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,html(数据的表示, 压缩和加密, 网关)
会话层(Session layer):RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP(会话的建立和结束, 网关)
传输层(Transport layer):TCP,UDP,SPX(端到端控制, 网关)
网络层(Network layer):IP,IPX,AppleTalk,DDP(路由, 寻址, 路由器)
数据链路层(Data link layer):FrameRelay,HDLC,PPP,IEEE802.3/802.2,ATM,IEEE802.5/802.2(保证误差错的数据链路, 交换机, 网桥, 网卡)
物理层(Physical layer):EIA/TIA-232,EIA/TIA-499,V.35,RJ45,Ethernet,802.3,802.5,FDDI,NRZI,NRZ,B8ZS(传输比特流, 集线器, 中继器)
网络的三种交换技术
计算机网络交换技术 (Computer network switching technology) 指的是对数据交换进行实施的技术, 它包含线路交换技术, 报文交换技术, 分组交换技术.
三种交换的主要特点:
电路交换: 整个报文从源点到达终点, 不中断, 像在一条管道中传输
报文交换: 整个报文传输到相邻节点, 存储下来, 再根据转发表, 转发到下一个节点
分组交换: 将报文分成多个分组, 再将单个分组传送到相邻的节点, 存储下来, 再根据转发表进行转发到笑一个节点
电路交换(circuit switching)
电路交换要求必须首先在通信双方之间建立连接通道. 在连接建立成功之后, 双方的通信活动才能开始. 通信双方需要传递的信息都是通过已经建立好的连接来进行传递的, 并且这个连接也将一直被维持到双方的通信结束. 在某次通信活动的整个过程中, 该连接将始终占用着连接建立开始时通信系统分配给它的资源.
线路交换的特点是: 数据传输可靠, 迅速, 有序, 但线路利用率低, 浪费严重, 不适合计算机网络.
报文交换(Message Swintching)
报文交换采用 "存储 - 转发" 方式进行传送, 无需事先建立线路, 事后更无需拆除.
优点: 线路利用率高, 故障的影响小, 可以实现多目的报文;
缺点: 延迟时间长且不定, 对中间节点的要求高, 通信不可靠, 失序等, 不适合计算机网络.
分组交换(Packet Switching)
将用户通信的数据划分成多个更小的等长数据段, 在每个数据段的前面加上必要的控制信息作为数据段的首部, 每个带有首部的数据段就构成了一个分组. 首部指明了该分组发送的地址, 当交换机收到分组之后, 将根据首部中的地址信息将分组转发到目的地, 这个过程就是分组交换.
RSA 算法
DH 密钥协商算法
Alice 的私钥 a,Bob 的私钥 b;
Alice 和 Bob 约定使用一个模 p = 23 和 g = 7
Alice 选择一个保密的整数 a = 4 作为私钥, 计算出公钥 $ A = g^a mod p$, 将公钥 A 发送给 Bob;
$ A = 7^4 mod 23 = 9 $
Bob 选在一个保密的整数 b = 5, 计算出公钥 $ B = g^b mod p $, 将公钥 B 发送给 Alice;
$ B = 7^5 mod 23 = 17 $
Alice 计算出共享密钥 $ s = B^a mod p $
$ s = 17^4 mod 23 = 8 $
Bob 计算共享密钥 $ s = A^b mod p $
$ s = 9^5 mod 23 = 8 $
Alice 和 Bob 现在就共享一个密钥(s = 8)
$ A^b mod p = g^{ab} mod p = g^{ba} mod p = B^a mod p $
来源: http://www.bubuko.com/infodetail-3366708.html