对应Windows的dll文件,是linux系统(尤其是安卓开发经常用到)的二进制文件,也即ELF文件。Android中的so文件用作C\C++编译出来的动态链接库,多用于NDK开发中。而jar则是静态库文件。(.a也是静态库)
UPnP通用即插即用(Universal Plug and Play)的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。使用UPnP协议不需要设备驱动程序,它可以运行在目前几乎所有的操作系统平台上,使得在办公室、家庭和其他公共场所方便地构建设备互联互通成为可能。
简单来理解的话,UPnP 是一种设备间通信协议,功能是建立设备和 NAT 网关的端口映射,目的是希望接入 Internet 的任意两个设备在 LAN 下可以相互通信。
UPnP数据包可以在无需用户交互的情况下,无障碍的通过路由器或防火墙。路由器或防火墙支持NAT。
Web上可用的每种资源,包括HTML文档、图像、视频片段、程序等,由一个通用资源标志符(Universal Resource Identifier)进行定位。
URL是URI命名机制的一个子集,URL是Uniform Resource Location的缩写,译为“统一资源定位符”。形象点说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
NAT的作用是把内网的私有地址,转化成外网的公有地址。使得内网上的(被设置为私有IP地址的)主机可以访问Internet。
NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
宽带分享:这是 NAT 主机的最大功能。
安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。
NAT可以分为Basic NAT和PAT:
是设计用于替代ipv4的下一代ip协议,ipv6不仅能解决网络地址资源数量的问题,而且解决了多种接入设备连入互联网的障碍。
ipv6的地址长度为128位,位ipv4地址长度的4倍。不再使用ipv4的点分十进制,而是采用十六进制表示。
例如:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
为了实现ipv4和ipv6互通,ipv4将会嵌入ipv6中,地址常表示为:X:X:X:X:X:X:d.d.d.d。
ipv6优点:拥有更大地址空间;使用更小的路由表,提高路由转发效率;增强了组播和对流的控制,为服务质量控制提供了良好的网络平台;对自动配置的支持;具有更高的安全性,用户可以对网络层的数据进行加密并对ip报文进行校验;允许协议扩充;更好的头部格式,加速路由选择过程;
DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。
在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。
BitTorrent可以选用DHT作为分散式Tracker。
DHT网络爬虫基于DHT网络构建了一个P2P资源搜索引擎。
实现DHT的技术/算法有很多种,常用的有:CAN,Chord,Pastry,Tapestry等。
Go是Google开发的一门编程语言,且是静态强类型语言,是区别于解析型语言的编译型语言。
解析型语言——源代码是先翻译为中间代码,然后由解析器对代码进行解释执行。
编译型语言——源代码编译生成机器语言,然后由机器直接执行机器码即可执行。
语言特性:跨平台的编译型语言;语法接近C;提供管道(channel),切片(slice)、并发(routine)等实现;有垃圾回收的机制;支持面向对象和面向过程的编程模式。
语言特色:编程模式比较简单,没有复杂的设计模式;全部源码编译到一个文件,编译速度很快;最新版本也有动态库形式,对跨语言调用的支撑更到位;开源框架比较成熟,新崛起的互联网公司都在用——如滴滴,uber,百度,阿里巴巴,oppo,vivo等;微服务的开发模式下Go语言是新宠。
擅长领域:服务开发,web的api开发,分布式服务集群的开发;容器docker是go开源的产品,k8s等这些都是基于go语言的;对高并发、高性能的系统和服务支撑,Go语言对比其他语言有更快的开发速度,更高的开发效率;独有的语言特性和设计模式routine,channel,sync包支撑了海量并行的支持。
Fuchsia,是由Google公司开发的继Android和Chrome OS之后的第三个系统。不同于安卓使用的Linux内核,采用的比较新的Zircon的内核。
Magenta 将使用谷歌开发的TensorFlow机器学习引擎(该引擎已于2015年底开源),从而判断人工智能系统能否通过训练制作原创音乐、绘画或视频。
Cygwin是一个在windows平台上运行的类UNIX模拟环境, 对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。
Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。
都是C/C++的编译工具(不能说是纯粹的编译器,本质实际上是一种辅助编译的驱动器)。
后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序。使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL。
UNIX及UNIX-like下的调试工具。在linux程序调成中gdb是最常用的工具。
JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac(包括java基础类库),还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
相当于IOS下的apk文件。
Xamarin Studio是一个用C#语言开发跨平台应用的集成开发环境,它和iOS以及Android SDK紧密整合。Xamarin简化了针对多种平台的应用开发,包括iOS、Android、Windows Phone和Mac App。
Xamarin由许多著名的开源社区开发者创立和参与,而且也是Mono项目的主导者。mono是C#与·NET框架的开源、跨平台实现。
Xamarin是面向移动应用开发的跨平台框架,可以减少移植所用的时间,把更多的时间用在编码上。
用C#对应用或游戏进行编码,Xamarin会将代码与所有三个平台上的本机API 和界面设计关联起来,然后再部署到 iOS、Android和Windows应用。
使用xamarin.android+visual studio可以配置Android开发环境。
Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。支持 C语言、C++、Fortran、Objective-C、Objective-C++、Java、AppleScript、Python以及Ruby。
C/C++的交叉编译器。
交叉编译,在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,简单地说,就是在一个平台上生成另一个平台上的可执行代码。
进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的ARM 平台,其一般的静态存储空间大概是16到32MB,而CPU的主频大概在100MHz到500MHz之间。这种情况下,在ARM平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力很强、存储控件足够的主机平台上(比如PC上)编译出针对其他平台的可执行程序。
MinGW(Minimalist GNU For Windows)是个精简的Windows平台C/C++、ADA及Fortran编译器,相比Cygwin而言,体积要小很多,使用较为方便。
MinGW最大的特点就是编译出来的可执行文件能够独立在Windows上运行。
MinGW是修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式;CyGwin是修改库,让window提供一个类似unix提供的库,他们对程序的接口如同unix一样,而这些库,当然是由win32的API实现的。
MinGW的组成:
• 编译器(支持C、C++、ADA和Fortran)
• GNU工具
• mingw-get(用于Windows平台安装和部署MinGW和MSYS的命令行安装器)
• mingw-get-inst(用于GUI打包)
GNU 认为任何软件都应当以自由软件发布。自由软件的用户可以自主控制自己的计算。非自由软件使用户受制于软件开发者。
GNU操作系统是类Unix 操作系统,由一系列应用程序、系统库和开发工具构成的软件集合 , 并加上用于资源分配和硬件管理的内核。
面向C++的集成开发环境(IDE),功能如源代码编辑、单步调试、项目文件管理
DreamSpark“点亮梦想”计划是微软面向学生免费提供专业级正版软件资源的长期项目,旨在帮助中国数百万的大学生免费体验微软软件开发及设计工具,如Windows Server、Visual Studio Community 2015、2017、SQL Server、Xamarin。
2016年9月正式更名为Microsoft Imagine,将与一年一度的微软“创新杯(Imagine Cup)”齐名。
Windows Server是微软在2003年4月24日推出的Windows的服务器操作系统。
SQL Server 是Microsoft 公司推出的关系型数据库管理系统。
Windows的Hyper-V提供的比VHD更强大的虚拟硬盘。
coLinux是一种可以让Linux运行于Windows的解决方案。不同于虚拟机、MinGW、Cygwin,coLinux使用了一种特殊的方法,使其可以与Win交替使用CPU,真正的让Linux内核跑在Win上。Wine可以在绝大多数的Unix/Linux版本下工作,但其现在仍不能完全运行所有的Windows程序。
它是一个Windows兼容层,通俗的讲,就是一个Windows模拟器。Wine不是像虚拟机或者模拟器一样模仿内部的 Windows逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用
SVN是一个开放源代码的版本控制系统,大多数开发中的开源项目以及大量的商业项目都使用 Subversion 来管理源码。
Subversion属于集中式的版本控制系统,Git属于(开源的)分布式的版本控制系统。Git在本地磁盘上就保存着所有有关当前项目的历史更新,并且Git中的绝大多数操作都只需要访问本地文件和资源,不用连网,所以处理起来速度飞快。用SVN的话,没有网络或者断开VPN你就无法做任何事情。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个轻量、可移植的容器中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
我们用的传统虚拟机如 VMware、VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
一个完整的Docker有以下几个部分组成:
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
RAID中文为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
在用户看起来,组成的磁盘组就像是一个硬盘,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。
ZFS(Zettabyte File System)作为一个全新的文件系统,全面抛弃传统File System + Volume Manager +Storage(文件系统+卷管理+存储)的架构,所有的存储设备是通过ZFS 池进行管理,只要把各种存储设备加入同一个ZFS 池,大家就可以轻松的在这个ZFS 池管理配置文件系统。
ZFS 包括一系列具有分层结构的存储元素,其中既有物理存储元素,又有逻辑存储元素。所有这些元素都以有助于方便管理的方式相关联。
通信协议有同步和异步之分。同步通信协议,比如SOAP;异步通信协议,比如MSMQ,是一种消息队列。
异步协议通常需要一个服务器负责缓存、交换或路由,这种模式松散耦合的分布式程序之间的通信,比如邮件系统。
AMQP(Advanced Message Queuing Protocol)是一个异步消息协议规范,是一个消息中间件协议。
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,消费者、生产者不必同一时间保持连接。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信。
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的and is built on the Open Telecom Platform(OTP) framework for clustering and failover.
https://www.cnblogs.com/ysocean/p/9240877.html
说到消息通信,可能我们首先会想到的是邮箱,QQ,微信,短信等等这些通信方式,这些通信方式都有发送者,接收者,还有一个中间存储离线消息的容器。但是这些通信方式和我们要讲的 RabbitMQ 的通信模型是不一样的,比如和邮件的通信方式相比,邮件服务器基于 POP3/SMTP 协议,通信双方需要明确指定,并且发送的邮件内容有固定的结构。而 RabbitMQ 服务器基于 AMQP 协议,这个协议是不需要明确指定发送方和接收方的,而且发送的消息也没有固定的结构,甚至可以直接存储二进制数据,并且和邮件服务器一样,也能存储离线消息,最关键的是 RabbitMQ 既能够以一对一的方式进行路由,还能够以一对多的方式进行广播。
Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的服务器进程。
Virtual Host: 类似于权限控制组的虚拟概念,可以有若干个Exchange和Queue,权限控制的最小粒度是Virtual Host。
Producer: 消息生产者。
Consumer: 消息消费者。
Queue: 存储消息的队列容器。
Message: 消费者真正需要的消息数据。
Connection: 一个tcp连接。
Channel: 一个管道连接,是tcp连接内的连接(broker),使用现有的TCP连接进行数据传输。
Exchange: 消息路由,生产者发送消息并不是直接发送到队列中的而是先到指定方式路由中,然后由路由根据路由key绑定的队列发送到指定队列中(某种算法求出对应的queue,如对消息取模)。
Binding:对路由与队列容器的绑定关系。
Routing key: 路由键,主要用来寻找队列queue。
Users: RabbitMQ服务是基于C/S模式,通常连接都需要认证,就是设置密码。
“打包党”是指那些通过破解互联网上最热门的应用,拆包后插入一些自己想要分发的内容(比如加入病毒、广告链或吸费指令等恶意程序),再重新拼装将这些“二次打包”的盗版软件重新发布到应用市场中去,以此牟利的个人或公司。主要活跃于android应用市场。
.NET 框架是用于构建、开发以及运行 Web Service 和 Web 应用程序的公共环境。
从技术的角度,一个.NET应用是一个运行于.NET Framework之上的应用程序。(更精确的说,一个.NET应用是一个使用.NET Framework类库来编写,并运行于公共语言运行时Common Language Runtime(CLR)之上的应用程序。)
只要是.NET支持的编程语言,开发者就可以通过.NET平台提供的工具服务和框架支持便捷的开发应用程序。C#就是为宣传.NET而创立的,它直接集成于Visual Studio .NET中。
跨语言:即只要是面向.NET平台的编程语言((C#、Visual Basic、C++/CLI、Eiffel、F#、IronPython、IronRuby、PowerBuilder、Visual COBOL 以及 Windows PowerShell)),用其中一种语言编写的类型可以无缝地用在另一种语言编写的应用程序中的互操作性。
跨平台:一次编译,不需要任何代码修改,应用程序就可以运行在任意有.NET框架实现的平台上,即代码不依赖于操作系统,也不依赖硬件环境。
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
Short Message Service是一种存储和转发服务。也就是说,短消息并不是直接从发送人发送到接收人,而始终通过短信服务中心进行转发。如果接收人处于未连接状态(可能电话已关闭),则消息将在接收人再次连接时发送。
在如今众多的黑客技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一。Sniffer工具实际上就是一个网络上的抓包工具,同时还可以对抓到的包进行分析。由于在共享式的网络中,信息包是会广播到网络中所有主机的网络接口,只不过在没有使用sniffer工具之前,主机的网络设备会判断该信息包是否应该接收,这样它就会抛弃不应该接收的信息包,sniffer工具却使主机的网络设备接收所有到达的信息包,这样就达到了网络监听的效果。其实,sniffer工具既可以适合于黑客的使用,也同样有利于网络管理员和网络程序员。对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下降的时候,可以通过sniffer工具来分析原因,找出造成网络阻塞的来源。对于网络程序员来说,通过sniffer工具来调试程序。
网络嗅探的原理是这样的:当我们向网络上的其它计算机发送信息时(它们会被打包成帧),信息(帧)会被分组传送到各个网络节点,而帧中的包头具有目的网络节点的地址用以鉴别是否为目的地,如果匹配就接收这些分组,不匹配就丢弃这些包,但是无论丢弃还是接收都是通过网络适配器(例如网卡)来控制的,因此我们只要在网络适配器上安装具有监测这些帧的软件,再把这些数据记录下来就达到到窃取数据的目的
移动和嵌入式环境使用ARM架构。ARM7是冯诺依曼结构,32位,无MMU。ARM9、ARM11是哈佛结构,大多带内存管理器。
ARM公司在经典处理器ARM11以后的产品改用Cortex命名,并分成A、R和M三类,区分各种不同的市场。
Inte/AMD和ARM处理器的第一个区别是,前者使用复杂指令集(CISC),而后者使用精简指令集(RISC)。
RISC(Reduced instruction Set Computing):精简指令集运算,包括ARM架构、MIPS架构、IBM的PowerPC架构、SUN的Ultra SPARC架构。
复杂指令集是一种伴随着计算机诞生便存在的一种指令集。其拥有较强的处理高级语言的能力,对于提高计算机性能有一定好处。而日趋复杂的指令系统不仅带来的效率的低下,还致使系统结构的复杂性增加,这种复杂性也将导致了CISC的通用性不佳。
在CISC微处理器程序的各条指令相互串联执行,指令操作也需要串行执行,按照这种方式来进行任务执行,其控制当然十分简单,但计算机的整体利用率却被拖了后腿,执行速度相对偏慢。这也是CISC架构为中低档服务器所采用的原因之一。
小巧灵活的x86服务器在市场上应用十分广泛,互联网以及局域网内的文件、打印、通讯、web、电子邮件、数据库以及应用服务等多个领域都可以一展身手。
x86服务器最大的特色在于可以兼容Windows操作系统,全部都采用了Intel的CPU。而Intel的x86服务器也可以分为两代,最初采用的 80x86系列在发布了产品80486后,Intel对该系列产品进行了重新命名并注册,这也就是现在Intel的Pentium系列,当然,这个系列在中国还有个更响亮的名字,即奔腾系列。
在PC领域,Intel的CPU一枝独秀。而在移动端就当属ARM了。ARM全称为Advanced RISC Machine,也就是进阶精简指令集机器。ARM是RISC微处理器的代表作之一,其广泛的在嵌入式系统设计中被使用。而且ARM处理器最大的特点在于节能,这也是其在移动通信领域无人能敌的原因之一。
ARM架构:是一个精简指令集处理器架构,其广泛地应用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域。
ARM处理器的特点:体积小、低功耗、低成本、高性能。
MIPS架构:无内部互锁流水级的微处理器,包含大量的寄存器,能提供每平方毫米性能的当今Soc设计中的最低功耗。龙芯处理器用的就是MIPS架构。
X86架构:程序的各条指令为顺序执行,优点是控制简单,缺点是计算机各个部分的利用率不高,执行速度慢。
RISC-V:开源指令集,该指令集设计考虑了快速、小型、低功耗的现实情况来做,没有对特定的微架构做过度的设计。
RISC-V特点:2010年发行,完全开源、架构简单、易于移植、模块化设计、完整的工具链、开源实现。
SkyEye是一个开源软件项目,SkyEye的目标是在Linux和Windows操作系统里提供一个完全的仿真环境。SkyEye仿真环境相当于一个嵌入式计算机系统,你可以在SkyEye里运行一些嵌入式Linux操作系统,如ARMLinux,uClinux,uc/OS-II(ucos-ii)等,并能分析和调试它们的源代码。
SkyEye is a multi-architecture(多架构), multi-core, and highly scalable(可拓展) hardware simulation platform.
SkyEye supports the system structure of ARM, Blackfin, Coldfire, PowerPC, MIPS, SPARC and x86.
QEMU是一套以GPL许可证分发源码的纯软件实现的模拟处理器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机(guest OS),虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。
正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成虚拟化工作,因为 KVM 是硬件辅助的虚拟化技术,主要负责比较繁琐的 CPU 和内存虚拟化,而 Qemu 则负责 I/O 虚拟化,两者合作各自发挥自身的优势,相得益彰。
Android Development tools的简称。即Android开发工具。ADT为Eclipse的插件。在Eclipse和SDK之间起了一个桥梁的作用。(类似的还有CDT)
Soft Development Kit的简称。软件开发工具包。在Android中,它为开发者提供了库文件以及其它开发所用到的工具。
Java Native Interface,即 Java本地接口。使得Java 与 本地其他类型语言(如C、C++)交互,即在 Java代码里调用 C、C++等语言的代码 或 C、C++代码调用 Java 代码。
Native Development Kit,是 Android的一个工具开发包。NDK是属于 Android 的,与Java并无直接关系(JNI是java的)。
作用:快速开发C、C++的动态库,并自动将so和应用一起打包成 APK 即可通过 NDK在 Android中 使用 JNI与本地代码(如C、C++)交互。
好处:
(1).保护代码。Java层代码很容易被反编译,而C/C++库反编译难度很大。
(2).可以方便的使用现存的开源库。大部分现存的开源库都是用C/C++代码编写的。
(3).提高程序的执行效率。将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。
(4).便于移植。用C/C++写的库可以方便的在其他的嵌入式平台上再次使用。
– AMPS(Advanced Mobile Phone System)
– in England, where it was called TACS,
– and in Japan, where it was called MCS-L1
所谓蜂窝移动电话是指服务区划分为若干个彼此相邻的小区,每个小区设立一个基站的网络结构。由于每个小区呈正六边形,又彼此邻接,从整体上看,形状酷似蜂窝,所以人们称它为“蜂窝”网。用若干蜂窝状小区覆盖整个服务区的大、中容量移动电话系统就叫做蜂窝移动电话系统,简称蜂窝移动电话。
蜂窝移动电话最大的好处是频率可以重复使用。大家或许知道,在我们使用移动电话手机进行通信时,每个人都要占用一个信道,也就是说,系统要拿出一个信道供你使用。同时通话的人多了,有限的信道就可能不够使用,于是便会出现通信阻塞的现象。采用蜂窝结构就可以使用同一组频率在若干个相隔一定距离的小区重复使用,从而达到节省频率资源的目的。譬如,我们将一个城市分成72个小区,每12个小区组成一个小区群。让他们共同使用300个频道。那么,我们就可以将300个频道分成12个频道组,每个组25个频道,第一个小区群的1号小区使用第1组频道,第一个小区群的2号小区使用第2组频道,以此类推。经过适当安排,不同小区群的相同编号小区的频道组是可以重复使用的。尽管这些小区基站所使用的无线电频率相同,但由于他们彼此相隔较远,而电波作用范围有限,彼此不会造成干扰。这样,一组频率就可重复使用6次,原本300个频道只能供300个用户同时通话,却可同时供1800个用户同时通话了。
蜂窝概念中包括几个重要的部分是移动通信发展的基础。
全球移动通信系统(Global System for Mobile Communications)
GSM 较之它以前的标准最大的不同是它的信令和语音信道都是数字式的,因此GSM被看作是第二代(2G)移动电话系统。而1G是模拟信号。
以诺基亚为代表的GSM欧洲标准推出了短信功能击败了以摩托罗拉为代表的CDMA美国标准。
GSM为了安全使用多种加密算法。A5/1和A5/2两种串流密码用于保证在空中语音的保密性。
GSM系统有几项重要特点:防盗拷能力佳、网络容量大、手机号码资源丰富、通话清晰、稳定性强不易受干扰、信息灵敏、通话死角少、手机耗电量低、机卡分离。
GSM系统包括 GSM 900:900MHz、GSM1800:1800MHz及GSM1900:1900MHz等几个频段。
GSM900:上行(MHz)890-915;下行(MHz)935-960
GSM900E :上行(MHz)880-915;下行(MHz)925-960
GSM1800 :上行(MHz)1710-1785;下行(MHz)1805-1880
GSM1900 :上行(MHz)1850-1910;下行(MHz)1930-1990
注:上行是发送,下行是接收
GSM是电路交换,适合语音,而不是数据。
FDM(频分复用Frequency Division Multiplexing)是将整个传输频带划分为若干个频率通道,每个用 户占用一个通道。频率通道之间留有防护频带;
TDM(时分复用Time Division Multiplexing)是将时间分割成小的时间片,每个时间片又分为若干个通道(时隙),每个用户占用一个通道传输数据。
GSM: GPRS/EDGE
2G: 2.5G/2.75G
General Packet Radio Service offers a theoretical maximum transfer speed of 50 kbit/s (40 kbit/s in practice).
Enhanced Data Rates for GSM Evolution, theoretical maximum transfer speed of 1 Mbit/s (500 kbit/s in practice).
码分多址Code Division Multiple Access
CDMA通信系统中,不同用户传输信息所用的信号不是靠频率不同或时隙不同来区分,而是用各自不同的编码序列来区分,或者说,靠信号的不同波形来区分。如果从频域或时域来观察,多个CDMA信号是互相重叠的。接收机用相关器可以在多个CDMA信号中选出其中使用预定码型的信号。其它使用不同码型的信号因为和接收机本地产生的码型不同而不能被解调。
国际上最具代表性的3G技术标准有三种,分别是TD-SCDMA、WCDMA和CDMA2000。其中TD-SCDMA属于时分双工(TDD)模式,是由中国提出的3G技术标准;而WCDMA和CDMA2000属于频分双工(FDD)模式,WCDMA技术标准由欧洲和日本提出,CDMA2000技术标准由美国提出。
• IMT2000:3G技术指导性文件
• 3G两个选项
UMTS (Universal Mobile Telecommunications Service)
W-CDMA, TD-SCDMA
CDMA2000
• 2.9G: EDGE combined with the GPRS 2.5G technology is called EGPRS
速度:
• IMT-2000: a minimum data rate of 2Mbit/s for stationary or walking users, and 348kbit/s in a moving vehicle.
• 3G provide transfer rate of at least 0.2 Mbit/s.
• 3.5G and 3.75G provide several Mbit/s to smartphones and laptop.
应用:
It can be applied to wireless voice telephony, wireless mobile/fixed Internet access, video calls and mobile TV.
Unlike 3G(which use both circuit and packet switched), 4G is based on packet switching only.
As of June 2009, Verizon has posted Specifications that require any 4G devices to support IPv6.
One of the key technologies for 4G is Software-defined radio(SDR).
new access schemes like Orthogonal FDMA(正交频分多址).
两种标准:
速度:
Have peak data rates of up to approximately 100Mbit/s for high mobility such as mobile access and up to approximately 1Gbit/s for low mobility such as nomadic/local wireless access.
应用:
Potential and current applications include amended mobile web access, IP telephony, gaming services, high-definition mobile TV, video conferencing, and 3D television.
It succeeds the 4G(LTE-A, WiMax2), 3G(UMTS, LTE) and 2G(GSM) systems.
The first phase of 5G specifications in Release-15 will be completed by April 2019 to accommodate the early commercial deployment.
6月6日,中国电信、中国移动、中国联通、中国广电获得工信部发放的5G牌照。
5G三大特征:大带宽,低时延,万物互联。
The ITU(国际电信联盟) IMT-2020 specification demands speeds up to 20Gbit/s, achievable with wide channel bandwidths and massive MIMO.
Another advantage is lower network latency (faster response time), below 1ms (millisecond), compared with 30 - 70 ms for 4G.
5G networks achieve these higher data rates by using higher frequency radio waves, in or near the millimeter wave band from 30 to 300GHz,
whereas previous cellular networks used frequencies in the microwave band between 700MHz and 3GHz.
3GPP《5G系统总体架构标准(V1.0.0)》确定把SBA作为5G核心网的统一/唯一基础架构。“基于服务的架构”。 5G的SBA架构,由中国移动牵头并联合26家公司(14家运营商+12家网络设备商)提出
5G关键无线技术:大规模天线、超密集组网、灵活双工、全双工、频谱共享、先进调制编码、终端直通技术、全频谱接入、新型多址、新型多载波。
SDR:通用硬件+软件可升级。
MIMO:多天线发射、多天线接收+提升信道容量。
CCFD:相同频率同时收发电磁波信号,提高频谱使用效率。
OFDM:正交频分复用。
应用:
智能驾驶、物联网、智慧城市、虚拟现实、实时的安全监控、远程手术和治疗、3D视频
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;
UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。
TCP:“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。
Socket不是协议,是对TCP的一种实现接口(API)。
随着IP网向多业务网发展,尤其是目前IP电话、IP视频会议等业务的发展,在IP网中传送信令信息成为必然。目前IP网中信令消息的交换通常是使用TCP或UDP完成,但是这两个协议都不能满足电信运营网中信令承载的要求。
为适应IP网成为电信运营核心网的发展趋势,IETF 的信令传输工作组(SIGTRAN)一直在研究和制定IP网新一代的传输协议,并在IETF RFC 2960中定义了流控制传输协议(SCTP,Stream Control Transmission Protocol)。SCTP是面向连接的可靠传送协议,它向上层应用提供了下列服务:
· 应用数据的无错误无重复的可靠传输;
· 根据检测到的MTU长度进行数据包分段处理,避免IP层的分段;
· 在多个流间的用户消息有序递交,及单用户消息按到达顺序递交的选项;
· 通过支持关联的多宿主机特性,实现网络级容错。
SCTP是为传输信令业务流而制定的,它本身所具有的、优于TCP的一些先进协议机制,如选择性重传、无序递交和支持多种网络特性等,使得SCTP能够在一定程度上满足高性能传输的需求。而且,SCTP采用了类同TCP的流量控制机制,不存在类似基于UDP的实时媒体流对TCP性能造成的劣化干扰问题和公平性问题。因此,SCTP将有可能取代TCP,成为下一代IP网上面向连接的可靠传送层协议。
应用层负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:Telnet远程登录、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)、FTP(File Transfer Protocol,文件传输协议)、HTTP(Hyper Text Transfer Protocol,超文本传输协议)等。
简单的说,SSH是一种网络协议,主要用于客户端与远程主机的安全链接和交互。SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现,比如自由软件OpenSSH。
SSH是 struts+spring+hibernate的一个集成框架。Struts:控制逻辑关系。Spring:解耦。Hibernate:操作数据库。
相比传统的账户密码登录,SSH的加密登录提供了一种更便捷安全的登录方式。SSH之所以能够保证安全,原因在于它采用了公钥加密。
整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。
常用命令:
• ssh user@host 远程登陆,默认端口22,可通过-p修改
• ssh-keygen 生成公钥和私钥
• ssh-copy-id user@host 将公钥传到远程主机host上
• scp 远程拷贝文件
• ssh -D XXXX user@host 绑定本地端口,数据通过该端口(加密)传送给远程host
• ssh -L 2121:host2:21 host3 本地端口转发,指定SSH绑定本地端口2121,然后指定host3将所有的数据,转发到目标主机host2的21端口
• ssh -R 2121:host2:21 host1 远程端口转发,让host1通过它自己的2121端口,将所有数据经由本地主机,转发到host2的21端口。
PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。较早的版本仅支持Windows平台,在最近的版本中开始支持各类Unix平台,并打算移植至Mac OS X上。
Putty是一个免费的Telnet、SSH和rlogin客户端,但是功能丝毫不逊色于商业的Telnet类工具。
远程桌面协议(RDP, Remote Desktop Protocol)是一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电脑(服务器端或称“远程电脑”)。
X-Windows
X-window 是UNIX中功能强大的图形用户接口(GUI),是基于客户-服务器的一种应用技术. 表现为应用可运行在一个功能强大,易与维护的服务器上,而屏幕的输出则显示在另一个工作站上。
VNC(Virtual Network Computing)是使用RFB(Remote Frame Buffer protocol)协议的图形桌面共享系统(XWindows,XRDP则是RDP应用),可以达到远程控制桌面的效果,也是主流Linux发行版内置的图形化远程工具之一。
一般情况下,如果需要登陆远程Linux系统,我们会使用ssh/telnet来完成,如果需要登陆到远程Linux系统的桌面环境,我们可能会使用VNC。
简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。SOAP协议可以简单地理解为:SOAP=RPC+HTTP+XML,即采用HTTP作为通信协议,RPC(Remote Procedure Call Protocol 远程过程调用协议)作为一致性的调用途径,XML作为数据传送的格式,从而允许服务提供者和服务客户经过防火墙在Internet上进行通信交互。
SOAP与HTTP的区别:都是底层的通信协议,请求包的格式不同,soap包是XML格式,http纯文本格式;soap可以传递结构化的数据,http只能传输纯文本数据;
XML-RPC是一个远程过程调用(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送应答协议。
JSON-RPC is a RPC protocol built on JSON, as a replacement for XML-RPC or SOAP.
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,最初是JavaScript语言派生出来的,但目前已经语言中立。由于简洁、易读,目前它已经在很多场合取代了XML的地位。
规范:RFC 7159, ECMA-404
广泛应用在电信和计算机网络领域,描述数据的表示、编码、传输、解码等规范的标准,提供了一套正式、无歧义和精确的规则,以描述独立于特定计算机硬件的对象结构。
ASN.1 取得成功的一个主要原因是它与几个标准化编码规则相关,如基本编码规则(BER) -X.209 、规范编码规则(CER)、识别名编码规则(DER)、压缩编码规则(PER)和 XML编码规则(XER)。
Gob 是 Go 自己的以二进制形式序列化和反序列化程序数据的格式;可以在 encoding 包中找到。这种格式的数据简称为 Gob (即 Go binary 的缩写)。类似于 Python 的 “pickle” 和 Java 的 “Serialization”。
Gob 通常用于远程方法调用参数和结果的传输,以及应用程序和机器之间的数据传输。
它和 JSON 或 XML 有什么不同呢?Gob 特定地用于纯 Go 的环境中,例如,两个用 Go 写的服务之间的通信。这样的话服务可以被实现得更加高效和优化。 Gob 不是可外部定义,语言无关的编码方式。因此它的首选格式是二进制,而不是像 JSON 和 XML 那样的文本格式。 Gob 并不是一种不同于 Go 的语言,而是在编码和解码过程中用到了 Go 的反射。
Gob的优势之一:发送方的结构和接收方的结构并不需要完全一致。
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
SSL协议提供的服务主要有:
1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
2)加密数据以防止数据中途被窃取;
3)维护数据的完整性,确保数据在传输过程中不被改变。
SSL加密通道利用对称密钥算法(数据加密和解密时使用相同的密钥)对传输的数据进行加密。
HTTPS实际上应用了SSL作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL。
目前SSL已经成为网络中用来鉴别网站和网页浏览者身份,在浏览器使用者及Web服务器之间进行加密通信的全球化标准。SSL协议已被集成到大部分的浏览器中,如IE、Netscape、Firefox等。这就意味着几乎任意一台装有浏览器的计算机都支持SSL连接,不需要安装额外的客户端软件。
IRC(Internet Relay Chat的缩写,“因特网中继聊天”)是一种透过网络的即时聊天方式。其主要用于群体聊天,但同样也可以用于个人对个人的聊天。
Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备(包括虚拟器)进行交互。
• 使用 adb 命令管理设备
• adb 自身管理
• 获取设备硬件信息
• 管理设备 app
• 进行文件操作
e.g.
adb device: 查看当前连接的设备(devices获取信息更详细)
adb shell: 进入设备(必须只有一个处于连接)的操作系统
adb push 电脑文件路径 手机目标路径: 推送文件到设备
adb pull 手机文件路径 电脑目标路径: 从设备获取文件
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可用于在HTTP环境下传递较长的标识信息。
为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码应运而生。
特殊字符以及汉字等的编码。
对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。
例如Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。
又如,Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。
RFC3986文档对Url的编解码问题做出了详细的建议,指出了哪些字符需要被编码才不会引起Url语义的转变,以及对为什么这些字符需要编码做出了相应的解释。
HTTP compression即网页压缩,简单说就是web服务器和浏览器客户端传送数据时,将网页数据/客户端响应数据在发送给对方前先进行压缩再传输的一种方式。
使用网页压缩可以减少数据传输大小,从而减少数据在网上络上传输的时间消耗,提高web服务器和客户端之间的响应速度,改善客户体验。
HTTP compression是由web服务器和浏览器之间共同遵守的协议,也就是说web服务器和浏览器都必须支持该技术才能使用这个特性,目前主流的浏览器都是支持网页压缩的,包括ie、firefox、chrome、Opera 等。常见的web服务器apache,tomcat,iis 等.
HTTP compression支持的压缩格式是gzip或者deflate。
gzip用于UNⅨ系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
同时,gzip也是GNU自由软件的文件压缩程序,linux可以通过gzip命令进行文件压缩。
分两种:
• Network socket (远程IPC)(主要指它)
• Unix domain socket (本机IPC)
是应用层接口
JavaScript is a high-level, interpreted programming language that conforms to the ECMAScript specification.
JavaScript一种解释性脚本语言(代码不进行预编译),是一种动态类型、弱类型、基于原型、多泛型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加交互功能。
Alongside HTML and CSS, JavaScript is one of the three core technologies of the World Wide Web, enables interactive web pages.
组成:
• ECMAScript,描述了该语言的语法和基本对象。
• 文档对象模型(DOM),描述处理网页内容的方法和接口。
• 浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。
Node.js executes JavaScript code outside of a browser.
Node.js provide a collection of “modules” that handle various core functionality.
Node.js is primarily used to build network programs such as Web servers.
Node.js functions are non-blocking, while most PHP functions block until completion.
Node.js was built on the Google V8 JavaScript engine since it was open-sourced under the BSD license.
V8 compiles JavaScript directly to native machine code before executing it, instead of more traditional techniques such as interpreting bytecode or compiling the whole program to machine code and executing it from a filesystem.
• jQuery是一个JavaScript库
• jQuery极大地简化了JavaScript编程
• jQuery很容易学习
Bootstrap
Bootstrap,来自Twitter,基于 HTML、CSS、JAVASCRIPT,简洁灵活,使得 Web开发更加快捷,是受欢迎的前端框架。
是一种网络页面设计布局方法,其理念是集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。
Representational State Transfer
目前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的web服务开始采用REST风格设计和实现。
例如,Amazon.com提供接近REST风格的Web服务运行图书查询;雅虎提供的Web服务也是REST风格的。
REST是设计风格而不是标准。
REST通常基于使用HTTP,URI,和XML以及HTML,这些现有的广泛流行的协议和标准。
Google Protocol Buffer
– a method of serializing structured data
– widely used at Google for storing and interchanging all kinds of structured information.
– similar to the Apache Thrift (used by Facebook) or Microsoft Bond protocols, offering as well a concrete RPC protocol stack to use for defined services called gRPC.
一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。
它可以作为RabbitMQ的Message的数据格式进行传输,由于是结构化的数据,这样就极大的方便了Consumer的数据高效处理。当然了你可能说使用XML不也可以吗?与XML相比,ProtoBuf有以下优势:
• 简单
• size小了3-10倍
• 速度快20-100倍
• 易于编程
• 减小了语义的歧义
当然了,的确还有很多类似的技术,比如JSON,Thrift等等,和他们相比,ProtoBuf的优势或者劣势在哪里?简单说来,ProtoBuf就是简单,快。
ProtoBuf具有速度和空间的优势,使得它现在应用非常广泛。比如Hadoop就使用了它。
• It uses
HTTP/2 for transport,
Protocol Buffers as the interface description language,
• and provides features such as
authentication, bidirectional streaming and flow control, blocking or nonblocking bindings, and cancellation and timeouts.
• It generates cross-platform client and server bindings for many languages.
• 通信协议通常是两方的
• Proxy server是为了某种目的引入的第三方
通达,比如内网的存在、帆樯等
缓存和速度
安全、记帐/审计等
• Proxy在osi模型中位于会话层,在tcp/ip中位于应用层。
主要的功能有:
代理连接的是两个或者多个使用相同协议的端点;
网关连接的是两个或者多个不同协议的断点;网关是一种协议转换器;
Http Proxy
www连接请求就是采用的http协议,所以我们在浏览网页,下载数据时就是用http代理。它通常绑定在代理服务器的80、3128、8080等端口上。
HTTP代理服务器可以比作客户端与Web服务器之间的一个信息中转站,客户端发送的HTTP请求和Web服务器返回的HTTP响应通过代理服务器转发给对方。对于客户端浏览器而言,http代理服务器相当于服务器。而对于Web服务器而言,http代理服务器又担当了客户端的角色。
分为正向代理、反向代理两种。
SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。设计的最初目的是帮助授权用户突破防火墙的限制,获取普通用户不能访问的外部资源。考虑到几乎所有基于 TCP/IP 的应用软件都使用 socket 进行数据通信,为了便于应用软件的设计和开发,协议针对 socket 中几种经典操作进行了针对设计,并将其定名为 Socks。
目前,广泛使用的协议版本是 Socks4 和 Socks5,Socks5 较前一版本进行了大幅增强:增加对 UDP 协议的支持(之前只支持TCP),支持多种用户身份验证方式和通信加密方式,优化 Socks 代理服务器域名解析流程。
采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。Socks是个电路级的底层网关。
SOCKS工作在比HTTP代理更低的层次:Socks 代理与应用层代理、 HTTP 层代理不同,Socks 代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。所以,Socks代理比其他应用层代理要快得多。它通常绑定在代理服务器的1080端口上。
Shadowsocks是一种基于Socks5代理方式的网络数据加密传输包。
也是一种socks5代理,简单填写服务器地址、端口和密码即可使用。但如果没有稳定免费的服务器,搜索免费账号很麻烦。通常的做法是,买国外的VPS,自己搭建SSServer,然后使用Shadowsocks客户端连接。
最终可以借助它搭梯子科学上网(ShadowsocksR即SSR等实现)
Protocol Obfuscation(乱序协议加密,又称:迷惑协议)是一个特色功能,它可以让eMule(电骡)混淆或者“隐藏”它与其它客户或服务器进行通讯的协议。
开源项目Obfuscator-LLVM是一个带有混淆功能的编译器,是在编译阶段做混淆,防止源码被反编译出来。
是Dalvik Virtual Machine的缩写,即安卓虚拟机。
JVM与DVM区别:
ART(Android Runtime)是Android 4.4发布的,用来替换Dalvik虚拟,Android 4.4默认采用的还是DVM,系统会提供一个选项来开启ART。在Android 5.0时,默认采用ART,DVM从此退出历史舞台。
DVM中的应用每次运行时,字节码都需要通过即时编译器(JIT,just in time)转换为机器码,这会使得应用的运行效率降低。而在ART中,系统在安装应用时会进行一次预编译(AOT,ahead of time),将字节码预先编译成机器码并存储在本地,这样应用每次运行时就不需要执行编译了,运行效率也大大提升(但是安装时长增加)。
ART使用和DVM相同的字节码以及.dex文件,但不使用odex文件。
for backward compatibility, ART uses standard .dex files, while the .odex files are replaced with ELF executables.
SGML是一种在Web发明之前就早已存在的用标记来描述文档资料的通用语言。但SGML十分庞大且难于学习和使用。鉴于此,人们提出了HTML语言。但近年来,随着Web应用的不断深入,HTML在需求广泛的应用中已显得捉襟见肘,有人建议直接使用SGML作为Web语言。但SGML太庞大了,学用两难尚且不说,就是全面实现SGML的浏览器也非常困难。于是Web标准化组织W3C建议使用一种精简的SGML版本——XML。XML与SGML一样,是一个用来定义其他语言的元语言。与SGML相比,XML规范不到SGML规范的1/10,简单易懂,是一门既无标签集也无语法的新一代标记语言。
新特性:
• 最基本的就是更富语义的标签,以便更好的被机器识别;
• 用于绘画的 canvas 元素
• Canvas+WebGL等技术,实现无插件的动画以及图像、图形处理能力;
• 本地存储,可实现offline应用;
• Web Socket,一改http的纯pull模型,实现数据推送的梦想;
• WebRTC,WebVTT,Web Messaging,Web Storage等
• MathML,SVG等,支持更加丰富的render;
• 新的安全特性支持;
• 用于多媒体的video和audio元素
• 缓存
• 新的特殊内容元素,比如article、footer、header、nav、section
• 新的表单输入类型,比如calendar、date、time、email、url、search
• 新的表单元素
HTML5 apps offer write once, run anywhere mobile app development.
• a collection of webpages optimized for mobile devices
• advanced capabilities for streaming video and audio data, handling graphics and animation
• providing offline support
• add semantic elements, form controls and multimedia components
• new APIs that support geolocation services, local application caching and more
• integrate CSS and JavaScript
UUCP,Unix-to-Unix Copy(UNIX至UNIX的拷贝),Unix系统的一项功能,允许计算机之间以存储-转发方式交换e-mail和消息。在Internet兴起之前是Unix系统之间连网的主要方式。
Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它
DDMS 的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。
它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
一、DecorView为整个Window界面的最顶层View。
二、DecorView只有一个子元素为LinearLayout。代表整个Window界面,包含通知栏,标题栏,内容显示栏三块区域。
三、LinearLayout里有两个FrameLayout子元素。
一个Activity对应一个PhoneWindow,一个PhoneWindow对应一个DecorView。
XNU 是指 X is Not Unix。XNU 一直是苹果所有操作系统的内核,包括 iOS、tvOS、watchOS 和 macOS。它是Darwin操作系统的一部分。
802.1x
IEEE 802.1X是IEEE制定关于用户接入网络的认证标准,在用户接入网络(以太网、802.3或WLAN)之前运行。
• 端口认证模式
在模式下只要连接到端口的某个设备通过认证,其他设备则不需要认证,就可以访问网络资源。
• MAC认证模式
该模式下连接到同一端口的每个设备都需要单独进行认证。
综合IEEE802.1x的技术特点,其具有的优势可以总结为以下几点。
• 简洁高效
• 容易实现
• 安全可靠
• 行业标准
• 应用灵活
• 易于运营
起先的目的是为拨号用户进行认证和计费
后经过多次改进成为了通用的认证计费协议
扩展认证协议
一个普遍使用的认证机制,常被用于无线网络或点到点的连接以及有线局域网
EAP是一个认证框架,不是一个特殊的认证机制。
• WLAN是不使用任何导线或传输电缆连接的局域网,而使用无线电波作为数据传送媒介的网络。
• 无线局域网用户通过一个或多个无线接取器(Wireless Access Points, WAP)接入,传送距离一般只有几十米。
• 其主干网路通常使用有线电缆。
• 已经广泛的应用在商务区、大学、机场及其他公共区域。
• 无线局域网最通用的标准是IEEE定义的802.11系列标准。
WIFI(WirelessFidelity,无线保真)技术是一个基于IEEE802.11系列标准的无线网路通信技术的品牌,目的是改善基于IEEE802.11标准的无线网路产品之间的互通性,由Wi-Fi联盟(Wi-FiAlliance)所持有,简单来说WIFI就是一种无线联网的技术,以前通过网络连接电脑,而现在则是通过无线电波来连网。与蓝牙技术一样,wifi同属于在办公室和家庭中使用的短距离无线技术。其目前可使用的标准有两个,分别是IEEE802.11a和IEEE802.11b。
因为WIFI主要采用802.11b协议,因此人们逐渐习惯用WIFI来称呼802.11b协议。从包含关系上来说,WIFI是WLAN的一个标准,WIFI包含于WLAN中,属于采用WLAN协议中的一项新技术。WiFi的覆盖范围则可达300英尺左右(约合90米),WLAN最大(加天线)可以到5KM。
Wi-Fi使用的两个频率是2.4Ghz和5Ghz。简单来说,2.4Ghz速度上限较低但穿透性更好,因此它具有比5Ghz更大的覆盖范围。5Ghz则抗干扰能力较强。
在以前,Wi-Fi在标准命名约定方面非常混乱。它从802.11b转向802.11a,802.11g,802.11n,然后是802.11ac,但幸运的是,Wi-Fi联盟已经决定改变这一切,因此下一个标准是802.11 ax将被称为Wi-Fi 6。新的Wi-Fi 6标准应该提供至少比Wi-Fi 5高四倍的速度。
常用的Wi-Fi加密有WEP,WPA,WPA2。WEP安全性太差基本上被淘汰了。目前WPA2是被业界认为最安全的加密方式。
ISM频段(Industrial Scientific Medical Band),中文意思分别是工业的(Industrial)、科学的(Scientific)和医学的(Medical),因此顾名思义ISM频段就是各国挪出某一段频段主要开放给工业、科学和医学机构使用。
应用这些频段无需许可证或费用,只需要遵守一定的发射功率(一般低于1W),并且不要对其它频段造成干扰即可。ISM频段在各国的规定并不统一。
2.4GHz为各国共同的ISM频段。因此无线局域网(IEEE 802.11b/IEEE 802.11g),蓝牙,ZigBee等无线网络,均可工作在2.4GHz频段上。
蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接。
蓝牙作为一种小范围无线连接技术,能在设备间实现方便快捷、灵活安全、低成本、低功耗的数据通信和语音通信,因此它是目前实现无线个域网通信的主流技术之一。与其他网络相连接可以带来更广泛的应用。是一种尖端的开放式无线通信,能够让各种数码设备无线沟通,是无线网络传输技术的一种,原本用来取代红外。
蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,使用IEEE802.11协议。
蓝牙属于WPAN无线个域网,楼上的说的差不多,即点对点。而wifi属于WLAN无线局域网,多个终端同时传输的网路模式。
最新是BlueTooth5.0.
BackTrack是一个Linux发行版,给用户提供了大量功能强大但简单易用的安全工具软件,主要用做数字取证和入侵测试。
条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。
一维条形码的应用可以提高信息录入的速度,减少差错率,但是一维条形码也存在一些不足之处:
二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。
二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。
二维码是一种比一维码更高级的条码格式。一维码只能在一个方向(一般是水平方向)上表达信息,而二维码在水平和垂直方向都可以存储信息。一维码只能由数字和字母组成,而二维码能存储汉字、数字和图片等信息,因此二维码的应用领域要广得多。
国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF)是一个公开性质的大型民间国际团体,是全球互联网最具权威的技术标准化组织,主要任务是负责互联网相关技术规范的研发和制定,当前绝大多数国际互联网技术标准出自IETF。
它汇集了与互联网架构演化和互联网稳定运作等业务相关的网络设计者、运营者和研究人员,并向所有对该行业感兴趣的人士开放。任何人都可以注册参加IETF的会议。
IETF起到了无以伦比的作用。除TCP/IP外(?),所有互联网的基本技术都是由IETF开发或改进的。IETF工作组创建了网络路由、管理、传输标准,比如ipv6、SMTP、DNS等,这些正是互联网赖以生存的基础。IETF工作组定义了有助于保卫互联网安全的安全标准,使互联网成为更为稳定环境的服务质量标准以及下一代互联网协议自身的标准。
IETF标准是在一种开放的、无所不包的过程中开发出来的。所有IETF文档都可在互联网上随意取阅,并可免费复制。IETF是一个非常大的开放性国际组织,由网络设计师、运营者、服务提供商和研究人员组成,致力于Internet架构的发展和顺利操作。大多数IETF的实际工作是在其工作组(Working Group)中完成的,这些工作组又根据主题的不同划分到若干个领域(Area),如路由、传输、网络安全等。
RFC是request for comment的缩写,由IETF管理,实际上就是Internet有关服务的一些标准。所有关于Internet的正式标准都以文档出版,但不是所有的RFC都是正式的标准,很多RFC的目的只是为了提供信息。RFC每一篇都用一个数字来标识,如RFC2401 ,数字越大说明RFC 的内容越新。RFC是免费公开的,任何人都可以写RFC并提交IETF,一旦正式通过就可以正式发布,一旦发布RFC内容将不能再作任何修改,以后的修改只能通过新的RFC来处理,因此可以看到有很多新的RFC文档obsolete(废除)或update(更新)老的RFC。要真正了解一个协议的内容,就需要看相关的RFC。
RFC(Request For Comments)-意即“请求注解”,包含了关于Internet的几乎所有重要的文字资料。如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要用到的资料之一,所以RFC享有网络知识圣经之美誉。通常,当某家机构或团体开发出了一套标准或提出对某种标准的设想,想要征询外界的意见时,就会在Internet上发放一份RFC,对这一问题感兴趣的人可以阅读该RFC并提出自己的意见;绝大部分网络标准的指定都是以RFC的形式开始,经过大量的论证和修改过程,由主要的标准化组织所指定的,但在RFC中所收录的文件并不都是正在使用或为大家所公认的,也有很大一部分只在某个局部领域被使用或并没有被采用,一份RFC具体处于什么状态都在文件中作了明确的标识.
目前遗憾的是几乎没有国内人员写的RFC,有的RFC虽然有中国人名字,但不是在国内作出的。
常见协议RFC号:
IP:791 TCP:793 UDP:768 ICMP:792 FTP:959 SOCK5:1928 CHAP:1994 SMTP:2821 POP3:1957 NTP:1305 HTTP1.1:2616 IMAP:2060 PPP:1661-1663 DHCP:2131 OSPF:2328 IPSec:2401-2412 IPv6: 2460 SIP: 3261 RTP:3550 RADIUS:3575,3576,3579,3580 L2TP:3931
ITU-T是国际电信联盟电信标准化部门,国际电信联盟三个组之一。
ITU-T的功能是通过研究技术、运营、收费问题提供全球的电信标准。研究结果以ITU-T Recommendations的形式发布。
VoIP(Voice over Internet Protocol)是指将模拟的声音讯号经过压缩与封包之后,以数据封包的形式在IP 网络的环境进行语音讯号的传输,通俗来说也就是互联网电话、网络电话或者简称IP电话的意思。VoIP的基本原理是:通过语音的压缩算法对语音数据编码进行压缩处理,然后把这些语音数据按 TCP/IP 标准进行打包,经过 IP 网络把数据包送至接收地,再把这些语音数据包串起来,经过解压处理后,恢复成原来的语音信号,从而达到由互联网传送语音的目的。
VoIP最大的优势是能广泛地采用Internet和全球IP互连的环境,提供比传统业务更多、更好的服务。VoIP可以在IP网络上便宜的传送语音、传真、视频、和数据等业务。
理论上来讲,一切承载与IP上的音频视频技术都属于VoIP。像微信、QQ、钉钉、飞信等等App和终端软件之间的语音/视频通话也属于VoIP。
VOD是Video On Demand的缩写,即视频点播的意思。顾名思义,它是一种可以按用户需要点播节目的交互式视频系统,或者更广义一点讲,它可以为用户提供各种交互式信息服务。交互式视频点播系统一般由VOD前端处理系统、传输网络、用户机顶盒三个部分组成。
SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个基于文本的应用层控制协议,作为标准被提议用于建立,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话。(会话在这里的含义是在参与者之间的数据的交换。)广泛应用于CS(Circuit Switched,电路交换)、NGN(Next Generation Network,下一代网络)以及IMS(IP Multimedia Subsystem,IP多媒体子系统)的网络中,可以支持并应用于语音、视频、数据等多媒体业务,同时也可以应用于Presence(呈现)、Instant Message(即时消息)等特色业务。可以说,有IP网络的地方就有SIP协议的存在。
如今,有众多 IP 电话、用户代理、网络代理服务器、VOIP网关、媒体服务器和应用服务器都在使用 SIP。
H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议,主要目的是实现位于不同网络中的终端之间的音视交互通信。
H.323采用的是传统电话信令模式,包括一系列协议; 而SIP借鉴互联网协议,采用基于文本的协议.
对 IP 多媒体应用(如IP电话或视频会议)来说,它不仅用 H.323 协议,还用了一系列协议,其中有H.225、H.245、H.235、H.450、H.341等。只是 H.323 协议是"总体技术要求",因而通常把这种方式的 IP 电话或视频会议称为 H.323 IP电话或H.323视频会议。(H.323族)
信令系统#7是由 ITU-T 定义的一组电信协议。
SS7是一种数字信令系统,适用于无线和有线的公共交换电话网。这个标准定义了通过交换数字信令来建立呼叫、寻找路由和控制网络元素的过程和协议。它的功能十分全面,主要特征如下:
1、基本的呼叫建立、管理和终止过程。
2、个人通信服务(PCS)、无线漫游和移动用户认证等无线业务。
3、市话号码移植业务。
4、免费电话(800)和长途线路服务(900).
5、各种增值服务,例如呼叫转移、来电显示和三方通话等。
6、提供有效、安全的全球通信。
RTP英文名是Real-Time Stream Protocol,顾名思义是一种实时性很高的协议。这种协议和http协议很类似,都是纯文本来发送消息的,不同的是rtp是有状态的,http是没有状态的。怎么理解呢?http协议发了之后,连接就断开了,而且下一次发与上一次没有什么依赖关系,而RTP协议需要知道现在是个什么状态,可以发送什么消息。
RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由RTCP来提供。
RTP: Real-time Transport Protocol,实时传输协议,一般用于多媒体数据的传输。
RTCP: RTP Control Protocol,实时传输控制协议,同RTP一起用于数据传输的监视,控制功能。RTCP消息含有已发送数据的丢包统计和网络拥塞等信息,服务器可以利用这些信息动态的改变传输速率,甚至改变净荷的类型。RTCP消息也被封装为UDP数据报进行传输。
RTSP: Real Time Streaming Protocol,实时流协议,用于多媒体数据流的控制,如播放,暂停等。
RTP/RTCP相对于底层传输层,和RTSP,SIP等上层协议一起可以实现视频会议,视频直播等应用。
RTP用于在单播或多播网络中传送实时数据。
1:简单的多播音频会议.语言通信通过一个多播地址和一对端口实现,一个用于音频数据rtp,一个用于控制包rtcp
2:音频视频会议.这两种媒体将分别在不同的RTP会话中传送,同步的话就需要根据RTCP包中的计时信息了(network time protocol)
3:翻译器或混合器:
边下边播:
当前在internet上传送音频和视频等信息主要有两种方式:一是下载,二是流式传输.
在下载情况下,我们都知道,要下完了,才能播放。在视频会议中这显然是不对的。流式传输才是实现流媒体的关键技术.
使用流式传输才能边下载边看流媒体节目。由于internet是基于分组传输的,就是一块一块的传的。所以传递的包会有你先到,或者我先到的情况。
为了降低延迟和恢复数据包时序,在发送端,我们需要对数据进行尽可能的压缩,在接收端,为了恢复时序,就需要一个缓冲区了。对缓冲的数据进行排序就可以恢复数据包时序了。
DLNA最早由索尼、英特尔、微软等提出,全称是DIGITAL LIVING NETWORK ALLIANCE,旨在解决个人PC,消费电器,移动设备在内的无线网络和有线网络的互联互通,其实就是解决电脑和其他电子产品,比如手机、平板之间的通过无线或者有思安网络的互联互通,让我们的照片、视频、音乐能在以上设备中共享,使得数字媒体和内容服务的无限制的共享和增长成为可能。
DLAN共享是无线共享,而HDMI是有线共享。
• IDE本身的代码索引
• Source insight 3
• source navigator NG
• LXR(LXR Cross Referencer)
Source Insight破解版是一个面向项目开发的程序编辑器和代码浏览器,适合撰写如C/C++或Java等程序语言。
虚拟环境种类
• cygwin,colinux,windows10/ubuntu
• VMWare workstation,Virtualbox
• ESXi,Xenserver,QEMU/KVM
• 云虚拟机
• Wine,VMware Fusion(用于MacOS)
• docker
• Hyper-V
反编译代码的工具:
反编译资源的工具:
APKTool: APK逆向工具,用于逆向res文件夹下的图片布局等部分
也有集成3个工具的apkkiller。
还有一个 jadx:
• Dex to Java decompiler
• Command line and GUI tools for produce Java source code from Android Dex and Apk files
• EXE:UPX,TMD,VMProtect
全世界能做出手机商用芯片的公司也寥寥可数,除了苹果(A11、A12等芯片)、高通(骁龙系列),再就是麒麟(华为海思)、三星(猎户座系列)、联发科、松果(小米)了。
• wget:从web上下载文件
• curl:也可以下载,但是长项不在于下载,而在于模拟提交web数据,POST/GET请求,调试网页,等等。
• lynx:纯文本的网页浏览器,不支持图形、音视频等多媒体信息。
(ppt上还有个talk命令,不过是用来和其他使用者对谈的)
• TCPDump
• Windump
• wireshark
from Plain text
• to RFC822格式文本(邮件)
• to HTML
• to XML
• to JSON
• to ASN.1
• ASCII
• Extended ASCII
• GB2312/GBK/GB18030
• Big5(繁体)
• Unicode
• UTF-8(网络上实现最广的一种Unicode的实现方式)
https://blog.csdn.net/Deft_MKJing/article/details/79460485
• zip
• rar
• 7z
• bz2
• zstd(一种由Facebook使用的快速数据压缩算法)
• JavaScript was designed with Java’s syntax(语法规则) and standard library in mind
• both have a C-like,both typically sandboxed
• all Java keywords were reserved in original JavaScript,
• JavaScript’s standard library follows Java’s naming conventions,
Chrome Blink V8
IE/MSHTML Trident JScript/Chakra
Mozilla/Firefox Gecko Spidermonkey/TraceMonkey/JägerMonkey/IonMonkey
Safari WebKit JavaScriptCore/SquirrelFish Extreme
Opera Presto(已弃) Linear B/Futhark/Carakan
Canvas
• 依赖分辨率; 不支持事件处理器
• 弱的文本渲染能力
• 能够以 .png 或 .jpg 格式保存结果图像
• 最适合图像密集型的游戏,其中的许多对象会被频繁重绘
SVG
• 不依赖分辨率; 支持事件处理器
• 最适合带有大型渲染区域的应用程序(比如谷歌地图)
• 复杂度高会减慢渲染速度(过度使用 DOM 的应用都慢)
• 不适合游戏应用
• Magisk
• Xposed
• XDA
• LineageOS