网络
网络是一个极为复杂的系统,其中包含大量的应用程序和协议,各种类型的终端系统、分组交换机以及各种链路级的物理媒介。因此在构建前就对他们进行了分层(layer),每层都接受下一层的数据而为上一层提供服务(service)。分层提供了一种结构化方式来设计系统组件,各层的所有协议被称为协议栈(protocol stack)。在因特网的协议栈由五个层次组成:
一个正常的通信: 数据从发送端系统的协议栈向下(应用层 -> 运输层 -> 网络层 -> 链路层)之后沿着链路层交换机和路由器的协议栈上上下下,然后向上送到接收端系统的协议栈(链路层 -> 网络层 -> 运输层 -> 应用层)。在传输的过程中需要根据协议要求来对数据进行封装(encapsulation):
- 应用层: 将数据封装为应用层报文(application-layer message)
- 运输层: 收到报文并在首部添加运输层首部信息进而封装为运输层报文段(transport-layer segment)
- 网络层: 接收报文段并增加了源和目标地址等属于网络层的首部信息后封装为网络层数据报(network-layer datagram)
- 链路层: 接收到数据报并添加了属于自己的头部信息就封装成了链路层帧(link-layer frame)
可以看到每个分组都具有两个类型的字段: 首部字段(通常是当前层相关信息)和有效载荷字段(通常来自上一层的信息)。
Tips
实际的封装要远比上述复杂的多。报文是我们要发送的消息(message),报文段的翻译就很精髓,所谓的段就是将报文拆分为不同段来进行封装。
本手册说明
通过《计算机网络:自顶向下方法》一文来详细介绍网络的方方面面。并且结合wireshark来加深理解。