协议分层:TCP/IP、OSI参考模型与封装
协议栈(protocol stack)
因特网是个极其复杂的系统,因此因特网的体系存在分层的组织结构。类似一次乘飞机的过程,首先需要购票、托运行李、登机,飞行到目的地后,需要离机、认领行李,如果对航班不满意,还可以再向票务机构投诉。
点击任意一层。每一层只负责一件事,并在两端成对完成:出发时逐层向下,到达时再逐层向上。
协议分层是为了使各层之间相互独立,每一层只专注于做一类事情。各层之间相互独立,各层之间不需要关心其它层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以。同时协议分层提高了整体灵活性,每一层都可以使用最适合的技术来实现,只需要保证提供的功能以及暴露的接口的规则没有改变就行。
各层的所有协议被称为协议栈,TCP/IP协议栈由5个层次组成,分别是物理层、链路层、网络层、传输层和应用层。
ISO(International Organization for Standardization)为了更好地使网络应用更为普及,推出了OSI(Open System Interconnection)参考模型。但因为OSI七层模型出现地比TCP/IP五层模型晚,在OSI开始使用之前,TCP/IP已经被广泛使用,最终OSI没有在实践中被广泛应用。
| 协议层 | 功能 |
|---|---|
| 应用层 | 提供网络服务操作接口 |
| 表示层 | 对要传输的数据进行处理 |
| 会话层 | 管理不同通讯节点之间的连接信息 |
| 传输层 | 建立不同节点之间的网络连接 |
| 网络层 | 将网络地址映射为MAC地址实现数据包转发 |
| 数据链路层 | 将要发送的数据包转为数据帧 |
| 物理层 | 利用物理设备实现数据的传输 |
知识测验
封装(Encapsulation)
在发送主机端,应用层报文(application-layer message)被传送给传输层,传输层收取到报文并附加首部信息,形成传输层报文段(transport-layer segment),被添加的首部将被接收端的传输层使用。首部信息包括了交付应用程序信息、差错检测位信息等。
传输层继续向网络层传递该报文段,网络层再添加首部信息,如源和目的端系统地址等,形成了网络层数据报(network-layer datagram)。
该数据报接下来被传递给链路层,链路层添加其首部信息,形成链路层帧(link-layer frame)。
每一层都把收到的包裹装进更大的箱子,并贴上自己的快递标签(首部)。最外层的箱子最先被下一台设备看到。
打包快递:构建并修复封装帧
把应用层报文M当作要寄出的物品。每一层都把收到的包裹装进更大的箱子,并贴上写给对应层的快递标签(首部)。可以按任意顺序打包再检查;装错时,拆掉最外层的箱子重新来。
每一层都把收到的包裹装进更大的箱子,并贴上自己的快递标签(首部)。最外层的箱子最先被下一台设备看到。
每个新箱子都套在已有包裹外面,因此它的标签成为最外层。
跟随报文穿过交换机与路由器
逐步跟随一条报文从发送端到接收端,观察每台设备用到了哪些层:发送端逐层封装;链路层交换机只处理到第2层;路由器处理到第3层并换上新的链路层首部;接收端逐层拆开。
第1/18步 · 发送端·应用层:发送端应用层产生报文M,交给下一层。
知识测验
计算封装后的字节数
应用层报文为100字节。简化模型添加20字节传输层首部、20字节网络层首部与18字节链路层开销。这些是题目给定的模型数值,不是所有协议的固定大小。计算每个阶段的大小、总开销与接收应用得到的字节数。