我们现在几乎每天都在使用网络,通过网络进行彼此间的交流。那么,你是否好奇过,当你发送的信息从电脑传递至远方的电脑时,都经历了哪些步骤呢?接下来的内容将为你揭秘这一网络传输的神奇之旅。
我们要理解数据包的封装和解封装过程。假设你在QQ上给朋友发送了一条“Hello”的信息。这条信息想要在网络上传输,需要经过一系列的处理。计算机网络体系结构的通信协议被划分为七层,从下到上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
在这七层结构中,下四层主要负责数据的传输服务,而上面三层则更贴近用户。当数据需要通过网络进行传输时,它需要从高层开始,逐层向下传送。当一个主机想要向另一个主机传送数据时,每一层协议都会为其添加一个相应的头部,这个过程被称为封装。
这就像是一封寄信的过程。在传输层,我们的信息被打包到数据段里。然后,网络层会为你打上“写信人地址”和“收信人地址”,即将数据的源IP地址和目的IP地址分别打包。接下来,数据链路层主要负责将IP地址对应到硬件地址(MAC)。因为寻找远程计算机需要依据硬件地址。在物理层,这些数据被转化为比特流——也就是一串0和1的代码,这些代码通过网线发送出去。
数据经过封装并通过网络发送后,接收设备会删除添加的信息,并根据报文头部中的信息决定如何向上层协议传递数据。这个过程被称为解封装。最终,数据被交给QQ应用程序进行处理,这样对方就能看到你发送的信息了。
明白数据的封装和解封装对于理解数据包在网络中的传输过程至关重要。接下来,我们以一个实际的例子——使用Telnet远程登录的过程来详细讲解数据包封装、解封装以及数据包在网络中的传输过程。
假设有一个网络拓扑结构,其中包括PC1、PC2、路由器R1和R2以及一个二层交换机。PC1想要远程登录到一个服务器(Server)。下面是具体的步骤:
1. PC1首先封装数据包,它会比较要去往的目的地IP(假设为202.2.2.2)与本地网络号(假设为202.1.1.0)。由于目标IP不在本地网络中,PC1知道它需要先将数据发送给网关路由器R1的特定接口(假设为202.1.1.1)。PC1会在本地查找ARP缓存以获取网关的MAC地址(假设为)。如果找到则使用它进行封装,否则将发送ARP请求进行查询。
接下来,数据会经过传输层、网络层和数链路层的层层封装,直至到达物理层并转换为比特流发送出去。你可能会好奇为什么目的MAC地址是网关的而不是服务器的呢?这是因为MAC地址仅在内有效。因此发往其他网段的数据都需要先经过网关。如果封装的MAC是服务器的MAC的话,当数据到达路由器R1时会被丢弃因为路由器不知道如何将其路由到这个目的MAC地址以外的其他地址的设备上。最后PC将会转换为比特流的数据帧从网卡发送出去。物理层的任务就是处理这些比特流将它们转换成电子光学或微波信号传输出去。另一方面在接收端物你一层的工作就是把这些信号恢复成比特流再上传给数链接一层进行解析。当PC的数据帧经过路由器以及复杂的传播之后被送到Server机器时又进行了一个反向的流程将被帧分解为比物流发送到上属于七图又最终被转换为Bit网上库和业务,,发给您的账户便行了接着服务器将处理结果反向发送回PC完成整个通信过程。整个互联网中Telnet数据包的传输及封装解封装过程至此完毕通过这一过程中可以看出在网络传输过程中数据流在中间设备上执行的是OSI模型下三层的操作物理层设备比如集线器主要负责信号的放大广播式转发并不改变帧格式数据链路层设备即二层交换机也不改变帧格式但可以根据帧的目的地址进行转发网络层的设备则会改变帧格式进行帧的解封装再封装但数据包中的源和目的IP地址并不会改变当然在网络传输过程中还会涉及到很多其他的细节和技术比如路由选择数据包分片等等但基本的过程就是如此奇妙而复杂构成我们每天所使用的互联网世界。