计算机网络就像一个物流系统,区别在于物流系统传递的是邮件包裹这类物质实体,而计算机网络传递的是信息这种无形的东西。

计算机网络从下到上分为五个层:物理层,数据链路层,网络层,传输层,应用层:

  1. 密密麻麻的公路组成了物理层
  2. 中转站和公路一起构成了数据链路层
  3. 各个集散分拨中心,就是路由器,它们构成了网络层的核心。
  4. 再往上,那些派送的门店成为了运输层的主体。
  5. 最后各个用户,消费者,企业,公司位于系统的最顶端——应用层

1.应用层

消费者在网上购买东西,向远方的朋友寄信,都需要用到物流系统提供的服务。

共享(传递)数据(货物),沟通交流,是网络的两大功能。

消费者和卖家在网上商量好购物和付款的细节流程以及规矩,这就是协议(Protocol)

寄包裹有寄包裹的规矩,比如文件传输协议(FTP)

寄信有寄信的规矩,比如简单邮件协议(SMTP)

卖家联系了物流公司,这叫请求服务。

快递员就是服务接入点(SAP)

而要寄的货物就是协议数据单元(PDU)

有的人寄得是包裹,需要去柜台或者小区门卫。有的人寄的是信,可以直接投到家里的邮筒里。

柜台和邮筒就是端口(Port),他们为不同的应用层对象提供不同的服务。

2. 传输层

邮件到了门店,来自同一个地方许许多多的邮件以目的地分类打成一个个大包裹(TCP/UDP数据报)

平信弄丢,邮局是不负责的,但它们会尽最大努力(谁知道呢)去交付。这个规矩叫用户数据报协议(UDP)

如果弄丢的话,那就没办法了,只能让用户再发一份了(应用层重传)。还好,交通通畅的时候,这种事基本很少发生。

虽然并不是很靠谱的样子,不过平信好在便宜。所以大多数不是很重要,或者不急的邮件与邮包,都是这么寄的。因为没有那么多手续,所以这么寄还稍微快一点。

挂号信,稍微麻烦一点,比较贵(开销大)。但是邮局是保证送到的。如果丢失,它们会帮你再送一次(重传)。

具体的规则是:每次寄件前,都会联系目的地的门店,告诉它们我们要寄一个包裹请查收(连接请求),然后对方确认收到之后再开始邮寄流程(连接确认)。当对方收到包裹之后,还会告诉这边:我们收到了(对确认的确认) 。

这整个三次握手的流程就是**传输控制协议(TCP)**的一部分。

每个邮件的地址上必须写上寄到什么地方,是扔邮箱还是放门卫还是上门自提(端口号)。这个地址和分拨中心的地址(IP地址)结合起来叫做套接字(Socket)

有时候物流压力比较大的时候,对方门店会给这边寄得包裹里捎上纸条(窗口字段),说你们包裹压一压,少发些,我这边还没处理完呢。(窗口控制)。

有时候,信件上插着鸡毛(紧急指针),见到这种信,邮局会马上停下手头的投递活动把这封信送达用户。(紧急数据)

交通阻塞总是难免的,或者有时候运输车辆路上翻了,邮件全毁了。这时候只要这边邮局过一段时间收不到回应,就会重新发一份包裹(超时重传)

不管怎么样,门店收来的包裹,都要上缴(使用网络层的服务)到分拨中心(路由器)进行统一调度(路由选择)。

3. 网络层

物流系统有许许多多的分拨中心(路由器),各个分拨中心之间也有许多交通方式(数据链路)连接着。

每一个接入到公共交通网(互联网)的分拨中心(路由器),都有一个独一无二的地址(IP地址)。当然,每个城镇(主机)也可能有多个分拨中心(多个IP地址)。

有时候,土皇帝(局域网管理员)还会建一个本地的邮政网络(局域网),这种局域网用的都是本地的地址(本地局域网IP地址)。写着这种地址的邮件是进不了公共交通网的。

每个邮包在到达分拨中心(路由器)后,都会被贴上一个标签(IP数据报表头),上面写着目的地址和寄件人地址。比如浙江宁波XXX分拨中心,江苏南京XXX分拨中心之类。

以前,邮件地址只要写四段(4段十进制IP地址标记法)就可以,比如 中国 – 浙江省 – 宁波市-鄞州区,因为那时候分拨中心比较稀有,不过随着经济发展,连一些山旮旯里的村里都修上分拨中心了,四段地址就显得不够用了,所以现在正在推广的一种标准就是六段地址,不仅要写到市,还要写镇,村,小区…总共六级(IPV6)。

当然这个包裹的标签上的内容还有很多。

当分拨中心看到要寄往的分拨中心IP(目标IP),它虽然知道这个分拨中心叫什么(网络地址IP),但是不知道应该走哪条路(物理地址MAC)。所以他向所有连着的路都发送了一封信,写着,我要找XXX的分拨中心,谁知道,告诉我走哪条路。这个叫(ARP寻址)。然后XXX收到了这个,回了一封信:我是XXX,走这条路过来。(ARP响应分组)

包裹发出去后,下一个分拨中心会再次选择最好的路线,继续把这个包裹传递下去(路由选择)。

通常情况下,分拨中心也是有等级(网络类型)的。国家级(A类),省级(B类),市级(C类)。等级越高,这个分拨中心的辖域(网络大小)就越大,这一类分拨中心的数目就越少。有时候,乡镇里面也会有自己的分拨点,比如各个小区建了提货送货点(子网)。

各个分拨中心在工作的时候,相互协调交流不是通过电话,也是通过信件相互联系——网际控制报文协议(ICMP)。交流一下哪条路不好走(终点不可达),路太堵了,压低业务量(原点抑制)之类的情报。

有时候,各个分拨中心也会相互交流一下最好的物流路线.(路由选择协议)。一般省内,市内的网络比较喜欢内部先交流好(路由信息协议RIP),然后对外再选定一个主要分拨中心作为本省物流主要出口(BGPSpeaker边际网关协议发言人),然后国家级的分拨中心再来安排省间的邮路选择(开放最短路径优先协议OSPF)。

4. 数据链路层

辛苦的司机,永远工作在送货的路上。他们的工作非常简单,出发前打个电话(同步),然后拉着货(IP数据报),打个包(封装成帧)就上路了。

为了防止货物中通丢失或者被司机贪污。分拨中心会在每个集装箱里面放一个装有货物信息的清单(效验码)。如果收货的时候对不上(校验和错误),那么这一车货物就必须丢掉。(丢弃帧)。不过司机只管运输的活,要重新发货就要重新掏一次钱(数据链路层不提供重传服务,绝大多数时候)。

通常,一个市(用户)都有到省会(ISP)的直达高速道路,货车开这种路是再爽不过,因为永远不会迷路(点到点协议PPP),而且这条路是独享的,宽敞没人抢。发送的包裹上面也不用告诉司机走哪条路(PPP协议不需要物理地址),因为是点到点的。

然而,大多数时候没这么爽,城市内本地的道路网络(以太网)都是错综复杂的。在这种道路网上行驶需要导航和地址(MAC)。一种比较流行的道路结构是一条主干道连接着许许多多的支路(总线型以太网)。最坑爹的是这条路还是单行的,一次只能让一个方向过一辆车(半双工工作模式)。所以各个区的货车想上公共交通网络,必须要争抢这条路(冲突)。

因为一次只能过一辆车,为了解决冲突,货车司机们立了一个规矩(CSMA/CD协议):上路前先把耳朵贴在路上听听有没有车,如果没有车,再上路(载波监听CS)。可是经常会发生两个司机一起听到路空然后上路,结果撞上了(冲突),两车货都作废了。新的解决方案是:。首先计算出货车沿着主干道最长的路径往返一次需要的时间2t(争用期)。每次撞车后,双发都先大喊撞车了撞车了(强化碰撞)让所有人都知道。然后双发随机等待一段时间再上路,如果又撞了,那就在更长的范围里随机等一会(动态退避)再上路。(截断二进制指数退避)。如果撞了十六次,那说明这路实在太堵了。还是乖乖回家吧。(网络忙。传送失败)。

那么司机是怎么认路的呢?答案是每个需要在城市路网(以太网)上跑的集装箱(MAC帧)都写了地址。这个地址是全球唯一的,每一个邮箱,每一个柜台,每一个收发室,都有这么一个地址。

但是通常门牌号(MAC)都不容易看到。所以司机在送货的时候会每个小区跑个遍,说:寄往XXX小区的包裹,快来领(广播)。如果地址对上了,那么这个包裹传达室大爷(网卡)就收下了。当然也有一些冒领包裹的狗东西偷偷摸摸就把这个包裹收下了(这一点是因为信息能复制)。叫做(混杂方式)。还有的坏人在路上装监控(嗅探器),来偷看包裹里的东西。

​ 顺带一提,城际点对点的高速公路(PPP),如果不是由省会(小弟级ISP)连接到某个特定城镇(用户),而是连接到一个城镇构成的交通网(局域网/以太网),那么货物的规格(帧的格式)也需要统一。业内习惯的做法是把专线用的集装箱(PPP帧)再用普通公路网的集装箱(MAC帧)套一层。把这个双层包装叫做“在城市路上跑的专线集装箱”(PPPoE PPP on Ethernet 在以太网上跑的PPP帧)。

5. 物理层

物理层,就是司机们走的路

高铁就是光纤;高速公路,就是同轴电缆和双绞线。

最大载重量也就是最大数据率——带宽

但公路上的速率并不对应计算机网络的速率,它对应的是发车的快慢。

时延与吞吐量是一样的概念。时延分为好几种。发车的时间(发送时延)。花在路上的时间(传播时延)。在收费站浪费的时间(排队时延)。在分拨中心浪费的时间(处理时延)。

送货的用时(延迟),主要取决于道路的宽度(带宽,网速)。一批100车的货,每次只能上一辆车的路,和每次能上十辆车的路,肯定用时相差很多。货车开的很快(近光速),所以路上用的时间非常短。一公里只要5微秒就跑完了。当然,如果这是路况(网络状况)好的时候,如果堵起车来。那就主要取决于排队与处理的时间了。

一般来说,一条路只跑一个公司的车太垄断了,所以工程师总是想着让一条路同时跑更多公司的车辆(比特流)。主要的方法有:一条路上扩展车道:A车道,B车道。。(频分复用FDM),大家轮流使用(TDM时分复用).或者一辆车同时装好几家公司的货(CDM码分复用)。

那么路是怎么来的呢?一般来说主干道都是国家部门(大佬ISP)直接开荒地修的。而城镇里的路一般都是借着以前的土路(公共电话网络)连着主干道的,虽然是土路,但也够宽敞。以前跑的拖拉机(3KHz电话信号),现在也能够跑大卡(1MHz数字信号)。不过这种土法子(ADSL)都有个毛病,主干道地势都比较高,所以货车下来的速度是很快,但是上去就非常吃力(ADSL非对称用户线下行速率远大于上载速率)。

有的城镇比较有钱,直接把高速铁路修到家门口了(FTTH光纤到户),次一点的也修到市中心了(FTTx光纤到街道,到小区,到…)。