tcp并发服务器实现eth0功能

tcp并发服务器实现eth0功能,第1张

大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务。这里附上源代码来个小结吧。
一、 循环服务
循环网络服务器编程实现的步骤是这样的:
建立socket(这里用到socket()函数及函数setsockopt())
|
|
\|/
把socket和IP地址及端口绑定(这里用到bind函数)
|
|
\|/
开始监听(这里用到listen()函数)
|
|
/\
/ \
\ / \
----------------------- | 有连接|
| / \ /
| \ /
| \ /
| |
| 接受新的连接(这里用到accept()函数)
| | /___________________________________________________
| | \ |
| \|/ |
| 从连接里读取数据(这里用到recv()系统函数,当然也可以是read()函数) |
| | |
| | |
| \|/ |
| 返回信息给连接(这里用到send()系统函数,当然也可以是write()函数) |
| | |
| | |
| /\ |
| / \ |
| / \ |
| | 还有数据 |-Y-------------------------------------------------------
| \ /
| \ /
| \ /
|_______________________________|
这种服务器模型是典型循环服务,如果不加上多进程/线程技术,此种服务吞吐量有限,大家都可以看到,如果前一个连接服务数据没有收发完毕后面的连接没办法处理。所以一般有多进程技术,对一个新连接启用一个新进程去处理,而监听socket继续监听。
/

有时候,一台服务器需要设置多个ip,但又不想添加多块网卡,那就需要设置虚拟网卡这里介绍几种方式在linux服务器上添加虚拟网卡

我们向eth0中添加一块虚拟网卡:

第一种方法:快递创建删除虚拟网卡

sudo ifconfig eth0:0 1921681010 up

以上的命令就可以在eth0网卡上创建一个叫eth0:0的虚拟网卡,他的地址是:192168163

如果不想要这个虚拟网卡了,可以使用如下命令删除:

sudo ifconfig eth0:0 down

重启服务器或者网络后,虚拟网卡就没有了

hzhsan:但是发现添加的虚拟网卡和原网卡物理地址是一样的。

第二种方法:修改网卡配置文件

在ubuntu下,网卡的配置文件是/etc/network/interfaces,所以我们修改它:

sudo vim /etc/network/interfaces

在这个文件中增加如下内容并保存:

auto eth0:0

iface eth0:0 inet static

address 1921681010

netmask 2552552550

#network 192168101

#broadcast 1921681255

保存后,我们需要重启网卡(重新加载配置文件)才会生效,使用如下命令重启:

sudo /etc/initd/networking restart

他的优点是重启服务器或者网卡配置不会丢失。

在linux中虚拟网卡的方法

第三种方法:创建tap

前两种方法都有一个特点,创建的网卡可有不同的ip地址,但是Mac地址相同。无法用来创建虚拟机。

添加虚拟网卡tap

tunctl -b

附上相关命令简介:

显示网桥信息

brctl show

添加网桥

brctl addbr virbr0

激活网桥

ip link set virbr0 up

添加虚拟网卡tap

tunctl -b

tap0 -------> 执行上面使命就会生成一个tap,后缀从0,1,2依次递增

激活创建的tap

ip link set tap0 up

将tap0虚拟网卡添加到指定网桥上。

brctl addif br0 tap0

给网桥配制ip地址

ifconfig virbr1 1692542514 up

将virbr1网桥上绑定的网卡eth5解除

brctl delif virb1 eth5

给virbr1网桥添加网卡eth6

brctl addif virbr1 eth6

可以!

你在运行自己的验证者节点时,首先要意识到的是,你这样做是有助于网络安全性的,而且你无需过度担心正常运行时间。

假设网络总体上是健康的(始终有超过 2/3 的节点在线,并且一直在终局化新的区块),在线时间超过 50% 的验证者将看到自己的权益会不断增加。

引用以太坊基金会的 ETH Staking 指南系列文章中的一句话:

这就减轻了验证者在客户端备份和网络延迟上的负担,因为离线的惩罚并不那么严重。

你遭受较大惩罚的概率很小

ETH 20 协议内设反串谋激励机制,也就是说,会对出错时机上相关的验证者施以惩罚。

惩罚措施包括:比例性罚没(proportional slashing)—— 被销毁的 ETH 比例取决于最近遭受罚没的验证者数量;怠工惩罚(inactivity leak)—— 如果有超过 1/3 的验证者离线且区块链不能终局化区块,离线的验证者就会遭到严惩。

比例性罚没意味着,如果有质押服务提供商因出现 bug 或被攻击而导致其控制下的验证者全体失败,他们会比独立运行验证者节点的个体损失更多 ETH 。

此外,如果巨鲸和提供商的基础设施全部瘫痪,它们同样会面临遭受怠工惩罚并失去大量 ETH。

即使提供商谨慎地确保了地理位置和客户端软件去中心化,要想避开一切攻击(社会工程、外部攻击者入侵或内部人员作恶)也是难比登天

你可保有退出的权利

身为 ETH 20 验证者,你必须保管好两样东西 —— 签名私钥和取款私钥。

虽然拿回资金必须包邮取款私钥,但你也需要签名私钥来初始化反激活验证者 *** 作(等 ETH 20 进入 Phase 1 后,这一规则将发生改变)。

如果你选择使用质押服务提供商,你必须将签名私钥的控制权交给该提供商(如果一个签名私钥存在多个副本,提供商就很难为你提供免遭罚没的服务)。

也就是说,如果提供商离线,或者你不满意其服务,你能否退出还取决于提供商。

虽然在提交质押品之前,你可以通过交换密钥(key exchange)的方式,让你的提供商为你提供一个签过名的退出通道,但这种方案并非万无一失。一旦出现硬分叉,这个消息就会失效。这就需要不断追踪这个消息乃至多个消息的有效性(从用户体验的角度来说,这样并不好)。

质押硬件成本较低且方便易用

自己运行验证者节点并不像你想象中那么可怕或昂贵。一旦 ETH 20 上线,你就可以在一个旧手机或树莓派(100 美元)上运行验证者节点。

我们专门为开发者撰写了关于如何使用 Nimbus 在安卓系统上运行验证者节点的指南(分别是这篇和这篇)。在主网上线前,我们一直在尽可能简化这一流程。尤其值得一提的是,主网指南将面向那些没有编程经历的用户,而且会尽可能实现 “安装 + 质押 ETH = 正常运行”。

你可以帮助以太坊增强抗攻击性

与其让同一个实体控制 100 个节点,不如让一个实体控制一个节点。—— Barnabe Monnot

从长远角度来看,以太坊的价值越高,抗攻击性越强,其共识层的去中心化程度就越高。

中本聪最初的愿景是 “一 CPU 一票制”,但是如今的 PoW 系统已经偏离了这一愿景。就目前而言,绝大部分挖矿资源都集中在少数矿池手中。个体矿工都为了缩小自己收入的波动性而加入矿池。

我们之所以选择从 PoW 模式转向 PoS 模式,也是为了解决这一问题。

如果有越来越多人选择自己运行验证者节点,我们就可以将这一愿景变为现实,增强以太坊的抗攻击性,使之在无需审查的情况下不断发展。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13235716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-24
下一篇 2023-06-24

发表评论

登录后才能评论

评论列表(0条)

保存