网络原理分析

本文从大佬闪客SUN的博客阅读后整理而来,主要是为了自己加深理解,原文更加直观和易懂

物理层:

  1. 初始状态:几台电脑两两直连通讯,很简单

  2. 复杂状态:加入电脑过多,两两直连导致接口电脑接口不够,出现了hub来解决

    hub:集中器(类似于村里的广场,大家都到这里来交流)。

    原理:所有电脑都连一个hub,要给某台电脑发消息时,消息先发给hub,然后由hub(类似于通过村里的大喇叭)广播给其他电脑。

    引申:每个人都会接收很多广播消息,而且不知道哪些是属于自己的。所以给每个发送的消息都带上了发送人、接收人唯一标识(MAC地址)。类似于邮件的发件人、收件人。以后再收到广播消息时,只看收件人是自己的消息,其他的消息自动丢弃。

  3. 缺点:

    1. 消息所有人都能接收到,不安全。
    2. 大量无用的消息在网络上,浪费网络资源。

数据链路层:

  1. 为解决物理层的问题,将hub升级为交换机:转发消息时,只会给接收人MAC地址发(精准投递)

  2. 为了精准投递,需要一张MAC地址表来记录每台电脑是和哪个端口对应,格式为:MAC地址——电脑连接的端口号

    原理:A给B发送一条消息,交换机根据MAC地址表,将消息只发送给B连接交换机的端口即可,不需要全员广播。

  3. MAC地址表如何建立:

    初始化:空表,表头为:MAC地址——端口号

    生成数据:

    1. 交换机转发消息,发现收件人的MAC地址不在表中,则进行全体端口广播;
    2. 正确的接收者收到后进行响应(签收确认),交换机记录响应电脑的MAC地址和端口,将数据插入都表中;
  4. 以太网:由这样传输方式而组成的小范围的网络

    以太网和因特网的区别:以太网是局域网,因特网是广域网

  5. 缺点:

    1. 加入的电脑越来越多,一台交换机的端口已经不能连上所有电脑

      解决方式:

      1. 设置多台交换机,组成多个单独以太网
      2. 将多个单独以太网连接,组成更大的以太网
    2. 随着千万级电脑的加入,MAC地址表数量指数级提升,效率下降,一张表不可能穷尽所有的地址映射;

网络层(IP协议):

  1. 为解决数据链路层交换机的问题,将所有交换机都连到路由器上,由路由器接收、分发交换机之间的消息;

  2. 路由器不仅有自己的MAC地址,而且每一个端口都有独立的MAC地址

  3. 路由器有路由表,格式为:目的IP——子网掩码——端口

  4. 路由器根据目的IP进行子网的换算,然后从映射的端口转发消息;

  5. TCP/IP协议:

    TCP协议类似于快递打包规范,将数据按照特定的格式打包、解包,保证解包后数据能还原,且没有损坏。

    IP协议类似于物流规范,将打好的数据包,通过网络(IP地址、路由器、交换机)送达给指定接收者。

总结:

电脑视角:

  • 首先我要知道我的 IP 以及对方的 IP
  • 通过子网掩码判断我们是否在同一个子网
  • 在同一个子网就通过 arp 获取对方 mac 地址直接扔出去
  • 不在同一个子网就通过 arp 获取默认网关的 mac 地址直接扔出去

交换机视角:

  • 我收到的数据包必须有目标 MAC 地址
  • 通过 MAC 地址表查映射关系
  • 查到了就按照映射关系从我的指定端口发出去
  • 查不到就所有端口都发出去

路由器视角:

  • 我收到的数据包必须有目标 IP 地址
  • 通过路由表查映射关系
  • 查到了就按照映射关系从我的指定端口发出去(不在任何一个子网范围,走其路由器的默认网关也是查到了)
  • 查不到则返回一个路由不可达的数据包

如果你嗅觉足够敏锐,你应该可以感受到下面这句话:

网络层(IP协议)本身没有传输包的功能,包的实际传输是委托给数据链路层(以太网中的交换机)来实现的。

涉及到的三张表分别是

  • 交换机中有 MAC 地址表用于映射 MAC 地址和它的端口
  • 路由器中有路由表用于映射 IP 地址(段)和它的端口
  • 电脑和路由器中都有 arp 缓存表用于缓存 IP 和 MAC 地址的映射关系
原文地址:https://www.cnblogs.com/ifagain/p/15339721.html