$QEMU_PATH \
-nographic \
-drive file=./rootfs.ext4,format=raw \
-net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=no,downscript=no \
-S -gdb tcp::7852

在这个qemu的配置中,-net nic,vlan=0 是客户机中的前端,-net tap,vlan=0,ifname=tap0,script=no,downscript=no是位于host机中的后端。

这是我qemu的配置,试着理解下这个配置中网络部分的原理,qemu是qemu中使用的一种虚拟的网络设备,当虚机中发生了网络行为的时候,网络数据会发送到用户态,然后用户态写入到tap设备中去,然后tap设备作为一个二层设备。这么说吧,普通的二层设备一层连实际的网络,一层连网络层;现在的tap设备,一层连用户态,一层连网络层;都是负责发包的。

同理推测下 TUN 设备是干嘛的?刚才说TAP是一个二层的设备,然后会把数据传递给网络层,关键点就是这个网络层了,

【网络层会干吗?发送数据的时候很简单,填充好自己的IP地址,然后根据路由的信息,填上目的地址,发出去;接收数据呢?接收数据会根据自己的,IP数据报可能分段,在IP层可能会发生一个合并,合并好之后,传递给TCP层?tap设备会直接给】

介绍 TAP/TUN,使用TAP设备的应用程序相当于另外一台计算机【这不就是qemu的网络虚拟化么......】

https://www.cnblogs.com/yml435/p/5917628.html

tun设备:

https://www.cnblogs.com/woshiweige/p/4532207.html

所以这样就基本就串起来了,启动了qumu之后,其实我们在客户机中看到的设备是一个三层设备,tun设备,当在客户机中往这个三层设备写数据时,qemu用户态可以直接感知到这些数据了,qemu得到这些数据之后,就把数据写入到tap0,tap0作为一个虚拟的二层设备,然后将数据并入到内核中真正的网络协议栈中去。qemu的这部分真是绝了!那么qemu相关配置中的vlan又是啥咧。

关于tap设备的更多相关文章

  1. tun/tap设备_虚拟网卡

    tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装.利用tun/tap 驱动,可以将tcp/ip协议栈处理好的 ...

  2. Linux下Tun/Tap设备通信原理

    Tun/Tap都是虚拟网卡,没有直接映射到物理网卡,是一种纯软件的实现.Tun是三层虚拟设备,能够处理三层即IP包,Tap是二层设备,能处理链路层网络包如以太网包.使用虚拟网络设备,可以实现隧道,如O ...

  3. Linux中的TUN/TAP设备

    今天才发现这家伙...怎么讲...深以为耻.晚上的任务是加深对它的了解,就这么定了. 1. General questions.1.1 What is the TUN ?  The TUN is Vi ...

  4. Python读写tap设备

    #!/usr/bin/python import os import struct import fcntl import binascii TUNSETIFF = 0x400454ca IFF_TA ...

  5. Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在前面一篇文章 ...

  6. 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备

    原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...

  7. [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化

    KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...

  8. TAP/TUN摘要

    TUN适用于IP帧.Tap适用于以太网帧.TAP摸拟一个以太网设备(以arp广播MAC识别),它操作第二层数据包如以太网数据帧.TUN模拟了网络层ip设备(以点对点的方式,使用ip标识),操作第三层数 ...

  9. TAP/TUN(二)

    tap.c代码      #include<assert.h> #include<fcntl.h> #include<stdio.h> #include<st ...

随机推荐

  1. C#面向对象的基本概念

    “面向对象=对象+类+继承+通信”.如果一个软件系统使用了这样四个概念进行设计和实现,我们就可以认为这个软件系统是面向对象的. 一.一切都是对象 1. 对象概述 对象可以表示几乎所有的实物和概念.比如 ...

  2. 知识总结和记录——Bootstrap

    官方地址:https://getbootstrap.com 中文地址:http://www.bootcss.com/ 使用V3版本的Bootstrap,下载的是用于生产环境的Bootstrap. 目录 ...

  3. JS - 兼容的事件助手

    (function () { // 兼容的事件助手 window.CompatibleEventHelper = { addEventListener: function (elem, type, c ...

  4. 返回固定页面的web服务器

    import socket def handle_client(socket_con): """ 接收来自客户端的请求,并接收请求报文,解析,返回 "" ...

  5. docker基础——关于安装、常用指令以及镜像制作初体验

    为什么使用docker docker就是一个轻量级的虚拟机,他解决的是服务迁移部署的时候环境配置问题.比如常见的web服务依赖于jdk.Tomcat.数据库等工具,迁移项目就需要在新的机器重新配置这些 ...

  6. JZOJ 1738. Heatwave

    Description 给你N个点的无向连通图,图中有M条边,第j条边的长度为: d_j. 现在有 K个询问. 每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少? I ...

  7. pycharm中文乱码问题 总结

    前言: 这几天刚刚开始学习python,然后就安装了pycharm,但是那个中文乱码的问题真是让人心烦,在网上找了好久,都写得好乱,今天终于让我解决了,在这里总结一下经验,希望可以帮到你们 问题:如下 ...

  8. Makefile (1) gcc基础

    .c(源文件) --> .i(预处理文件) -->.s(汇编文件) --> -o(目标文件) -->可执行文件 ​ .c --预处理-->.i .i --编译--> ...

  9. P1414 又是毕业季II (数学?

    题目背景 “叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻.毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘逝去的歌.1000多个日夜的欢笑和泪水,全凝聚在毕业晚会上,相信,这一定 ...

  10. [Codeforces375D]Tree and Queries(莫队算法)

    题意:给定一棵树,每个节点有颜色,对于每个询问(u,k)询问以u为根节点的子树下有多少种颜色出现次数>=k 因为是子树,跟dfs序有关,转化为一段区间,可以用莫队算法求解 直接用一个数组统计出现 ...