关于tap设备
$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设备的更多相关文章
- tun/tap设备_虚拟网卡
tun/tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装.利用tun/tap 驱动,可以将tcp/ip协议栈处理好的 ...
- Linux下Tun/Tap设备通信原理
Tun/Tap都是虚拟网卡,没有直接映射到物理网卡,是一种纯软件的实现.Tun是三层虚拟设备,能够处理三层即IP包,Tap是二层设备,能处理链路层网络包如以太网包.使用虚拟网络设备,可以实现隧道,如O ...
- Linux中的TUN/TAP设备
今天才发现这家伙...怎么讲...深以为耻.晚上的任务是加深对它的了解,就这么定了. 1. General questions.1.1 What is the TUN ? The TUN is Vi ...
- Python读写tap设备
#!/usr/bin/python import os import struct import fcntl import binascii TUNSETIFF = 0x400454ca IFF_TA ...
- Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 在前面一篇文章 ...
- 【转】Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备
原文:https://www.cnblogs.com/bakari/p/10449664.html -------------------------------------------------- ...
- [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...
- TAP/TUN摘要
TUN适用于IP帧.Tap适用于以太网帧.TAP摸拟一个以太网设备(以arp广播MAC识别),它操作第二层数据包如以太网数据帧.TUN模拟了网络层ip设备(以点对点的方式,使用ip标识),操作第三层数 ...
- TAP/TUN(二)
tap.c代码 #include<assert.h> #include<fcntl.h> #include<stdio.h> #include<st ...
随机推荐
- 前端JavaScript之ECMA
1.JavaScript基础 2.语法规则 3 常用内置对象 4 函数 5 伪数组 6.异常处理 1.1 web前端分为三层 HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化 ...
- DB总结1
DBA 重构 data new york committee cobol codasyl journal DDL DML 关系演算 域关系演算语言(QBE) 元祖关系演算语言 ...
- Spring MVC 接收前端参数的方式
方式一: 普通方式接收 1 @RequestMapping("/index") 2 public String getUserName(String username) { 3 S ...
- openldap完整版本搭建记录
文档信息 目 的:搭建一套完整的OpenLDAP系统,实现账号的统一管理. 1:OpenLDAP服务端的搭建 ...
- java 计算数学表达式及执行脚本语言
java SE6中对常用的脚本语言做了支持. 可供使用者在java代码中执行脚本语言,还可以利用get("key"),put("key","value ...
- 【shopex】真正可用的app开发机制
shopex的app开发机制详解 网上流传的shopex4.8.5的app开发教程,不仅说得不明不白,而且由于版本问题,照着做根本是做不成的. 知其然,亦要知其所以然. shopex提供了的一个干 ...
- linux下载利器之curl和wget的区别
linux下载利器-------curl和wget的区别 curl和wget基础功能有诸多重叠,如下载等. 在高级用途上的curl由于可自定义各种请求参数所以长于模拟web请求,用于测试网页交互(浏览 ...
- 【转载】char*,const char*和string 三者转换
本文转自 http://blog.csdn.net/perfumekristy/article/details/7027678 const char* 和string 转换 const char*转换 ...
- ThinkPHP路由去掉隐藏URL中的index.php
官方默认的.htaccess文件 <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On ...
- PPT入门学习笔记1:待修改
一直被比人忽悠实在是累了,我可以接受自己的失误,但我接受不了别人一次又一次的坑我! 做PPT的原则是什么? 1.一个目标: "一个PPT只为一类人服务,针对不同的听众制作不同层次内容的PPT ...