我想知道以下之间有什么区别:
# ifconfig eth0:0 1.1.1.1/24
Run Code Online (Sandbox Code Playgroud)
并且只是
# ip addr add 1.1.1.1/24 dev eth0
Run Code Online (Sandbox Code Playgroud)
顺便说一句我做不到
# ip addr add 1.1.1.1/24 dev eth0:0
RTNETLINK answers: File exists
Run Code Online (Sandbox Code Playgroud)
它的ip addr show
表现有所不同:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 8c:ae:4c:fe:1f:75 brd ff:ff:ff:ff:ff:ff
inet 1.1.1.1/24 brd 1.1.1.255 scope global eth0:0 ---> with ifconfig
inet 2.2.2.2/24 scope global eth0 ----> with ip
Run Code Online (Sandbox Code Playgroud)
我什么时候应该选择第一种方式,什么时候应该选择第二种方式?看起来更酷
sock
中定义的结构体有sock.h
两个看起来非常相似的属性:
sk_wmem_alloc
,定义为“已提交的传输队列字节”sk_wmem_queued
,定义为“持久队列大小”对我来说,这sk_wmem_alloc
是当前分配给发送队列的内存量。但那么,什么是sk_wmem_queued
?
wmem_queued:在传输队列中排队且尚未发送或尚未确认的套接字发送缓冲区使用的内存量。
ss
男子还给出了定义,但并没有真正启发我(我不明白IP层与此有什么关系):
wmem_alloc:用于发送数据包(已发送到第 3 层)的内存 wmem_queued:用于发送数据包(尚未发送到第 3 层)分配的内存
sock_diag(7)
页也对这些属性有自己的定义:
SK_MEMINFO_WMEM_ALLOC:发送队列中的数据量。 SK_MEMINFO_WMEM_QUEUED:TCP 排队但尚未发送的数据量。
所有这些定义都是不同的,并且没有一个清楚地解释_alloc
和_queued
变体如何不同。