SIGCOMM
2013-09-04
IP 足够了吗?
从初中的计算机课开始,我们就在学习计算机网络所谓的 “OSI七层模型”,记得当年死记硬背了一大堆概念。那些烂课本毁了多少计算机天才,其实这个模型并不难理解:(学过计算机网络的请自行跳过)
- 物理层:就是信号传输的媒介,光纤、双绞线(我们常用的网线)、空气(wifi)……每种介质都需要自己的编码和调制方式,才能把数据变成电磁波送出去。
- 数据链路层:拿开会打个比方。说话可能不小心说错或者听错,需要有纠错、让对方重说的机制(校验和、重传);几个人都想发言,需要有一种方式进行仲裁,谁先说谁后说(信道分配、载波监听);一个人发言前后需要示意,以便让别人知道他说完了(成帧)。
- 网络层:这是计算机网络初期争议最大的地方。电信行业的传统巨头认为,应该像打电话一样在两端点间的路径上预留出一部分带宽,建立起通信双方的 “虚电路”。而当时正处于冷战时期,美国国防部要求建立起的网络在中间几条线路遭到毁灭性打击时,通信仍然不能中断。于是,最终采用了 “分组交换” 方案,把数据分成若干小块分别封装和投递。就像寄信一样,要投递到远方的机器,就要在信封上写明地址,而且地址要使得邮递员看到它就知道该走哪条路送给下级邮局(比如用身份证号作为地址就是个很糟的主意)。IP 协议是网络层协议的事实标准,大家应该都知道 IP 地址。
- 传输层:计算机网络早期最重要的应用就是在两台计算机间建立“连接”:远程登录、远程打印、远程访问文件……传输层就是在网络层数据包的基础上,抽象出连接的概念。这里的“连接”跟“虚电路”的主要区别是“虚电路”要预留一定的带宽,而“连接”是尽力而为投递的,不对带宽作任何保证。由于互联网上的流量多是突发(burst)的,分组交换比虚电路提高了资源利用率。事实上,历史往往是轮回的,如今在数据中心里,由于流量可预测且可控,又正在回到中心控制的预留带宽方案。
- 应用层:这就不用多说了,Web 基于的 HTTP、FTP、BitTorrent 都是应用层协议。