深入分析两种共享上网方式

  提到共享上网,我们很容易想到使用代理服务器或者是带路由功能的ADSL Modem,其实我们还有更廉价的选择——用Windows系统提供的共享上网的功能。这并没有什么新鲜的,但很多人并没有注意到:在Windows中提供的共享上网方式有两种——ICS和NAT。这两种方式各是一个什么概念,各自依据的是什么原理,它们各有什么优缺点,这是我们下面要探讨的内容。
  
  什么是ICS
  
  ICS即Internet连接共享(Internet Connection Sharing)的英文简称,是Windows系统针对家庭网络或小型的Intranet网络提供的一种Internet连接共享服务。它实际上相当于一种网络地址转换器,所谓网络地址转换器就是当数据包向前传递的过程中,可以转换数据包中的IP地址和TCP/UCP端口等地址信息。有了网络地址转换器,家庭网络或小型的办公网络中的电脑就可以使用私有地址,并且通过网络地址转换器将私有地址转换成ISP分配的单一的公用IP地址从而实现对Internet的连接。ICS方式也称之为Internet转换连接。
  
  什么是NAT
  
  NAT即网络地址转换(Network Address Translator),从广义上讲,ICS也是使用了一种NAT技术,不过我们这里讨论的NAT是指将运行Windows 2000 Server的计算机作为IP路由器,通过它在局域网和Internet主机间转发数据包从而实现Internet的共享。NAT方式也称之为Internet的路由连接。网络地址转换NAT通过将专用内部地址转换为公共外部地址,对外隐藏了内部管理的IP地址。这样,通过在内部使用非注册的IP地址,并将它们转换为一小部分外部注册的IP 地址,从而减少了IP 地址注册的费用。同时,这也隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
  
  其工作过程我们通过图1来了解,对于由NAT传出数据包,源IP地址(专用地址)被映射到 ISP 分配的公用地址,并且 TCP/UDP 端口号也会被映射到不同的 TCP/UDP 端口号。对于到NAT协议的传入数据包,目标公用IP地址被映射到源内部专用地址,并且TCP/UDP端口号被重新映射回源TCP/UDP端口号。可以简单地概括为,对于向外发出的数据包,NAT将源IP地址和源TCP/UDP端口号转换成一个公共的IP地址和端口号;对于流入内部网络的数据包,NAT将目的地址和TCP/UDP端口转换成专有的IP地址和最初的TCP/UDP端口号。

  
  说到这里似乎让人糊涂了,那究竟两者有什么区别呢?在Windows 2000的帮助文件中ICS和NAT分别叫做Internet的转换连接和路由连接,其实说白了ICS就是NAT的简化版,使用ICS无需理解IP地址和路由方面的一些知识,并且提供一种局域网中使用Windows 2000路由器共享Internet的简化配置,不过ICS可能不允许局域网和Internet主机之间所有的IP通信,如《暗黑破坏神》一类的多玩家游戏、实时通讯及其他对等服务,如果在公用Internet上使用专用地址或同时使用同一端口号,这些应用程序就会中止。而NAT的配置需要有关于IP地址和路由配置方面的知识,它的配置比ICS要复杂,它允许在局域网和Internet主机间所有的IP通信。此外,ICS只能使用一个合法的公用IP地址,而NAT可以通过配置地址池的方式使用ISP提供的多个合法的公用IP地址供客户机共享。
  
  配置ICS和NAT服务
  
  在局域网中ICS和NAT服务不能并存,我们只能选用其中的一种。
  
  ICS的配置过程相当简单,首先通过在控制面板中的“网络和拨号连接”文件夹,建立好同ISP的连接,然后从该连接的“属性”中选择“共享”标签,选中“启用此连接的Internet的连接共享”复选框,“确定”后,根据系统的提示就完成ICS服务器的设置。而客户端只需将网卡设为“自动获得IP地址”,并将“默认网关”一栏空着,重启后即可使用ICS服务了。
  
  NAT的配置相对复杂一些,首先要将服务器与局域网连接的网卡IP地址设为:192.168.0.1,与ADSL或Cable Modem连接的网卡IP地址设为自动获取(也可以是ISP提供的合法的固定IP地址)。并将服务器的DNS和DHCP服务设置好。NAT功能主要是通过 “管理工具”中的“路由和远程访问”进行配置来实现的。客户端在定义TCP/IP协议属性时需设置DNS,并指定默认网关为192.168.0.1,就可使用NAT服务共享上网。
  
  选择ICS还是NAT
  
  从上面对两者所作的比较和两者的实现方式我们可以得出结论:
  
  ICS更适用于家庭网络环境:它的功能比较简单,设定也相当容易,不需要太多的专业知识也可以完成设置,这对家庭组网来说是十分必要的;它只能使用单一的公用IP地址,无须注册多个公用IP地址,因而它的费用小,而通常家庭组网对成本是十分敏感的;它本身没有任何安全措施,必须另外增加防火墙之类的安全措施,但只需在ICS主机上加装防火墙,局域网中的其他机器都会得到有效的保护,通常家庭网络环境下对安全的要求并不会太高;ICS对系统平台没有特殊的要求,装有Windows 98 SE以上版本的操作系统的电脑都可以配置成ICS的主机,更适合于当前家庭主流操作平台的联网要求。
  
  NAT则适合于公司办公网络环境:它的设置比ICS要复杂,需要安装者具备一定的专业知识,这种条件家庭通常是不具备的;它能使用多个公用IP地址(设置地址池),从而使局域网用户可使用多个合法IP地址访问Internet,申请多个IP地址当然只有规模较大的网络才有这种需要;由于使用IP路由,它具备一定的安全措施,相对安全性它要比ICS好得多,当然,对于使用NAT共享上网的局域网来说,加装防火墙也是必要的;目前能支持NAT的操作系统只有Windows 2000 Server/Advance Server,显然这类操作系统并不是家庭用户使用的,在办公网络中将提供其他服务的Windows 2000 Server服务器同时配置成NAT服务器是顺理成章的事情;与ICS要求网络中的客户机由DHCP服务器动态分配IP地址不同,NAT网络中的客户机可以设置静态内部IP地址,因而其设定更具有弹性,网络中的应用也可以更加多样,也更能适应规模较大的网络。

(0)

相关推荐

  • 深入分析两种共享上网方式

    提到共享上网,我们很容易想到使用代理服务器或者是带路由功能的ADSL Modem,其实我们还有更廉价的选择--用Windows系统提供的共享上网的功能.这并没有什么新鲜的,但很多人并没有注意到:在Windows中提供的共享上网方式有两种--ICS和NAT.这两种方式各是一个什么概念,各自依据的是什么原理,它们各有什么优缺点,这是我们下面要探讨的内容. 什么是ICS ICS即Internet连接共享(Internet Connection Sharing)的英文简称,是Windows系统针对家庭网

  • RocketMq深入分析讲解两种削峰方式

    目录 何时需要削峰 通过消息队列的削峰方法有两种 消费延时控流 总结 何时需要削峰 当上游调用下游服务速率高于下游服务接口QPS时,那么如果不对调用速率进行控制,那么会发生很多失败请求 通过消息队列的削峰方法有两种 控制消费者消费速率和生产者投放延时消息,本质都是控制消费速度 通过消费者参数控制消费速度 先分析那些参数对控制消费速度有作用 1.PullInterval: 设置消费端,拉取mq消息的间隔时间. 注意:该时间算起时间是rocketMq消费者从broker消息后算起.经过PullInt

  • 浅谈Spring的两种事务定义方式

    一.声明式 这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpdate等等.详细配置如下: <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="

  • 浅谈Java的两种多线程实现方式

    本文介绍了浅谈Java的两种多线程实现方式,分享给大家.具有如下: 一.创建多线程的两种方式 Java中,有两种方式可以创建多线程: 1 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2 通过实现Runnable接口,实例化Thread类 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. 程序1

  • 详解IOS开发中图片上传时两种图片压缩方式的比较

    IOS 图片上传时两种图片压缩方式的比较 上传图片不全面的想法:把图片保存到本地,然后把图片的路径上传到服务器,最后又由服务器把路径返回,这种方式不具有扩展性,如果用户换了手机,那么新手机的沙盒中就没有服务器返回的图片路径了,此时就无法获取之前已经上传了的头像了,在项目中明显的不可行. 上传图片的正确方式:上传头像到服务器一般是将图片NSData上传到服务器,服务器返回一个图片NSString地址,之后再将NSString的路径转为url并通过url请求去更新用户头像(用户头像此时更新的便是NS

  • PHP守护进程的两种常见实现方式详解

    本文实例讲述了PHP守护进程的两种常见实现方式.分享给大家供大家参考,具体如下: 第一种方式,借助 nohup 和 &  配合使用. 在命令后面加上 & 符号, 可以让启动的进程转到后台运行,而不占用控制台,控制台还可以再运行其他命令,这里我使用一个while死循环来做演示,代码如下 <?php while(true){ echo time().PHP_EOL; sleep(3); } 用 & 方式来启动该进程 [root@localhost php]# php deadlo

  • BootStrap的两种模态框方式

    bootstrap的弹出层 bootstrap弹出层有多种触发方式,以下是我用到的几种方式: 1.方法一:button中属性触发 注意:button中的data-target内容应该和要和弹出层中的id保持一致 data-target="#mymodal-data"--– id="mymodal-data" <!--在button上绑定触发弹出层的属性--> <button class="btn btn-primary delete&qu

  • 详解Spring 两种注入的方式(Set和构造)实例

    依赖注入是指对象之间关系的控制权由应用代码中转到外部容器.Spring框架主要提供了Set注入和构造注入两种依赖注入方式. 1:Set注入指的就是在接受注入的类中定义一个要被注入的类型的一个set方法,并在参数中定义需要注入的元素.Set注入式一种装配Bean属性的直接方法,但Set注入的一个缺点就是它假设了所有的可变属性都可以通过set方法访问到,无法清晰地表示哪些属性是必须的,哪些属性是可选的. 2:构造注入是在接收注入的类中定义一个构造方法,并在构造方法中定义需要注入的参数.构造注入方式的

  • Nginx使用的php-fpm的两种进程管理方式及优化

    PS:前段时间配置php-fpm的时候,无意中发现原来它还有两种进程管理方式.与Apache类似,它的进程数也是可以根据设置分为动态和静态的. php-fpm目前主要又两个分支,分别对应于php-5.2.x的版本和php-5.3.x的版本.在5.2.x的版本中,php-fpm.conf使用的是xml格式,而在新的5.3.x版本中,则是和php.ini一样的配置风格. 在5.2.x版本中,php-fpm.conf中对于进程管理号称是有两种风格,一种是静态(static)的,一种是类似于apache

  • PHP实现两种排课方式

    两种排课方式: 固定每周的固定时间上课(例:共上20节,每周六.周日早上8点-10点上课.假如今天周六凌晨1点,那么排课也需要从今天开始)总共上几个周,每周上课时间比较个性化(例:共上三周,第一周周一周二早上8点-10点上课:第二周周三周四下午8点-10点上课:第三周周日中午11点-12点上课.) 第一种排课比较好实现,简要代码如下: /** * 生成日期列表 * * @param int $startDate 开始日期 时间戳格式 * @param array $timeList 课时计划列表

随机推荐