# 计算机网络与物流系统

LLMS 索引： [llms.txt](/llms.txt)

---

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

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

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光纤到街道，到小区，到…)。
