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

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

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

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

为了把工作做好,我还必须得实现几个重要得协议如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转换, 怎么样?最牛的网络设备名副其实吧。有人评价我,十八般武艺样样稀松,功能虽多,但都是基本够用。这是自然,对于一个家庭设备来说,能轻松上网就够了,要啥自行车?

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

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

  1. 【译】数据显示:中国的程序员是世界上最牛的程序员?

    2019独角兽企业重金招聘Python工程师标准>>> 写在前面:一直觉得中国的程序员想法多,肯钻研肯学习,但却不知道原来中国的程序员是世界上最牛的程序员.说来可能不信,但根据Hac ...

  2. 不要迷恋哥,哥不只是传说(再【转】世界上最牛的程序员)

    原文链接网址:[转]世界上最牛的程序员 话说偶当年还在大学求学的时候,以为最牛的就是教程序设计和数据结构的的那两个谢顶老头,直到偶看到了下面的神奇的传说(粗体部分). MIT BBS上说微软电话面试的 ...

  3. 世界上最牛的100张照片

    <script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.sele ...

  4. 世界上最牛的电脑天才 ,其能力和水平不服都不行!

    郭盛华(GuoShengHua),男,汉族,1989年,生于广东肇庆,他创办了世界上最厉害的网络安全组织东方联盟,发布过很多知名软件作品和技术研报,他对计算机科学领域的革命性贡献可以说是巨大的.郭盛华 ...

  5. Docker是世界上最牛逼的CaaS!

    Docker是世界领先的CaaS(Container-as-a-Service平台).Docker是目前集装箱生态系统中最主要的工具.容器是一种将软件与二进制文件以及使软件在共享操作系统时,独立运行所 ...

  6. 【转】世界上最牛的程序员

    MIT BBS上说微软电话面试的一道题就是"Who do you think is the best coder, andwhy?". 我觉得挺有意思的,也来凑个热闹.排名不分先后 ...

  7. 国产程序员--世界上最牛逼的程序员!

    国产程序员就是这么牛逼 0. 如果软件正在占领全世界,为什么程序员得不到尊重? 遍身罗绮者,不是养蚕人. 1. 中国大陆的盗版Windows系统都是怎么做出来的? 复制.粘贴. 2. 中国梦和美国梦的 ...

  8. java就是这个世界上最牛逼的语音,不接受任何反驳

    加粗样式@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Mark ...

  9. 世界上有两种公众号,我坚持做第二种

    世界上有两种公众号,一种喜欢追热点,热点过去,文章的价值也就随风而逝.另外一种不追热点,写一些能够经受时间考验的文章. 区分它们的方法很简单: 你看看他会不会定期发文章目录. 相比而言,第二种比较吃亏 ...

最新文章

  1. 求最大值_Excel求最大值地球人都知道,那要求出第2、第3、第N大值呢?
  2. 禁止服务器的协议,Windows 服务器禁用 SSL 2 和 SSL 3 协议
  3. python爬虫beautifulsoup实例-Python爬虫学习(二)使用Beautiful Soup库
  4. 如何用Dummy实例执行数据库的还原和恢复
  5. jQuery时间轴特效
  6. lex 词法分析 linux,lex语言词法分析
  7. python if判断字符串_python之条件判断、循环和字符串格式化
  8. 这届产品经理也太太太太难了吧!
  9. 升级到WP8必需知道的13个特性
  10. jQuery - 获取内容和属性
  11. mysql limit 1 10000_Mysql面试题,优化:SELECT * FROM user LIMIT 10000,1.
  12. 一个程序员的郁闷吐槽
  13. ider中的html元素背景操作,idea怎么设置背景颜色
  14. VCS带UPF的RTL低功耗仿真介绍
  15. CSS( Cascading Style Sheets )简书
  16. 基于腾讯云的多人视频会议的在线语音转写功能的实现
  17. java 压缩pdf_java实现文件的压缩和解压
  18. 企业技术中台架构全景图(多图)
  19. 100句非常经典的读书名言
  20. 文件重命名后缀名没法改,教你轻松解决方法

热门文章

  1. docker安装、源、网络
  2. WindowsPowerShell常用命令
  3. OTA江湖浪潮再起,世界邦的出境定制自由行之路难以亨通?
  4. 在树莓派上借助Mono + Jexus 布署 .Net 4.0 WebForm应用
  5. Windows Server 2008 R2下部署OCS 2007 R2 边缘服务器
  6. Java:POI方式实现Word转html/htm
  7. UNIX网络编程——TCP/IP简介
  8. 图解使用Win8Api进行Metro风格的程序开发二----使用文件选择器访问和保存文件
  9. XenServer中Windows 7与XP多vCPU支持配置
  10. 学习 LLVM(14) SmallPtrSet