当前位置: 首页 > news >正文

代理服务器

代理服务器(Proxy Server)的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记

代理服务器作为连接Internet与Intranet的桥梁,在实际应用中发挥着极其重要的作用,它可用于多个目的,最基本的功能是连接,此外还包括安全性、缓存、内容过滤、访问控制管理等功能。更重要的是,代理服务器是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的会话层。可以充当防火墙、节省IP开销等。

简介

随着Internet与Intranet的飞速发展,作为连接Internet与Intranet的的桥梁,代理服务器在实际应用中发挥着极其重要的作用。

代理服务器是网络信息的中转站。一般情况下,使用网络浏览器直接去链接其它Internet站点并取得网络信息时,须送出请求信号来得到应答,然后对方再把信息传送回来。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,请求信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好像一个大的Cache,它不断将新取得数据包存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

代理服务器不仅可以实现提高浏览速度和效率的功能,它还可以实现网络的安全过滤、流量控制(减少Internet使用费用)、用户管理等功能,因此它既是一种网络防火墙技术,同时也可以解决许多单位连接Internet引起IP地址不足的问题。

工作原理

代理服务器作为一种既是服务器又是客户机的中间程序,主要用于转发客户系统的网络访问请求。但是,代理服务器不只是简单地向真正的因特网服务器转发请求,它还可以控制用户的行为,对接收到的客户请求进行决策,并根据过滤规则对用户请求进行过滤。

通过代理服务器,网络管理员可以实现比用包过滤路由器更严格的安全策略。不同于使用通用的包过滤路由器来管理通过防火墙的因特网服务流向,代理服务器通过在网关上为每项需要的应用安装专用的代码(代理服务)来工作。如果网络管理员没有为某一特殊服务安装代理服务代码,该服务就不会被支持,也不会通过防火墙转发相应的客户请求。并且,这种代理服务器码能被配置成仅支持某项服务的网络管理员认为可以接受的那部分特征,而不支持其他的特征。

主要功能

代理服务器具有许多功能。对于我们个人用户而言,通过代理上网,能让我们访问一些直接访问会比较慢的网站,比如互联网用户访问教育网的网站。对于单位而言,内部使用代理可以预先过滤一些病毒,保障上网的安全,还能有效地进行访问控制、网速限制,上网监控等等。

以下介绍代理服务器的基本功能:

(1)一个lP地址或Internet帐户供多个用户同时使用

在目前情况下,IP地址是Internet中有限的宝贵资源,如果将这些IP地址仅仅用于单个的请求Internet访问的用户,不能不说是一种资源浪费。使用代理服务器可以做到通过一个IP同时向多个用户提供Internet的访问,对于通过电话拨号连通Internet的内部网络,则可以实现利用一条电话线,一个modem和一个Internet帐户,让内部网络上所有用户同时访问Internet,这样就充分利用了IP地址资源。

(2)缓存功能,可以降低费用,提高速度

安装时,代理服务器会在硬盘上开出一块磁盘空间作为缓存区,将代理用户从Internet上接收的内容下载一份保存起来,当再有用户访问同样内容时,就直接从缓存区传送给用户,而不再从Internet上寻找。代理服务器的这项功能可以大大地提高访问速度,同时也降低了通信费用,是一项相当重要的功能。

(3)对内部网络用户进行权限和信息流量计费管理

图1 代理服务器

图1 代理服务器

通过代理服务器,网管员在提供Internet服务时,可以容易地对内部网络用户进行访问权限和信息流量计费的管理。网管员不但能够做到只允许被授权的局域网用户访问Internet,还能够控制这些用户在哪些时间、使用哪台计算机访问哪些类型的Internet服务。对于已经获准访问的Internet的用户,网管员还能够按照多种方式进行信息流量的计费管理,如:按照个人计费、按照部门所属计算机计费等,为网络管理带来了极大的方便。

(4)对进入内部网络的Internet信息实施监控和过滤

为了避免那些与业务无关的信息进入内部网络浪费通信资费,各个机构对允许访问的内容往往有一些相应的规定。通过代理服务器,网管员不但可以采取过滤的方法简便地控制从Internet流入内部网络的信息内容,还能对用户访问Internet的情况进行实时监控和建立监查日志存档备查。

主要分类

通过代理服务器共享上网从技术实现角度来说可以分为硬件共享上网和软件共享上网两种方式,从代理服务器工作的层次的角度来说可以分为应用层代理、传输层代理和SOCKS代理

图2 代理服务器实现模型

图2 代理服务器实现模型

应用层代理工作在TCP/IP模型的应用层之上,它只能用于支持代理的应用层协议(如HTTP,FTP)。它提供的控制最多,但是不灵活,必须要有相应的协议支持。如果协议不支持图2所示的代理服务器实现模型(如SMTP和POP),那就只能在应用层以下代理,也即传输层代理。最后一种代理需要改变客户端的IP栈,即SOCKS代理。它是可用的最强大、最灵活的代理标准协议。以下将从代理服务器工作的层次的分类角度上介绍几种不同层次的代理服务器。

应用层代理

这里主要介绍基于HTTP协议的代理服务器。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。根据HTTP协议规定,当客户端使用代理模式时,发送的请求命令格式如下:methodhttp://hostname/path/⋯/fiIename。

图3 带有Cache数据库的HTTP协议代理模型

图3 带有Cache数据库的HTTP协议代理模型

当客户端同网络代理服务系统建立连接后,代理服务器将收到请求命令,这时代理服务器应该截取主机名部分进行域名解析,并同该主机建立连接,将去掉主机名部分的请求命令转发给它,等待它做出响应,然后将得到的响应转发给客户端,最后断开连接。其模型如图3所示。

传输层代理

传输层代理直接与传输层交互,更加灵活。要求代理服务器具有部分真正服务器的功能:监听特定TCP或UDP端口,接收客户端的请求同时向客户端发出相应的响应。

socks代理

Socks(防火墙安全会话转换协议 (Socks: Protocol for sessions traversal across firewall securely))是一个客户/服务器环境的代理协议。它包括两个主要的组件,Socks服务器和Socks客户库Socks服务器实现在应用层,Socks客户库实现在客户的应用层与传输层之间。一个代理服务器为客户机与应用服务器建立连接,代理服务器在客户与应用服务器之间中转数据,从应用服务器的角度来看,代理服务器是客户。

当客户想建立到应用服务器的连接时,先连接到代理服务器。应用服务器的地址和端口号通过代理协议被传递到代理服务器,然后,代理服务器再连接到应用服务器。一旦到应用服务器的连接被建立,代理服务器在客户与应用服务器之间中转数据。

目前,有两个版本的Socks协议,版本4和版本5。Socks版本4被简写为“Socks V4”,Socks版本5被简写为“Socks V5”。

网络影响

随着Internet的应用越来越广,Internet各项服务的安全问题也越来越突出,提供一个安全的网络环境也就变得日益重要。一般可以从两个方面实现Internet安全服务:

(1)访问控制,访问控制是保护网络的第一道防线,一般由防火墙实现。

(2)通信安全,此种服务提供对数据加密、在通信对方认证、双方无法抵赖、数据在传输过程中的完整性等服务,可以在应用层、传输层、网络层实现。

Internet上的代理服务是防火墙的一种形式,属于应用级网关,内部网络与外部网络之间没有直接的连接,外部计算机的网络链路只能到达代理服务器,明显地增加了网络的安全性,另外,代理服务器相对于包过滤来讲,能进行用户级的认证,即可以限制某些用户访问某些Internet站点或使用某种Internet服务等,从而大大提高了网络的安全性。

代理服务器架构

代理服务器架构

然而代理服务器的广泛应用,也使它成为网络攻击的重点目标。目前的代理服务器并不能为用户提供可靠的安全性,甚至无法保障其自身的安全,所以研究并提高代理服务器的安全备受关注。

相关文章:

  • sqlite加密
  • x86/x64/x86_64/i386/ia32/ia64/amd/amd64 辨析
  • 理清gcc、libc、libstdc++的关系
  • gcc/g++/clang/cl编译器
  • 深入浅出让你理解什么是LLVM
  • Ninja - chromium核心构建工具
  • depot_tools
  • 智能指针 unique_ptr 详解
  • C++11中“= delete;“的使用
  • C++Error2208:...尝试引用已删除的函数
  • Ninja 构建系统
  • ICU
  • 交叉编译详解
  • GYP,GN和Ninja
  • Visual C++ 新增功能(2003 - 2015)
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Git同步原始仓库到Fork仓库中
  • Gradle 5.0 正式版发布
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JAVA之继承和多态
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Mybatis初体验
  • python学习笔记 - ThreadLocal
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 分类模型——Logistics Regression
  • 简单易用的leetcode开发测试工具(npm)
  • 京东美团研发面经
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 批量截取pdf文件
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 深入浅出webpack学习(1)--核心概念
  • 问题之ssh中Host key verification failed的解决
  • 无服务器化是企业 IT 架构的未来吗?
  • 新书推荐|Windows黑客编程技术详解
  • 因为阿里,他们成了“杭漂”
  • 原生 js 实现移动端 Touch 滑动反弹
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 容器镜像
  • (06)Hive——正则表达式
  • (4)STL算法之比较
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (十三)Flask之特殊装饰器详解
  • (算法)求1到1亿间的质数或素数
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (原創) 未来三学期想要修的课 (日記)
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net framework4与其client profile版本的区别
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @EnableWebMvc介绍和使用详细demo
  • @KafkaListener注解详解(一)| 常用参数详解
  • @property python知乎_Python3基础之:property