zoukankan      html  css  js  c++  java
  • 计算机网络总结

    电脑视角

    • 首先我要知道我的 IP 以及对方的 IP

    • 通过子网掩码判断我们是否在同一个子网

    • 在同一个子网就通过 arp 获取对方 mac 地址直接扔出去

    • 不在同一个子网就通过 arp 获取默认网关的 mac 地址直接扔出去

    交换机视角:

    • 我收到的数据包必须有目标 MAC 地址

    • 通过 MAC 地址表查映射关系

    • 查到了就按照映射关系从我的指定端口发出去

    • 查不到就所有端口都发出去

    路由器视角:

    • 我收到的数据包必须有目标 IP 地址

    • 通过路由表查映射关系

    • 查到了就按照映射关系从我的指定端口发出去(不在任何一个子网范围,走其路由器的默认网关也是查到了)

    • 查不到则返回一个路由不可达的数据包

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

    三张表:

    •  MAC 地址表: 交换机用于映射 MAC 地址和它的端口

    • 路由表:路由器,用于映射 IP 地址(段)和它的端口

    •  arp 缓存表:电脑和路由器,用于缓存 IP 和 MAC 地址的映射关系

    三张表是怎么来的:

    • MAC 地址表:通过以太网内各节点之间不断通过交换机通信,不断完善起来的。

    • 路由表:各种路由算法 + 人工配置逐步完善起来的。

    • arp 缓存表:不断通过 arp 协议的请求逐步完善起来的

    举例

    在下面网络中,如果 A 给 F 发送一个数据包,能不能通呢?如果通的话整个过程是怎样的?

     传输过程如下:

    1. 首先 A(192.168.0.1)通过子网掩码(255.255.255.0)计算出自己与 F(192.168.2.2)并不在同一个子网内,于是决定发送给默认网关(192.168.0.254)

    2. A 通过 ARP 找到 默认网关 192.168.0.254 的 MAC 地址。

    3. A 将源 MAC 地址(AAAA)与网关 MAC 地址(ABAB)封装在数据链路层头部,又将源 IP 地址(192.168.0.1)和目的 IP 地址(192.168.2.2)(注意这里千万不要以为填写的是默认网关的 IP 地址,从始至终这个数据包的两个 IP 地址都是不变的,只有 MAC 地址在不断变化)封装在网络层头部,然后发包

    4. 交换机 1 收到数据包后,发现目标 MAC 地址是 ABAB,转发给路由器1

    5. 数据包来到了路由器 1,发现其目标 IP 地址是 192.168.2.2,查看其路由表,发现了下一跳的地址是 192.168.100.5

    6. 所以此时路由器 1 需要做两件事,第一件是再次匹配路由表,发现匹配到了端口为 2,于是将其封装到数据链路层,最后把包从 2 号口发出去。

    7. 此时路由器 2 收到了数据包,看到其目的地址是 192.168.2.2,查询其路由表,匹配到端口号为 1,准备从 1 号口把数据包送出去。

    8. 但此时路由器 2 需要知道 192.168.2.2 的 MAC 地址了,于是查看其 arp 缓存,找到其 MAC 地址为 FFFF,将其封装在数据链路层头部,并从 1 号端口把包发出去。

    9. 交换机 3 收到了数据包,发现目的 MAC 地址为 FFFF,查询其 MAC 地址表,发现应该从其 6 号端口出去,于是从 6 号端口把数据包发出去。

    10. F 最终收到了数据包!并且发现目的 MAC 地址就是自己,于是收下了这个包

     -----------------------------------

    转载自:图解 | 原来这就是网络 - 闪客sun - 博客园 (cnblogs.com)

  • 相关阅读:
    laravel-excel maatwebsite/excel 新版中文文档
    laravel-excel.com官网英文站
    composer查看镜像地址
    Navicat Premium 通过ssh 连接服务器
    Centos7 yum 出现could not retrieve mirrorlist 最终解决方案
    php 获取随机字符串算法
    apache 配置多域名访问的方法
    laravel 配置多域名最简单的方法
    es6知识点
    如何判断浏览器为ie10以上
  • 原文地址:https://www.cnblogs.com/wy0526/p/15623002.html
Copyright © 2011-2022 走看看