学习计算机网络课程时,我用的是James F.kurose和Keith W.Ross编著的《计算机网络——自顶向下方法》。不得不说,看这本书是需要花很多耐心“啃”下来的。书中涉及到的内容和历史太过广泛,而很多事例又不太贴合中国人的生活习惯,总显得不那么贴切。在此,我们换个方式,从快递网络认识计算机网络。
网络分层
TCP/IP网络分层:
在计算机网络中存在着各式各样的协议,每一种协议都规定了数据在传输的不同阶段需要满足的条件和标准,以保证数据能在不同的传输阶段被正确处理和分发,遇到问题时也能被及时解决。而数据所在的不同阶段被划分成了不同的层级。各类协议(所有协议合称为协议栈(protocol stack))依据所在的层级也被划分成5个层级:
- 物理层
- 传输层
- 网络层
- 数据链路层
- 应用层
OSI参考模型:
国际标准化组织(ISO)提出计算机网络组织为7层,称为开放系统互联(OSI)模型。7层模型比实际的5级分层多了两个分层:会话层、表示层。
会话层提供了数据交换定界和同步功能,包括了建立检查点和恢复方案的方法。表示层的作用是使应用程序能够解释交换数据的含义。这两个层级在因特网结构中包含在应用层中。
类比——寄件
在《计算机网络——自顶向下方法》中用航班服务流程类比计算机网络中数据的传输,但我觉得用我们生活中常用的快递服务来类比,更容易理解:
在寄快件时,我们会在家中把我们要寄出去的东西,以及快递公司提供的标签(快递单)准备好。在标签上注明寄件的地址、邮编等信息,然后把准备好的快件交给快递公司。快递公司收件之后,把快件打包好,运送到最近的集散中心,根据快件上的标签把快件分类,经过审核认证后,登记快递信息,然后把快递送上对应的运输通道。快递通过各种交通运送到目的地的集散中心,集散中心收件后登记收件信息,然后根据快件的详细地址把快件再次分类派发到对应地址的快递站。快递站收件后联系收件人,把货物交递到收件人手中。收件人拆开包装,开始使用。
应用层
生活中寄件的流程和计算机网络极其相似。在应用层,我们准备好数据,选择好传递方式,填好对应的标签,如HTTP、SMTP、FTP等协议,上面记录着传输数据的类型、大小、目的地址以及使用的端口号(端口号类似快递地址的具体门牌号)等信息。此时包装的数据被称为报文(message)。然后把报文交递给运输层。
运输层
运输层中又包含TCP和UDP协议。这两个协议规定了数据的传递方式。选择TCP意为着我们传递的数据的方式是可靠的,保证了数据在运输途中的安全,就像是物流公司在运输时会更加小心翼翼避免挤压损坏货物一样,并且提供了运输途中丢包可查并补发的功能。而选择UDP协议则无法保证运输途中数据的安全,也无法得知货物是否丢失。此时的数据被称为报文段(segment)。
网络层
网络层类似于快递站和集散中心。它包含了计算机网络中最著名的协议——IP协议。网络层中的各个协议规定了如何识别数据的目的地址,并且如何高效的选择传递的路径并正确派发数据。此时的数据被称为数据报(datagram)。
链路层
链路层决定了数据在网络中的传输介质和方式,例如以太网、WiFi和电缆接入网的DOCSIS协议。这类似于快递发送时是选择飞机、汽车、火车还是轮船作为运输工具。
物理层
物理层则确定了数据传输的介质,比如双绞铜线、光纤等。这类似于邮寄时的具体路线,是公路、天空、轨道还是水路。
网络连接
我们使用的互联网由均由因特网服务提供商(ISP)提供。为了真正实现网络互连,各个ISP构成了一个树状的连接结构:
用户通过接入ISP连接到网络,接入ISP又连接到更高级别的ISP中,如区域ISP与顶级ISP或者内容提供商。第三方公司为了方便各个ISP直接的多对多连接,提供了因特网交换点(IXP)。于是,世界网络层层连接,形成巨大的互联网。