数据在两台计算机之间的传输总的来说包括了封装和解封两个过程

封装(5层协议)

以传送一张图片为例 **应用层:**将jpg格式的图片数据转化成计算机可以识别的0101的二进制的比特流 **传输层:**将应用层传输下来的数据进行分段,传输层的数据包也叫数据段/数据报(UDP)。并给每一段加上传输层的头部,比如TCP头部包括【源端口号,目的端口号,序列号】,序列号是用来标识分段的比特流的。 **网络层:**从传输层再将数据送到网络层,并给每个数据段前边再加上网络层的头部【源IP地址,目的IP地址】,网络层的数据包也叫组。IP数据报的格式: 那我们怎么知道目的IP地址? 这里就用到了应用层的DNS协议--域名解析服务器。可以通过域名查到对应的IP地址。 **数据链路层:**从网络层将数据包传到数据链路层,并将组封装成帧,并添加以太网帧的头部(MAC头部),帧头部包括【源MAC地址,目的MAC地址,FCS】,FCS是差错检验。 那我们怎么知道目的MAC地址? 这里用到了广播和ARP协议,源主机通过广播的形式向同一个子网内的计算机发送携带源IP地址的数据包,同一个子网内的计算机在收到数据包后,会和自己的IP地址做对比,如果就是自己,会响应自己的MAC地址给源主机,源主机再接受到目的MAC地址后,会将该MAC地址写到自己的ARP表中。 如果其他主机发现不是自己的IP地址就会把数据包丢弃

这里强调是统一个子网下的,怎么确定是同一个子网呢?如果网络号一样就是同一个子网。然后呢?网络号就是IP地址与子网掩码做按位与&运算得到。 **物理层:**数据帧到物理层后,就会被转化为电信号进行传输,建立计算机的连接。

解封

解封就是封装的逆过程 **物理层:**建立计算机的连接,通过电信号高低电平来通信传输。到达接收端计算机后,物理层将电信号转为二进制比特流,并将数据发送到数据链路层。 **数据链路层:**查看帧头部的MAC地址,和自己一样,就拆掉帧头部,向上层传。不一致,终端设备就丢掉数据。 **网络层:**查看目标IP和自己是否一样,一样就进行后续工作,否则,丢弃 **传输层:**根据TCP头部判断数据段送往哪个应用层协议或程序,然后将数据段重组,送往应用层 **应用层:**将二进制数据进行解码,还原丞发送者传输的原始信息

实际网络环境中的数据传输过程

最终的发送方和接收方往往相隔千山万水,中间会有很多的硬件设备【交换机和路由器】起到中转的作用。 1.发送主机按照之前的过程进行数据封装 2.从发送主机物理网卡发出的电信号通过网线到达交换机,交换机将电信号转换成二进制数据送往交换机的数据链路层 因为交换机属于数据链路层的设备,所以它将可以查看数据帧头部的内容,但不会进行封装和解封装过程。当交换机发现数据帧头部封装的MAC地址不属于自己的MAC地址,他不会像终端设备那样将数据帧丢弃,而是根据该MAC地址将数据帧智能地转发到路由器设备,在转发前要重新将二进制数据转换成物理的电信号。 3.当路由器收到数据后,会拆掉数据链路层的MAC头部信息,将数据送达网络层,这样IP头部信息就“暴露”在最外面。路由器将检测数据包头部的目标IP地址信息,并根据该信息进行路由过程,智能地将数据报文转发到下一跳路由器上,在转发前要重新封装新的MAC头部信息,并将数据转换成二进制数。 4.之后的过程有点大同小异了....

参考

http://www.vecloud.com/article/20200325223755.html