第一周实习相关知识整理
1 什么是反向代理
def:反向代理是反向服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址也无需在用户端作任何设定。反向代理服务器通常可用来作为web加速即使用反向代理作为web服务器的前置机来降低网络和服务器的负载,提高访问效率
代理服务器通过正则映射将客户机的请求转发到内部服务器
理解思路:无代理–>正向代理–>反向代理–>正向/反向代理的区别
代理类似于房产中介。
“无代理”与“有代理”的区别主要表现为:过滤不同、映射不同、权限不同。
【过滤】使用代理,可以对外界或内部的Internet地址进行过滤。
【映射】使用代理,多个用户使用代理访问外界时,只映射为一个IP地址。
【权限】使用代理,外界不能直接访问到内部网,同时限制内部网对外部的访问权限。
无代理,则无以上特征。
【正向代理】:
(内部网络用户向外网发送请求)
正向代理即通常所说的代理,用于代表内部网络用户向Internet上的服务器
(或称外部服务器,通常为Web服务器)
发出连接请求,并接收响应结果,执行该代理功能的服务器称为代理服务器。
使用代理服务器访问外部网络时,客户端必须在局域网设置中指明代理服务器的地址以及要代理的服务的端口号
【反向代理】:
(外部网络用户向内网发送请求)
反向代理的方向与正向代理相反,指代表外部网络用户向内部服务器发出请求,
即接收来自Internet上用户的连接请求,并将这些请求转发给内部网络上的服务器,
然后将从内部服务器上得到的响应返回给Internet上请求连接的客户,
执行反向代理服务的服务器称为反向代理服务器,反向代理服务器对外部用户表现为一个服务器。
【正向/反向代理】
正向代理是代理客户端,比如vpn
反向代理是代理服务器,比如nginx
最核心的不同在于代理的对象不同
代理哪端便可以隐藏哪端,隐藏后,也就避免暴露自己主服务器的位置
【代理协议】
此处的协议指的是网络传输协议。
主要是两种:Socks、HTTP
反向代理的好处
反代理的好处有:
1.充当防火墙,具有安全性和匿名性
2.可以使负载均衡,可以充当“交通警察”角色
3.缓存作用,Web加速
(够缓存通常请求的数据,并可以将入站和出站数据压缩,加快其网站的性能)
2 什么是MBS
def:MBS是资产证券化发展史上最早出现的证券化类型。它是以住房抵押贷款这种信贷资产为基础,以借款人对贷款进行偿付所产生的现金流为支撑,通过金融市场发行证券(大多是债券)融资的过程
3 什么是 RPC 框架
def:RPC(Remote Procedure Call Protocol)远程过程调用协议
RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
首先,要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。
第二,要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称名称是什么,这样才能完成调用。比如基于Web服务协议栈的RPC,就要提供一个endpoint
URI,或者是从UDDI服务上查找。如果是RMI调用的话,还需要一个RMI Registry来注册服务的地址。
第三,当A服务器上的应用发起远程过程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数的值要序列化成二进制的形式,也就是序列化(Serialize)或编组(marshal),通过寻址和传输将序列化的二进制发送给B服务器。
第四,B服务器收到请求后,需要对参数进行反序列化(序列化的逆操作),恢复为内存中的表达方式,然后找到对应的方法(寻址的一部分)进行本地调用,然后得到返回值。
第五,返回值还要发送回服务器A上的应用,也要经过序列化的方式发送,服务器A接到后,再反序列化,恢复为内存中的表达方式,交给A服务器上的应用
不理解的名词注释:(Endpoint这个词以前经常被用来描述进程间通信。例如,
-
在客户端与服务器之间的通讯,客户端是一个Endpoint和服务器是另外一个Endpoint。
-
根据不同的情况下,一个Endpoint可能指的地址,如一个TCP通信的(主机:端口)对,也可能是指与这个地址相对应的一个软件实体。例如,如果大家使用“ www.example.com:80 ”来描述一个Endpoint。这些Endpoint可能是指实际的端口上的主机名称(即地址)
-
也可能是指与地址相关的的网页服务器(即在这个地址之上运行的软件地址) 。
-
邮寄信件时,将信件投递到邮箱,那么邮箱就是一个ep
-
寄送快递时,快递员上门取件,快递员就是一个ep
-
webservice服务,一个服务地址:http://www.url.com/service1是一个ep)
(什么是 UDDI?UDDI 是一个独立于平台的框架,用于通过使用 Internet 来描述服务,发现企业,并对企业服务进行集成。
- UDDI 指的是通用描述、发现与集成服务
- UDDI 是一种用于存储有关 web services 的信息的目录。
- UDDI 是一种由 WSDL 描述的 web services 界面的目录。
- UDDI 经由 SOAP 进行通信
- UDDI 被构建入了微软的 .NET 平台
UDDI 基于什么?
UDDI 使用 W3C 和 IETF* 的因特网标准,比如 XML、HTTP 和 DNS 协议。
UDDI 使用 WSDL 来描述到达 web services 的界面
此外,通过采用 SOAP,还可以实现跨平台的编程特性,大家知道,SOAP 是 XML 的协议通信规范,可在 W3C 的网站找到相关的信息。
-
)
4 消息中间件-RabbitMQ
消息中间件(MQ)的定义
一般认为,消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。
高效:对于消息的处理处理速度快。
可靠:一般消息中间件都会有消息持久化机制和其他的机制确保消息不丢失。
异步:指发送完一个请求,不需要等待返回,随时可以再发送下一个请求,既不需要等待。
为什么使用消息队列:
首先消息队列就是一种先进先出的数据结构,常用的应用场景就是:解耦、异步和削锋。
流量削锋:一般情况下,为了保证系统的稳定性,当系统负载超过阈值的时候,就会阻止用户请求非常影响用户体验,那么我们就可采用消息队列的方式将请求放进队列,再建立一个系统每隔一秒钟从队列中拉出部分数据,以实现流量削锋。
各种消息队列产品的比较?
ActiveMQ:早些年使用比较广泛,没有经过大规模的吞吐量场景验证,社区也不是很活跃,现在用的比较少。
RabbitMQ:erLang语言开发,阻止了大量Java工程师深入研究,如果不考虑二次开发,追求高性能和稳定性则推荐使用。
Rocket:阿里的产品,java语言开发,性能和稳定性斗不错,如果考虑二次开发则推荐使用
kafka:常用于大数据领域的实时计算和日志采集等。
消息队列的优缺点?
优点:解耦、异步和削锋;
缺点:系统可用性降低、系统的复杂性变高和一致性问题;
系统可用性降低:系统引入的外部依赖越多,系统的稳定性越差,一旦MQ宕机就会对业务造成影响。可以采用集群的方式保证MQ的高可用。
系统的复杂度提高:MQ的引入大大增加了系统的复杂度,以前是远程同步调用,现在要通过MQ进行异步调用。
系统的一致性问题:比如A系统处理完后,通过MQ给B C D三个系统发送消息,但是B C处理成功了,而D处理失败了,这就出现了一致性问。可以通过分布式事务来解决。
5 Zookeeper
zookeeper功能非常强大,可以实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能,我们这里拿比较简单的分布式应用配置管理为例来说明。
假设我们的程序是分布式部署在多台机器上,如果我们要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把这些配置全部放到zookeeper上去,保存在 zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生变化,每个应用程序就会收到 zookeeper 的通知,然后从 zookeeper 获取新的配置信息应用到
是一个开源的分布式协调服务,目前由Apache进行维护。Zookeeper可以用于实现分布式系统中常见的发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。它具有以下特性:
顺序一致性 :从一个客户端发起的事务请求,最终都会严格按照其发起顺序被应用到Zookeeper中;
原子性 :所有事务请求的处理结果在整个集群中所有机器上都是一致的;不存在部分机器应用了该事务,而另一部分没有应用的情况;
单一视图 :所有客户端看到的服务端数据模型都是一致的;
可靠性 :一旦服务端成功应用了一个事务,则其引起的改变会一直保留,直到被另外一个事务所更改;
实时性 :一旦一个事务被成功应用后,Zookeeper可以保证客户端立即可以读取到这个事务变更后的最新状态的数据。
6 REDIS
Redis 全称 Remote Dictionary Server(即远程字典服务),它是一个基于内存实现的键值型非关系(NoSQL)数据库,由意大利人 Salvatore Sanfilippo 使用 C 语言编写。
7一些高危端口及功能
139端口是一种TCP端口,该端口在你通过网上邻居访问局域网中的共享文件或共享打印机时就能发挥作用。
445端口也是一种TCP端口,该端口在Windows 2000 Server或Windows Server 2003系统中发挥的作用与139端口是完全相同的。具体地说,它也是提供局域网中文件或打印机共享服务。不过该端口是基于CIFS协议(通用因特网文件系统协议)工作的,而139端口是基于SMB协议(服务器协议族)对外提供共享服务。同样地,攻击者与445端口建立请求连接,也能获得指定局域网内的各种共享信息。
要关闭文件共享可以同时关闭139和445端口。
3389是远程协助的端口,默认的只有本机帐号发起的连接才有可能被外界连接,(非服务器版系统)所以,默认的,它就是关闭的,当然,不做下修改是很容易被开启的。所以,你可以在管理工具-本地安全策略中设置 拒绝网络访问 将administrators加入,这样,就算别人获得你的密码并且开放了这个端口他也无法访问,
135端口
在许多“网管”眼里,135端口是最让人捉摸不透的端口,因为他们中的大多数都无法明确地了解到135端口的真正作用,也不清楚该端口到底会有哪些潜在的危险。直到一种名为“IEen”的专业远程控制工具出现,人们才清楚135端口究竟会有什么样的潜在安全威胁。
IEen工具能够借助135端口轻松连接到Internet上的其他工作站,并远程控制该工作站的IE浏览器。例如,在浏览器中执行的任何操作,包括浏览页面内容、输入帐号密码、输入搜索关键字等,都会被IEen工具监控到。甚至在网上银行中输入的各种密码信息,都能被IEen工具清楚地获得。除了可以对远程工作站上的IE浏览器进行操作、控制外,IEen工具通过135端口几乎可以对所有的借助DCOM开发技术设计出来的应用程序进行远程控制,例如IEen工具也能轻松进入到正在运行Excel的计算机中,直接对Excel进行各种编辑操作。
怎么样?135端口对外开放是不是很危险呀?当然,这种危险毕竟是理论上的,要想真正地通过135端口入侵其他系统,还必须提前知道对方计算机的IP地址、系统登录名和密码等。只要你严格保密好这些信息,你的计算机被IEen工具攻击的可能性几乎不存在。
为什么IEen工具能利用135端口攻击其他计算机呢?原来该工具采用了一种DCOM技术,可以直接对其他工作站的DCOM程序进行远程控制。DCOM技术与对方计算机进行通信时,会自动调用目标主机中的RPC服务,而RPC服务将自动询问目标主机中的135端口,当前有哪些端口可以被用来通信。如此一来,目标主机就会提供一个可用的服务端口作为数据传输通道使用。在这一通信过程中,135端口的作用其实就是为RPC通信提供一种服务端口的映射功能。说简单一点,135端口就是RPC通信中的桥梁。
*593
*
593端口(TCP、UDP)是DCOM分布式组件对象模型协议使用的端口号,它允许C/S结构的应用通过DCOM使用RPC overHTTP service,该协议端口的开放很容易被攻击者执行远程代码。要求关闭,若必须开启要求做源地址访问控制
端口:1025、1033
服务:1025:network blackjack 1033:[NULL]
说明:木马netspy开放这2个端口。
端口:1024
服务:Reserved
说明:它是动态端口的开始,许多程序并不在乎用哪个端口连接网络,它们请求系统为它们分配下一个闲置端口。基于这一点分配从端口1024开始。这就是说第一个向系统发出请求的会分配到1024端口。你可以重启机器,打开Telnet,再打开一个窗口运行natstat -a 将会看到Telnet被分配1024端口。还有SQL session也用此端口和5000端口。
137端口
137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。
要是非法入侵者知道目标主机的IP地址,并向该地址的137端口发送一个连接请求时,就可能获得目标主机的相关名称信息。例如目标主机的计算机名称,注册该目标主机的用户信息,目标主机本次开机、关机时间等。此外非法入侵者还能知道目标主机是否是作为文件服务器或主域控制器来使用。