浅谈计算机网络
信息转发
大家都有过发微信发qq信息的记录吧。有人想过信息是怎么到对方的手机上的吗?
大家想象这样的一个情景:
情景一:班主任让小明通知一号楼一层的三年级二班下节的语文课变成体育课。小明收到这样的通知后他这么干:
1.小明去了一号楼
2.去了一号楼的一层
3.找到三年级二班
4.在三年级二班的讲台上喊了一句,班主任说了下节的语文课变体育课
5.三年级二班的学生听到小明的通知纷纷跑去了操场情景二:下节课是数学课但是小明没带书,小明想到隔壁班刚上完数学课,可以找小美借书。然后小明做了这样一件事
1.先走到隔壁班
2.找到小美的座位
3.问小美可不可以借一下你的数学书
4.小美听到小美在叫自己然后也非常开心的把书给了小明
5.小明拿到书很开心的回到自己的座位上去
经历了上面的两个情景,其实大家完成了微信消息的群发和单发(一对一)的操作,其实计算机它也没什么神奇的,它发送消息的过程和小明的操作没有多大差别
网络转发
经历了人工的转发再来看看计算机是怎么干的。
快递转发
大家回过头再去看看上面的两个情景。
其实小明充当了类似传话员的角色。事实上早期的电话的确是有一个电话站充当着传话的工作。
通过传话的这个工作引申出快递的行业。大家想想快递是怎么工作的呢?
- 你要给西安的老家的父母发一件衣服
- 找到附近的快递员
- 填写快递单的信息
- 拿回快递单的复件(其实就是记录快递单号)
- 快递员拿走你的快递并装进袋子(封装)
- 分货员通过省份分类出各个省份的快递
- 你的快递被分到了陕西
- 陕西的分货员也干了同样的事情,它通过城市分类快递
- ….经过一系列过程你的快递到了你家街道的快递点
- 父母收到了短信或者电话到了快递点
- 快递员拿出快递核对信息是否正确
- 信息正确,父母拿走你的快递并拆开(拆封)
好了大家也模拟了一次收发快递的经过了,事实上这已经和计算机的收发转发很接近了。
网络转发过程
写的是有点麻烦,不过计算机可没那么聪明它只是工作的速度比较快而已。
聪明的你应该发现了一些特征了;
如果需要收发邮件或者传达消息需要三要素:
- 发件人,始作俑者
- 转发人,传话的人,小明或者快递员
- 收件人,结束的人
没错了这三者分别对应了三样东西(ip网络中)
- 原设备的信息(IP)
- 路由器
- 目标设备的信息(IP)
谈谈这三样东西
- 原设备信息;
大家可能说我发送微信的时候并没有发送我的设备信息呀,或者我根本就不知道什么是设备的源信息呢。
其实呢微信APP已经帮大家做了这件事微信的app将微信号和你的ip地址进行绑定了。
如果说你上网必须要有ip地址才可以上网大家不理解的话,换句话说你发送微信消息必须要注册微信账号大家应该可以理解吧;
- 目标设备信息
此处不做详解,类似于你用发送消息的接收方的微信号;
- 路由器
路由器大家应该都有见过的吧;不管是家里的傻瓜路由器,还是运营商的路由器。其实都在干一件事——路径计算。只不过家里的路由器相当于你家街道的快递点。运营商的路由器相当于各地省市的分货员(任务量,信息安全性不同)
下面来说一下有关路由协议的东西
路由协议
什么是路径计算呢?
通过一些列的网络协议路由器会计算出到目标设备的最优解;
简单来说就是快递发送过程中的分货员的工作。目的地址是西安,首先发送至陕西省显然是最优解。而路由器并不知道这些事情它需要通过路由协议计算得出。
反之如果没有路由协议,你的快递可能会发送到任意省份,任意人手中。运气好的话大家看到不是自己快递会依旧转发出去。这样一来你收到快递的几率就是(1/1300000000)
运气 如果差的话,任意人收到你的快递发现不是自己的会丢弃。这样一来你或许得发13亿件衣服了。
运气如果再差一点的话,任意人收到你的快递虽然明知道这不是自己的快递但模仿成你父母的样子也收了快递。(事实上这就是黑客的抓包操作)
大家也看到没有路由协议的后果了吧,轻则无法送达快递。重则信息的安安全性泄露。
事实上路由协议主要也的确干了这两件事
- 路径计算
- 信息加密(有关信息加密的下篇博客再说)
ipv4网络
以上浅浅的说了有关网络数据转发的过程。
现在来稍微深一点了;
先来说说ipv4网络吧
ipv4的ip采用点分十进制写法就是大家经常说的192.168.0.1巴拉巴拉的东西
ipV4采用32位2进制数,每8位分隔,1
2格式 :XXXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX
255.255.255.255
现在来说说ipv4~
细心的人或许发现了一个问题,既然之前说过每个上网的设备都需要ip地址,那么按照刚刚的说法ip地址最多有:1
255*255*255*255=4228250625
这显然是不够的地球72亿人口每人一个尚且不够。
对没错这是真的ipv4网络地址的确已经告竭(那为什么现在全球人依然可以上网?下篇谈)
那为什么不增加位数呢?
先来说说ipv4的来源,为了避免杠精先来附上维基百科的介绍
ipv4的介绍
任何创造初期时都想不到究竟事后会有多大的后果
ipv4也一样,初期的确没想到可以做到商用,更没想到会产生蝴蝶效应,等到发现时已经为时已晚,所以现在只能做一些补救措施
所以人为规定:
- 公有地址
公有地址(Public address)由Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。 - 私有地址
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。
以下列出留用的内部私有地址
A类 10.0.0.0–10.255.255.255
B类 172.16.0.0–172.31.255.255
C类 192.168.0.0–192.168.255.255
通过划分子网掩码来划分地址段来合理分配(相当于快递的地区划分)
A类地址
A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0;A类地址分配给规模特别大的网络使用.A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。
B类地址
B类地址的表示范围为:128.0.0.0~191.255.255.255,默认网络掩码为:255.255.0.0;B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。
C类地址
C类地址的表示范围为:192.0.0.0~223.255.255.255,默认网络掩码为:255.255.255.0;C类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。
实际上,还存在着D类地址和E类地址。但这两类地址用途比较特殊,在这里只是简单介绍一下:D类地址称为广播地址,供特殊协议向选定的节点发送信息时用。E类地址保留给将来使用。
人为也规定该子网全0为网络地址,全1为广播地址。(前者相当于快递分类的某某省份,后者相当于小明传达中的消息群发)
所以大家常见于192.168.0.1 127.0.0.1 0.0.0.0的地址
稍微深入一点:
何为狭义同一网络——网络位相同的地址的集合称为同一网络
上面的ABCDE类是基于自然划分的ip地址所以一般不用写掩码
现代ip地址通常是这样组成的:
网络号+主机号
假如是C类网段(大家日常见的最多的地址),24位掩码1
2
3
4
5
6
7192.168.0.1可以写成:
1100 0000.1010 1000.0000 0000.0000 0001
由于是24位掩码
所以网络位是前24位
1100 0000.1010 1000.0000 0000
主机位是
0000 0001
通过这样简单的划分,就有了同一网络的概念了。
往小了说就是局域网,城域网,
往大了说就是广域网,互联网
从这一刻起计算机和人一样也有了地址
网络互联
有了ip之后呢?
聪明的人开始想计算机有了地址现在计算机还缺一个“快递公司”
- 回想整个人类发展有需求就有创造
既然这么难的电脑都被发明出来了,人类怎么可能仅仅局限于让它只计算呢?
既然计算机内部可以实现读取,那为什么不从内部引一根线到别的计算机上这样别人也可以进行读写呢?
事实上这是一个正确的思路,前辈们确实是这么干的
最笨的办法往往是最好的办法
- 说干就干
大家弄了一根线从自己的计算机连接到隔壁家的计算机。加上简单的编程,可以实现文字语言聊天
邻居发现这是一个好办法,恰巧邻居还很有钱发现这是一个商机。
你的邻居用了好多根线吧整个城市连起来了,- 无独有偶
隔壁的城市也有一个像你这么聪明的人… …
大家也把自己相连的电脑连接起来了,也可以进行通信了
- 问题来了
每个人电脑都只能和自己想通信的电脑进行联机,那如果有一天你交了新朋友呢?
那么你又得拉一根线,这么一来世界上的线肯定有一天就不够用了。
结果有一个哥们比较聪明他意识到我可以做一个“快递公司”呀。这么一来你们电脑至需要一根线就好了。你想和谁通信你告诉我,我来帮你接线就好了,你们把线都弄到我这里来。事实上这就是早期的电话了。
- 问题又来了
随着人类越来越多了这个快递公司忙不过来了。有一个员工就想既然计算机这么厉害这个工作为什么不让它来做呢。结果就有了早期的路由器的雏形。
而这个快递公司也成了早期的运营商
你告诉路由器你的ip和目的的ip,路由器帮你接好线路,你们两台计算机就进行可以通信
这就是简单的计算机网络。
关于本文未提到的解决ip不够的问题以及替代方案,随后会细细描述。
本文为了理解方便只阐述简单网络模型与事实可能有所偏差还请谅解