计算机网络中的封装(Encapsulation)

计算机网络中的封装(Encapsulation)

什么是封装,先来看个图!
计算机网络中的封装(Encapsulation)
上面这个图显示了一个计算机网络,有一个源主机,一个目的地主机,一个链路层交换机和一个路由器。然后画了一个箭头,这个箭头表示的就是数据从源主机到目的地主机走过的协议栈物理路径。我们前面提到,路由器和链路层交换机都是分组交换机。和端系统一样,路由器和链路层交换机将他们的网络硬件和软件组织成层。但是路由器和链路层交换机并没有实现协议栈中所有的层。路由器仅仅实现了网络层,数据链路层和物理层。链路层交换机仅仅实现了数据链路层和物理层。这就意味着:网路路由器能够实现IP协议(IP协议属于网路层的协议),而链路层交换机不能够实现IP协议(因为链路层交换机没有网络层),所以链路层交换机不能够识别IP地址,链路层交换机可以识别第2层(数据链路层)的地址,例如以太网地址。
注意主机实现了整个5层协议,这与:网络体系结构把更多的复杂性放在了网络的边缘的观点 不谋而合。

好了,下面我们来看看封装的概念!
什么叫封装?
在发送端主机,一个应用层的message(报文)(在这里,应用层的报文即应用层交给传输层的报文)被pass给了传输层。在这个简单的例子中,传输层拿到了报文并且append additional information(这个信息就是传输层头部信息Ht),这个头会被接收端主机的传输层所使用。
可以这么理解,同样是传输层,传输层的头肯定是传输层认识啦!
应用层报文和传输层的头部信息加载一起构成了传输层segment(报文段),所以我们就说传输层报文段封装了应用层的报文。这就是封装。
传输层的头部信息可能包括

  • 接收端传输层将报文deliver到合适的应用 所需要的信息
  • 差错检测位信息(差错检测位能够允许接收端判断报文中的bit是否在传输的过程中被改变过)

传输层又把传输层报文段pass给网络层,网络层在传输层报文段的基础上添加上网络层头部信息(Hn)。
网络层头部信息包括:

  • 源主机和目的地主机的地址(什么地址,这里暂时没有说)

这样就得到了一个网络层数据报(network-layer datagram),这个数据报然后被pass给链路层,然后故事继续重演。链路层在网络层数据报的基础上添加链路层头部信息,这就得到了一个链路层帧( link-layer frame)。因此,我们可以看到在每一层,一个分组(packet)具有两种类型的字段

  • 头部字段
  • 有效载荷字段(payload field),通常是由上一层传递下来的分组

总计一下:
应用层——>message(应用层报文)--------->传输层------------>Segment(传输层报文段)---------->网络层--------->Datagram(网络层数据报)------>数据链路层----------->Frame(链路层帧)

  • Message (应用层报文)
  • Segment(传输层报文段)
  • Datagram (网络层数据报)
  • Frame(链路层帧)