热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

世界上最牛的网络设备,价格低廉,其貌不扬......

夜深人静,电视和电脑都已经关机休息,但是我还在默默工作,我安静地趴在你家中的某个地方,7*24小时不眠不休,任

夜深人静,电视和电脑都已经关机休息,但是我还在默默工作,我安静地趴在你家中的某个地方,7*24小时不眠不休,任劳任怨,目的只有一个,能让你舒服地躺在床上,畅快地刷手机! 

没错,这就是我,大家司空见惯的家用“路由器” ! 

我这么一个价格低廉,其貌不扬,让人想不起来的网络设备,为什么是最牛的呢?且听我慢慢道来。 

我的主业是路由器,同时兼任DHCP服务器,交换机,无线AP, PPPoE客户端,防火墙等重要部门的职务。

为了把工作做好,我还必须得实现几个重要得协议如DHCP, ARP, NAT等, 十八般武艺集于一身,是不是很厉害? 

对于普通人来说,只需要设置一下宽带账号和密码,WIFI名称和密码,就可以联网了, 岂不知在背后我干了很多的脏活和累活。 

比如,你设置了无线名称(SSID),密码等信息,开启了无线广播以后,我的无线AP部门就得开始干活了。 

它需要不停地向周围广播信标帧(Beacon Frame),其中包含SSID和MAC地址,还有其它基本信息。然后各种设备才可能发现我,输入用户名和密码,连接上我。 

其次,我一般还有通过PPPoE拨号上网的功能,要不然你怎么连接外网? 

但是只有这两个功能还远远不够,我还是个DHCP服务器,这个局域网内的IP都由我来发放。 

你看这个新连上WIFI的ThinkPad电脑,只有MAC地址,没有IP地址,它需要按照我们网络世界的约定,用DHCP协议获得一个IP地址。 

同时这个ThinkPad电脑还可以从我这里获得默认网关的地址,默认网关也是我 192.168.1.1,当它真正上外网的时候,就可以用到了。 

电脑有了IP地址,就能上网吗? 

不能,因为我给他们发的都是内网地址192.168.1.xx,在互联网上,并不是唯一的。 

例如隔壁老王家的Mac电脑的IP地址也是192.168.1.2,和我家的ThinkPad的IP是一样的,怎么区分?如何上外网?

还好,我这个路由器,通过拨号连入运营商网络的时候,获得了一个唯一的外网地址:61.52.247.112。 

那我就把这个外网IP地址给大家共享, 共享的办法非常简单,就是通过不同的端口号,把我和各个电脑之间形成对应关系,把大家区分开。 

当然我需要耍点儿小手段: 

这种方式就是著名的NAT了,网络地址转换。 

现在这个Thinkpad正式访问外网,它要把数据发到我的默认网关(192.168.1.1),但是网络世界必须得知道MAC地址,形成数据链路层的数据包才能发送。 

ThinkPad没办法,只好动用ARP协议,在局域网中大声呼喊:192.168.1.1,你的MAC地址是啥? 

然后我就直接告诉它:192.168.1.1的MAC地址是B4:2E:A4:59:83:A3,记住吧,以后别乱叫了。 

ARP是个让人胆战心惊的协议,因为很容易形成ARP欺骗,不信你看看这个文章《一次成功的黑客欺骗攻击,没想到结局如此悲催》 

ThinkPad知道了我的MAC地址,把数据包发到我这里,我拆开一看,哦?目标IP地址是外网,于是,我就使用我简单的路由功能,转发到WAN口的外网去,当然在这个过程中,我得用得NAT。 

如果你关掉我的路由功能(各个路由器具体做法不同),我就可以变成一个交换机,在数据链路层来转发同一子网内的数据包。我本身还有简易的防火墙,具体细节就不说了,你自己可以登录到路由器的管理端去看看。

无线AP+路由器+交换机+防火墙+PPPoE客户端+DHCP服务器+NAT转换, 怎么样?最牛的网络设备名副其实吧。有人评价我,十八般武艺样样稀松,功能虽多,但都是基本够用。这是自然,对于一个家庭设备来说,能轻松上网就够了,要啥自行车? 

对于程序员来说,你把我的功能和相关协议研究透了,也就掌握了一大半网络知识了,机不可失,欢迎来撩。

相关阅读: 

我是一个网卡

我是一个交换机,集线器你一边儿呆着去

我是一个路由器

一次成功的黑客欺骗攻击,没想到结局如此悲催

往期精彩回顾

我是一个线程

我是一个Java Class

面向对象圣经

函数式编程圣经

TCP/IP之大明邮差

CPU阿甘

我是一个网卡

我是一个路由器

一个故事讲完HTTPs

编程语言的巅峰

Java:一个帝国的诞生

Javascript:一个屌丝的逆袭

负载均衡的原理


推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • CISCO ASA防火墙Failover+multiple context详细部署By 年糕泰迪[操作系统入门]
    一.文章概述本文主要就CISCOASA防火墙的高可用和扩张性进行阐述和部署。再cisco防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover,multiplese ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
  • 网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和 ... [详细]
author-avatar
灿烂的胖羊羊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有