• IP数据报的发送和转发过程


    同一个网络中的主机可以直接通信-----直接交付
    不同网络的路由器需要路由器来中转----间接交付

    发送过程:

    在这里插入图片描述
    主机C将自己的ip地址和自己的子网掩码相与,得到主机C的网络地址;
    主机C再将主机F的网络地址和自己的子网掩码相与 得到目的网络地址;
    发现主机F的目的网络地址和C自己的一样则直接交付; 若不一样,则不在同一个网络中需要路由器转发报文进行间接交付;
    主机C将数据报传输给所在网络的路由器,由路由器将数据报转发给主机F

    转发过程:

    (1)首先从需要从数据报首部提取目的地址,检查首部校验和是否出错,出错则丢弃数据报并通知主机。
    (2)与本路由器的子网掩码相与,看是否可以直接交付。即目的地址所在网络是否与该路由器直接连接,若连接则可直接交付,不需要再经过其他路由器的进行转发。否则,则执行3。
    (3)查看路由表是否有对应的特定主机路由(特定主机路由用于控制、测试网络),有的话就转发给特定主机路由路由指定的下一跳地址,否则执行4。
    (4)查看有没有到达目的网络的路由器,如果有,则根据符合规则的那一条一般路由指定的下一跳地址进行转发,否则执行5。
    (5)若该路由器中的路由表设定了默认路由,则将分组转发到默认路由指明的地址,否则执行6
    (6)丢弃该数据包,并报告转发失败

    注意:

    1. 每个路由器依据路由表选择到目标网络需要的下一跳(路由器的物理端口号或下一网络地址),而ip分组在通过多次路由转发到达目标网络后,改为在目标LAN中通过链路层的MAC地址以广播方式寻址!(IP地址转换为MAC地址,存于MAC帧首部中)这样可以提高路由选择的效率
    2. 虽然ip数据报有完整的源ip地址和目的ip地址,但路由器只根据目的地址的网络号进行路由选择 !
    3. 在局域网中的链路层,只能看见MAC地址。而通过路由转发ip分组时,ip分组在每个网络中都被路由器解封装和重新封装(组帧),所以MAC地址是不断改变的!这也决定了无法通过MAC地址跨网络通信!
    4. 由于路由器互联多个网络,因此不仅有多个ip地址,还有多个硬件地址
    5. 无论网络层使用什么协议,在实际网络传输数据帧时,最终都必须使用硬件地址,所以需要一种方法来完成ip地址到MAC地址的映射-----地址解析协议ARP
      ARP用于解决一个LAN中的主机/路由器的ip地址和MAC地址的映射问题,如果要找的主机和源主机不在同一个网络中,则通过ARP找到位于本LAN的某个路由器的硬件地址,然后把分组转发给这个路由器

    广播风暴:

    如果主机A给本网络的各设备发送一个广播数据报(ip的主机号全为1),即ip数据报的目的地址是广播地址,
    则路由器收到该ip数据报后并不会转发该数据报!
    即路由器是隔离广播域的
    如果路由器收到广播数据报后都进行转发,则会造成巨大的广播风暴,严重浪费资源

    中继器和集线器在物理层,既不隔离冲突域也不隔离广播域
    网桥和交换机(多端口在网桥)工作在数据链路层,可以隔离冲突域,不能隔离广播域
    路由器工作在网络层,既隔离冲突域,也隔离广播域

    路由器并不提供可靠传输!

  • 相关阅读:
    Docker Desktop 开启失败 Unexcept WSL Error
    C++内存分区模型
    go学习-JS的encodeURIComponent转go
    为何VC6.0的安装向导会出现这种情况
    linux系统Jenkins工具添加自由项目和maven项目
    SpringMVC简介
    VMware 16开启虚拟机电脑就蓝屏W11解决方法
    SpringBoot——自定义自动配置与起步依赖
    【办公类-18-02】(Python)教师获奖证书批量打印(教师信息、获奖类型,公章)
    秒杀微服务实现抢购代金券功能
  • 原文地址:https://blog.csdn.net/Swofford/article/details/125479207