zoukankan      html  css  js  c++  java
  • ping过程

    premise: 

    一个局域网内,网段为192.168.0.0 , 有两台主机A(192.168.0.3) 主机B(192.168.0.4)

    1. A 机器上执行: ping 192.168.0.4

    2. ping程序通知系统创建固定格式的ICMP数据包,然后连同源ip和目标ip交给ip层

    3. ip层将数据连同源ip和目标ip封装成ip数据包,然后连同源Mac和目标Mac交给链路层

      目标Mac是怎样获取的?

      1. 查询本机ARP缓存,如果以前与将要通讯的机器有过连接,则ARP缓存表中有目标主机的Mac地址,如果没有,则会向该网络中发送一条广播信息,目标主机收到广播消息会  回复一条消息,该消息中包括Mac地址。

    4. 交给物理层传输

    5. 目标主机网卡收到包后先检查Mac地址是否匹配,如果不匹配直接丢弃,如果匹配交上层,上层解包检查ip是否匹配,如果不匹配丢弃,如果匹配则在交由上层对数据进行操作

    如果目标主机在不同网段

    主要是目标Mac地址的获取

    源主机操作系统网络层会先检查目标ip是否在同一网段,如果不在同一网段,则通过上面相同的方式广播获取网关的物理地址,如果ARP缓存中已有网关Mac那么就不用获取了

    数据包到达网关是怎么到达目标主机的,现在不清楚,网关中是不是要保存目标主机的Mac地址或者网关需要通过广播的方式获取Mac地址? 明天问老师去~~~~~~

  • 相关阅读:
    Linux监控内核SNMP计数器
    wireshark使用手册
    【LinuxShell】echo用法详解
    【Coredump】调试之旅
    汇编指令
    从零开始学Java (五)条件选择
    从零开始学Java (四)输入输出
    Dart基础
    树相关
    递归简介
  • 原文地址:https://www.cnblogs.com/caiyao/p/4539370.html
Copyright © 2011-2022 走看看