在讨论数据如何在网络中从一个终端传输到另一个终端之前,我们先来了解网络分层,ISO七层模型将网络分成了七层,首先是应用层,该层可以将数据转换成适合在网络中进行传输的格式,同样也可以转换成适合用户应用程序可以识别的格式。应用层可以负责用户需要的各种各样的网络服务,例如电子邮件等。应用层下面的是表示层,该层可以对数据进行编码、加密、压缩等操作,并且可以确保不同设备上的应用程序可以进行正常的交流。然后是会化层,它管理着应用程序之间的会话和链接,并且确保应用程序之间进行可靠的数据交流。接着是传输层,传输层管理的是端到端之间的数据传输,该层可以利用传输协议来确保数据在网络中进行可靠传输,并且可以通过对传输的管理来确保网络的稳定性和性能。网络层位于ISO模型的第三层,网络层可以为每一个连接到网络的设备分配一个逻辑地址——IP地址,然后通过IP地址进行逻辑寻址,并且网络层中的路由器可以根据逻辑地址和路由路径选择算法来确定数据由源地址传输到目的地址。倒数第二层的数据链路层,该层通过MAC地址标识网络设备,可以进行封包和解包操作,这样可以确保数据的安全性和可靠性。最后的物理层的作用是将数字信号转换成光信号。
上段介绍了ISO模型的网络分层,当然也有其他模型,如下图所示:
介绍完了网络分层,就可以对“数据如何在网络中传播”这个问题进行讨论。
第一种情况:主机A向主机B发送数据,且两者在同一个局域网内。
首先数据经过传输层后形成带有目的端口和源端口的数据段,这是因为传输层管理的是端到端的数据传输,端口可以确定数据的可靠传输。该数据段如图表示:
然后经过网络层后,数据段变成带有源IP地址和目的IP地址的数据包,如下图表示
然后进行ARP请求,通过交换机进行广播,得到目的IP地址的主机MAC地址后,接着经过数据链路层后数据包变成带有源MAC地址和目的MAC地址的数据帧,如下图表示
然后将数据帧由物理层转化成光电信号后传播,交换机根据数据帧上的MAC地址直接将数据帧传输到目的主机所在的端口,待到数据帧传输到目的主机时,目的主机开始解包操作,原来的光电信号经过物理层转化成数据帧,数据帧经过数据链路层转化成数据包,数据包在经过网络层确定目的IP地址是自身IP地址后,将其由网络层转化成数据段,目的主机根据先是凭借传输层将数据段转化成原始数据,然后通过数据段的目的端口将原始数据传输到对应的应用端口。最后目的应用程序会将传输来的原始数据运用自己的逻辑和规则对其进行进一步的处理。
这样就实现了同一局域网内的数据传输过程,如下图
第二种情况则是源主机和目的主机不在同一个局域网内时的数据传输过程。
首先,用户的对于想要发送的数据从应用层到网络层都都是相同的——将数据原始数据转化成带有源IP地址和目的IP地址的数据段。然后目的主机进行ARP请求后局域网内没有回应,然后关键的不同点就是,对于目的主机与源主机不在一个局域网时,源主机则是会查询其路由表,然后向路由表中存储的网关IP地址发送ARP请求,路由器的某个网关端口会回应源主机并发送自身的MAC地址,然后源主机将数据包经过数据链路层转化成带有源MAC地址和目的MAC地址的数据帧,其中目的MAC地址时网关端口的MAC地址。然后路由器接收到数据帧时会通过数据链路层将数据帧转化成数据包,路由器对目的主机的IP地址进行分析,通过查询自身的路由表找到下一跳位置,不断重复这个过程直到找到存有目的IP地址的路由器,最后,路由器会直接将数据包传输到目的主机,如下图:
主机得到数据包后,后面对于数据包的解包操作就和第一种情况相同了,这里不再赘述。
对ARP请求的注释:
这里解释整个ARP请求的操作,首先可以确定的是ARP请求是发生在同一个局域网中的,源主机会将带有自己的MAC地址和目的IP地址的ARP请求包,其中ARP请求包中存有源主机的MAC地址和目的IP地址,然后将其发送给交换机,交换机将ARP请求包进行广播,目标主机接收到ARP请求后,会回复一个ARP响应包,其中包含自己的MAC地址,交换机通过自身的MAC地址表将目的主机ARP响应包发送到源主机。