网络是多台计算机之间的互联互通形成的信息交互通道。现在的网络世界看似复杂,却遵从着一些基本设计原则。

拓扑

网络是分层的,从上至下大致可以分成:应用层传输层网络层链路层物理层

  • 应用层 - 包括了具体我们使用的程序想要传输的内容。
  • 传输层 - 主要是 TCPUDP 协议,在应用层数据的外层封装了一层,把 源端口和目的端口信息 加入了传输层。端口是用来区分不同的应用程序。
  • 网络层 - 这一层会将 源和目的IP地址 加入,目的是为了区分不同的计算机。
  • 链路层 - 这一层会根据不同的链路层协议,如 固网wifi3G/4G/5G 等,进行封装。主要是加上 MAC地址信息
  • 物理层 - 在电缆、光纤或其他介质中传输数据。

路由器和交换机

路由器和交换机是网络组成的关键环节

  • 交换机 主要的工作是局域网内机器的ip地址和mac的映射。
  • 路由器 则是链接不同 ‘局域网’ 的桥梁。

值得注意的是,在 链路层 的MAC地址信息,只是下一跳的源MAC和目的MAC。

例如,A要向B传输数据,传输的过程是:A -> A的交换机 -> A的路由器 -> (若干路由器) -> B的路由器 -> B的交换机 -> B

在链路层的MAC地址变化为:A_MAC + A_交换机_MAC -> A_交换机_MAC + A_路由器_MAC -> ... -> B_路由器_MAC + B_交换机_MAC -> B_交换机_MAC + B_MAC

在网络层,路由器会判断IP地址是否是属于局域网的机器,如果是,则不向其他路由器查询,直接转发给局域网内的目的机器。如果不是,则将数据包转发。

非局域网上的IP,通过最后一跳的路由器上的IP映射进行转换。