304号测试初步了解

Posted by SGQ on March 30, 2020

虚拟机

定义:

虚拟机是借助于操作系统对物理机器的一种模拟,与之前了解的vmware或者virtual-box不同,也可以是针对具体语言所实现的虚拟机。例如在JVM或者CPython中,JAVA或者python源码会被编译成相关字节码,然后在对应虚拟机上运行,JVM或CPython会对这些字节码进行取指令,译码,执行,结果回写等操作,这些步骤和真实物理机器上的概念都很相似。相对应的二进制指令是在物理机器上运行,物理机器从内存中取指令,通过总线传输到CPU,然后译码、执行、结果存储。

虚拟机为了能够执行字节码,需要模拟出物理CPU能够执行的相关操作:

(1)将源码编译成VM所能执行的具体字节码。
(2)字节码格式(指令格式),例如三元式,树还是前缀波兰式。
(3)函数调用相关的栈结构,函数的入口,出口,返回以及如何传参。
(4)一个“指令指针”,指向下一条待执行的指令(内存中),对应物理机器的EIP。
(5)一个虚拟“CPU”-指令调度器,

基于栈的虚拟机,有JVM,CPython以及.Net CLR。基于寄存器的,有Dalvik以及Lua5.0。无论这两种方式实现机制如何,都要实现以下几点:

(1) 取指令,其中指令来源于内存
(2)译码,决定指令类型(执行何种操作)。另外译码的过程要包  括从内存中取操作数
(3) 执行。指令译码后,被虚拟机执行(其实最终都会借助于物理机资源)
 (4)存储计算结果

nc

定义:

nc是netcat的简写,它被设计为一个简单、可靠的网络工具。

作用:

 (1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口

(2)端口的扫描,nc可以作为client发起TCP或UDP连接

(3)机器之间传输文件

(4)机器之间网络测速   

常用参数:

(1) -l

用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。

(2) -p

老版本nc可能需要在端口号前加-p参数

(3) -s 

指定发送数据的源IP地址,适用于多网卡机 

(4) -u

 指定nc使用UDP协议,默认为TCP

(5) -v

输出交互或出错信息,新手调试时尤为有用

(6)-w

超时秒数,后面跟数字 

(7)-z

表示zero,表示扫描时不发送任何数据

想要连接到某处: nc [-options] hostname port[s] [ports] … 绑定端口等待连接: nc -l port [-options] [hostname] [port]


参考链接:

基于栈的虚拟机 VS 基于寄存器的虚拟机

虚拟机(基于栈还是基于寄存器)之谈

nc命令用法举例

nc命令

Linux nc命令用法收集