![](https://img-blog.csdnimg.cn/6c92469a0a2644c48a1524a4b97399f2.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux
文章平均质量分 61
Linux
_李少侠_
这个作者很懒,什么都没留下…
展开
-
Linux虚拟网络基础 —Tun
tun是一个网络层(IP)的点对点设备,它启用了IP层隧道功能。Linux一共原生支持5种三层隧道:原创 2022-01-24 21:11:58 · 2673 阅读 · 0 评论 -
Linux虚拟网络基础 — Router
router在虚拟网络中就是路由器,实现三层通信作用。Linux 本身开启转发功能后就是一个路由器。不过linux默认没有打开路由转发功能。通过 cat /proc/sys/net/ipv4/ip_forward 命令可以查看路由转发功能是否开启。如果是1:表示打开了Linux的路由转发功能。如果是0:表示没有打开路由转发功能。临时开启方法,重启会失效:echo "1" > /proc/sys/net/ipv4/ip_forward永久开启的方法是修改配置文件:“/etc/sysct原创 2022-01-13 00:28:04 · 755 阅读 · 0 评论 -
Linux虚拟网络基础 — Bridge
bridge是一个虚拟网络设备,具有网络设备的特性(可以配置IP、MAC地址等);而且bridge还是一个虚拟交换机,和物理交换机设备功能类似。bridge是用于连接两个不同网段的常见手段,不同网络段通过bridge连接后就如同在一个网段一样,工作原理很简单就是L2数据链路层进行数据包的转发。对于普通的网络设备,就像一个管道,只有两端,数据从一端进,从另一端出。而 Bridge 有多个端口,数据可以从多个端口进,从多个端口出。Bridge 的这个特性让它可以接入其他的网络设备,比如物理设备、虚拟设备、原创 2022-01-12 23:13:41 · 2470 阅读 · 0 评论 -
Linux虚拟网络基础 — veth pair
veth pair是成对出现的,用来连接两个虚拟以太端口。如果两个namespace需要网络连接,就可以通过veth pair进行操作。直接相连直接相连是最简单的方式,如下图,一对 veth-pair 直接将两个 namespace 连接在一起。通过Bridge相连Linux Bridge 相当于一台交换机,可以中转两个 namespace 的流量。如下图,两对 veth-pair 分别将两个 namespace 连到 Bridge 上。实战直接相连的方式连接连个命名空间,veth pai原创 2022-01-12 01:08:01 · 896 阅读 · 0 评论 -
Linux虚拟网络基础 — namespace
Linux Namespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于某个特定的Namespace。每个namespace下的资源对于其他namespace下的资源都是透明,不可见的。因此在操作系统层面上看,就会出现多个相同pid的进程。系统中可以同时存在两个进程号为0,1,2的进程,由于属于不同的namespace,所以它们之间并不冲突。而在用户层面上只能看到属于用户自己namespace下的资源,例如使用ps命令只能列出自己namespace下的进程。原创 2022-01-11 23:50:32 · 332 阅读 · 0 评论 -
Linux虚拟网络基础 — Tap
文章目录Tap/TunTap/Tun工作原理Tap/Tun在libvirt中的应用Tap/TunTUN和TAP设备是Linux内核虚拟网络设备,纯软件实现。OS向连接到TUN/TAP设备的用户空间程序发送报文;用户空间程序可以像物理接口发送报文那像向TUN/TAP口发送报文,在这种情况下,TUN/TAP设备发送(或注入)报文到OS协议栈,就像报文从物理端口收到一样。TUN/TAP provides packet reception and transmission for user space p原创 2022-01-11 00:25:29 · 3639 阅读 · 0 评论 -
epoll
文章目录epoll接口工作模式epoll原理epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关联的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。epoll接口epoll相关的三个接口:int epoll_create(int size); int epoll_ctl(int epfd, int op, int原创 2021-10-10 23:44:26 · 278 阅读 · 0 评论 -
select与poll
文章目录select调用过程select缺点pollselect当I/O实践发生时,select并不知道有出现在哪些流,那么它就会无差别轮询所有流,找出能读出数据或者写入数据的流,然后对他们进行操作。所以select具有O(n)的无差别轮询复杂度,因此处理的流越多,无差别轮询时间就越长。调用过程1、使用copy_from_user从用户空间拷贝fd_set到内核空间2、注册回调函数__pollwait3、遍历所有fd,调用其对应的poll方法(对于socket,这个poll方法是sock_p原创 2021-09-22 23:35:28 · 935 阅读 · 0 评论