-f
これらと-A
の違いは何ですかss
?
-f
-A
に関連するものはどれですか-t, -u, -4, -6, -w, -x
?
-A inet,packet
ヒントですか-A tcp,udp,raw
?
いくつかのソケットの概念を知っていますが、マンページの用語を理解することはできません。
ありがとうございます。
- F
FAMILYタイプのディスプレイソケット。現在、unix、inet、inet6、link、netlinkシリーズをサポートしています。
- 1つの質問
ダンプするソケットテーブルのカンマ区切りリスト。次の識別子が理解されます。all、inet、tcp、udp、raw、unix、packet、netlink、unix_dgram、unix_stream、unix_seqpacket、packet_raw、packet_dgram。
答え1
-4, -6, -x
- マニュアルページによると。
-t
, -u
, -w
- すべてソケットテーブルに対応します。
-A inet,packet
暗示するか?-A tcp,udp,raw?
テーブルは、すべてinet
、、、おそらく含まれていることを意味しますtcp
。どうやってみると合成のようで似たようです。udp
raw
dccp
sctp
all
inet
-A tcp,inet
たとえば、「ソケットテーブル」の値が重複して指定されていると、重複エントリがss
表示されないことがわかりました。
私は考え-A packet
て-A raw
連絡が切れました。それで私は-A inet,packet
それがそれ以上に厳密に見えるべきだと思います-A tcp,udp,raw
。
警戒する
-A raw
彼らがすることが関連しているように見えるかもしれませんが、-A packet
実際にはいくつかの違いがあります。現在、すべてのパケットソケットはリスニングソケットとして扱われますが、[*]ss
オプションが渡されると(ほとんど?)、rawソケットが表示されます。一般的に使用される生およびパケットソケットはあまりありません。これを見て、ここを信頼したくないと判断したら、使用されているすべての生のソケットとパケットソケットをリストします。-l
-l
-l
ss -a -A raw,packet
見知らぬ人でも、テーブル内のパケットがアドレスファミリに属しているかどうかをss
確認する方法はありません。raw
link
# ss -A raw -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 0.0.0.0:ipproto-255 0.0.0.0:* users:(("atop",pid=26422,fd=4))
UNCONN 0 0 *:ipv6-icmp *:* users:(("NetworkManager",pid=1317,fd=17))
# ss -f link -p
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
p_raw 0 0 *:wlp2s0 * users:(("dhclient",pid=20548,fd=5))
p_dgr 0 0 [34958]:wlp2s0 * users:(("wpa_supplicant",pid=1406,fd=13))
p_dgr 0 0 [0]:* * users:(("wpa_supplicant",pid=1406,fd=16))
p_dgr 0 0 [0]:* * users:(("wpa_supplicant",pid=1406,fd=12))
# ss -A raw -f link -p
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
??? UNCONN 0 0 0.0.0.0:ipproto-255 0.0.0.0:* users:(("atop",pid=26422,fd=4))
icmp6 UNCONN 0 0 *:ipv6-icmp *:* users:(("NetworkManager",pid=1317,fd=17))
今回も、両方のオプションをANDまたはORに結合する必要があるかどうかを判断できないようです。 ss -A all -f link
と同じ出力を提供しますss -A all
。しかし、ss -A raw -f link
与えられた行数がss -f link
。
また、アドレス系列の概念はLinuxにはないようlink
です。ss
AF_LINK
AF_PACKET
「ソケットテーブル」という名前は、カーネル内のベーステーブルを指すように聞こえます。したがって、ソケットを正確にリストすることは非常に効率的です。tcp
たとえば、テーブル全体のみを一覧表示します。
ただし、前のプレーンテキスト/ procインターフェイスが前の下にリストされていることがわかります。man netstat
tcp
...そしてこれらはまったく一致しません。たとえば、両方とも別々のテーブルがありますtcp6
。よく。
ss
現実は、カーネルハッシュテーブルがinet用でinet6用の別のテーブルがあるということです。 「ソケットテーブル」がinetとどのように関連しているかは、実際には理解できません。sock_diag
、作られたようですss
。
前述のFILTER式などのオプションman ss
可能スキャンする必要があるフォームのサイズと比較して、印刷する量がはるかに少なくなります。この意味では、カーネルが返したリスト全体をダンプするよりも効率が悪くなる可能性があります。
効率性を心配する必要はないようです。
ノート
[*]証明:それが本当であるstrace
ことを示していますss
何もない、転送せずにパケットソケットのリストを要求する場合-l
:
$ strace -f -e '!mprotect,mmap,read,write,lseek' ss -A packet
...
openat(AT_FDCWD, "/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=258624, ...}) = 0
mmap(NULL, 136384, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbffcade000
mmap(0x7fbffcae4000, 65536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7fbffcae4000
mmap(0x7fbffcaf4000, 24576, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fbffcaf4000
mmap(0x7fbffcafa000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7fbffcafa000
mmap(0x7fbffcafc000, 13504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fbffcafc000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbffcadc000
arch_prctl(ARCH_SET_FS, 0x7fbffcadce40) = 0
munmap(0x7fbffcdc7000, 199180) = 0
set_tid_address(0x7fbffcadd110) = 2588
set_robust_list(0x7fbffcadd120, 24) = 0
rt_sigaction(SIGRTMIN, {sa_handler=0x7fbffcae4c50, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7fbffcaf1030}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7fbffcae4ce0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7fbffcaf1030}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
statfs("/sys/fs/selinux", {f_type=SELINUX_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={val=[0, 0]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
statfs("/sys/fs/selinux", {f_type=SELINUX_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={val=[0, 0]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
brk(NULL) = 0x563e25ce6000
brk(0x563e25d07000) = 0x563e25d07000
access("/etc/selinux/config", F_OK) = 0
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbffc9db000
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCGWINSZ, {ws_row=35, ws_col=150, ws_xpixel=0, ws_ypixel=0}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0), ...}) = 0
[ss output starts here]
State Recv-Q Send-Q Local Address:Port Peer Address:Port
[ss output ends]
munmap(0x7fbffc9db000, 1052672) = 0
exit_group(0) = ?