"ss"의 "-f"와 "-A"의 차이점은 무엇입니까?

"ss"의 "-f"와 "-A"의 차이점은 무엇입니까?

-f이들 그리고 -A의 차이점은 무엇인가요 ss?

-f-A와 관련된 것은 어느 것 입니까 -t, -u, -4, -6, -w, -x?

-A inet,packet힌트 인가요 -A tcp,udp,raw?

일부 소켓 개념을 알고 있지만 맨페이지의 용어를 이해할 수 없습니다.

감사해요.

-에프

FAMILY 유형 디스플레이 소켓. 현재 unix, inet, inet6, link, netlink 시리즈를 지원합니다.

-하나의 질문

덤프할 소켓 테이블의 쉼표로 구분된 목록입니다. 다음 식별자가 이해됩니다: 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및 아마도 또한 포함함을 의미합니다 dccpsctp. all어떻게 보면 합성인 것 같아서 inet비슷한 것 같아요.

-A tcp,inet예를 들어 "소켓 테이블" 값이 중복되어 지정되면 중복 항목 이 ss표시되지 않는 것으로 나타났습니다 .

나는 생각 -A packet하고 -A raw연락이 끊겼습니다. 그래서 나는 -A inet,packet그것이 그 이상으로 엄격하게 보여져야 한다고 생각한다 -A tcp,udp,raw.

경계하다

-A raw그들이 하는 일이 연관되어 있는 것처럼 보일 수도 있지만 -A packet실제로는 몇 가지 차이점이 있습니다. 현재 모든 패킷 소켓은 청취 소켓으로 처리되지만[*] ss옵션이 전달되면 (대부분?) 원시 소켓이 표시됩니다. 일반적으로 사용되는 원시 및 패킷 소켓은 많지 않습니다. 이것을 보고 여기를 신뢰하고 싶지 않다고 결정하면 사용된 모든 원시 소켓과 패킷 소켓을 나열하면 됩니다.-l-l-lss -a -A raw,packet

낯선 사람이라도 테이블의 패킷이 주소 계열 에 속하는지 ss확인할 방법이 없습니다 .rawlink

# 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같습니다 .ssAF_LINKAF_PACKET

"소켓 테이블"이라는 이름은 커널 내의 기본 테이블을 가리키는 것처럼 들립니다. 따라서 소켓을 정확하게 나열하는 것이 매우 효율적입니다. tcp예를 들어 전체 테이블만 나열합니다.

하지만 이전 일반 텍스트 /proc 인터페이스가 이전 아래에 나열된 것을 볼 수 있습니다.man netstattcp...그리고 이것들은 정확히 일치하지 않습니다. 예를 들어 둘 다 별도의 테이블을 가지고 있습니다 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)                           = ?

관련 정보