今天打算从最简单的方式来谈谈数据如何在网络中流动。
OSI七层模型分为:物理层,数据链路层,网络层(IP协议),传输层(TCP协议),会话层,表示层,应用层。本文略过应用层,直接从传输层,层层至下分析,看看各层数据的封装做了什么?
网络中数据流动.png 以太网数据封装
1.传输层
应用层一般为TCP协议,将数据分成若干个包(加上端口号),然后传输到网络层;
2.网络层
网络层将传输层的数据加上自己的IP地址和对方的IP地址,采用ARP协议获取MAC地址。
-
查看是否是同一网段,如果是同一网段,发送FFFFFFF广播,对应的目标IP会把自己的MAC地址返回给源IP PC机,这时候有了下一跳的MAC就可以将数据转发到对应的PC上。
-
目标IP和源IP做对比,如果不在同一个网段,则源PC机会发送广播(ARP协议),问网关的MAC地址是多少,网关会回答自己的MAC地址,收到后,计算机会把MAC地址缓存起来,供下次用。
-
知道Mac地址之后,交换机或者路由器,会把数据发送到下一跳的节点。本文将数据同过交换机发送到了路由器里。
通过命令,可以查看计算机其实缓存了很多物理地址.png
注意
:数据链路层会把网络层的获得Mac数据加到帧的头部
4.数据转发
路由器会有一个路由表,选择一个不拥塞的网络,然后同样采用广播的方式,获取Mac地址,然后将数据发送到下一跳里。一直到发送到目标IP
这里需要有注意一个事情:
目的IP地址是最终的目的地,中间的数据包中的IP地址并不会发生改变。
而Mac地址会一直发生变化,他是决定下一跳到底将数据转发到哪里。
网友评论