zoukankan      html  css  js  c++  java
  • 网络部分 终于写到网络了 !!!

    终于写到网络了!用qemu+gdb+tap+wireshark来分析宿主机器以及qemu虚拟机之间的通讯。。

    =======

    起了qemu虚拟机之后,我在宿主机上去ping我的虚拟机,有如下几条log:

    首先使用ARP协议:

    这是一个ARP协议:总共有42个字节,收到了一个广播:说谁知道192.168.0.110怎么走?

    我本机上的mac地址是:

     3 5.013060953 1a:70:da:77:94:cc RealtekU_12:34:56 ARP 42 Who has 192.168.0.110? Tell 192.168.0.1

    如何清除系统中的arp中的arp缓存?

    ARP协议:地址解析协议;

    Frame 3: 42 bytes on wire (336 bits), 42 bytes captured (336 bits) on interface 0
    Ethernet II, Src: 1a:70:da:77:94:cc (1a:70:da:77:94:cc), Dst: RealtekU_12:34:56 (52:54:00:12:34:56)
    Address Resolution Protocol (request)
        Hardware type: Ethernet (1) 
        Protocol type: IPv4 (0x0800)
        Hardware size: 6
        Protocol size: 4
        Opcode: request (1) 
        Sender MAC address: 1a:70:da:77:94:cc (1a:70:da:77:94:cc)
        Sender IP address: 192.168.0.1
        Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)
        Target IP address: 192.168.0.110
    
     
    

    试验过程中先把arp缓存给清除掉再做哈:

    arp -d 192.168.0.110

    【首先我ping 192.168.0.110的时候,会在系统中查找路由表由哪个端口发出去,我系统中对192.168.0.0/24的路由是由tap0端口负责发送,于是就由tap0在机器上发出arp请求,问谁是192.168.0.110,这个时候我虚拟机上的192.168.0.110就发出一个应到的包了,告诉说我才是192.168.0.110,并且把自己的mac地址给发过去,所以前后我们看到了两个包】

    那接着arp协议这个话题:如果此时我的地址变了咋办,比如192.168.0.110-->192.168.0.111,这个时候要广播?不会广播自己的ip地址变化,而是arp协议是如何应到的?

    //-------------------------

    刚刚有点糊涂了,在局域网内应该很是好处理;如何确定一个包是在局域网内和局域网外?

    对于我PC机其实网卡非常简单,就是个一个发送和接受的过程,不涉及到转发,真正的转发只在局域网的路由表中。比如我输入了一个www.baidu.com,那么我这个请求包会先发到网关中去,然后网关会代理我发东西出去,网关:[跟踪一个网络包一路上经过的设备: traceroute

    traceroute这种东西存在,肯定说明网络协议中有地方设置让一个包每次转发都回传信息!【attention!】

    www.baidu.com

    www.google.com

    都是会直接发送到网关去的,并且可以直接

    当发现目标的IP地址不是在自己局域网的时候,就可以直接发送到网关去了【这个时候不需要广播说是谁在192】当我ping www.baidu.com时,第一个发送的是DNS协议,这个协议后来直接送去网关

    【刚才有个怀疑是说既然局域网中Mac地址和IP地址都是唯一的,为什么不直接通过IP地址去解析得了,原理上说得通【数学思维啊,这不就是简单的映射么】,都是唯一的嘛,但是要考虑两个因素:1)历史因素;到底谁先出来,协议要兼容!再就是要处理简单性,如果是通过IP过滤包,那么每台机器还得去集合所有的包,这样才能解析出IP层的包,而如果是mac地址的话,直接在硬件层面过滤掉就好了,性能上是一个很大的优化呀,甚至是一个主要的因素!】

    以太网帧大小:60字节数据和4字节的CRC。

    ARP请求接近于每秒一次,这是RFC1222中规定的的最大值,都不能改的。 

    arp上两个有用的功能:1)代理arp,对于局域网内任意的请求,我都告诉别人说我是最大的包;

  • 相关阅读:
    【c#】无法修改“xxx”的返回值,因为它不是变量
    【c#】在C#中属性不可作为 ref 或 out 参数传递
    【概念】浮点数
    【概念】Winform
    【概念】数据库、服务器、N层架构、.NET、上位机、C/S和B/S、MVC、ADO.NET
    【c#】串口通信汇总
    【总线】UART、Modbus、I2C、SPI、RS232、RS485及串口通讯常用参数
    zookeeper应用场景
    Zookeeper选举(fastleaderelection算法)
    ZAB协议
  • 原文地址:https://www.cnblogs.com/honpey/p/7892813.html
Copyright © 2011-2022 走看看