AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 542712
Accepted
sebelk
sebelk
Asked: 2019-09-20 13:13:38 +0800 CST2019-09-20 13:13:38 +0800 CST 2019-09-20 13:13:38 +0800 CST

Saída detalhada do comando ss

  • 772

Eu gostaria de saber o significado de alguns itens na saída do comando ss. Por exemplo:

# sudo   ss -iepn '( dport = :3443 )'

Netid      State      Recv-Q      Send-Q             Local Address:Port              Peer Address:Port      
tcp        ESTAB      0           0                  192.168.43.39:45486              190.0.2.1:443       users:(("rocketchat-desk",pid=28697,fd=80)) timer:(keepalive,11sec,0) uid:1000 ino:210510085 sk:16f1 <->
         ts sack cubic wscale:7,7 rto:573 rtt:126.827/104.434 ato:40 mss:1388 pmtu:1500 rcvmss:1388 advmss:1448 cwnd:10 bytes_sent:12904 bytes_retrans:385 bytes_acked:12520 bytes_received:13322 segs_out:433 segs_in:444 data_segs_out:215 data_segs_in:253 send 875.5Kbps lastsnd:18722 lastrcv:18723 lastack:18662 pacing_rate 1.8Mbps delivery_rate 298.1Kbps delivered:216 busy:16182ms retrans:0/10 dsack_dups:10 rcv_rtt:305 rcv_space:14480 rcv_ssthresh:6
CLOSE-WAIT      1           0                [2800:810:54a:7f0::1000]:37844                                     [2800:3f0:4002:803::200a]:443                    users:(("plasma-browser-",pid=16020,fd=175)) uid:1000 ino:90761 sk:1d -->
         ts sack cubic wscale:8,7 rto:222 rtt:21.504/5.045 ato:40 mss:1348 pmtu:1500 rcvmss:1208 advmss:1428 cwnd:10 bytes_sent:1470 bytes_acked:1471 bytes_received:11214 segs_out:20 segs_in:20 data_segs_out:8 data_segs_in:13 send 5014881bps lastsnd:96094169 lastrcv:96137280 lastack:96094142 pacing_rate 10029464bps delivery_rate 1363968bps delivered:9 app_limited busy:91ms rcv_space:14280 rcv_ssthresh:64108 minrtt:17.458

Principalmente itens faltando na página man ss, eu fiz algumas suposições, por favor me corrija se eu estiver errado:

  • rcvmss: Gostaria de saber se o MMS recebe
  • advmss: ?
  • app_limited: ?
  • ocupado: ?
  • retransmissão: ?
  • dsack_dups: Segmentos duplicados?
  • minrtt: RTT mínimo alcançado no soquete?
tcp
  • 2 2 respostas
  • 4724 Views

2 respostas

  • Voted
  1. Best Answer
    Arkadiusz Drabczyk
    2019-09-20T15:30:11+08:002019-09-20T15:30:11+08:00

    O significado de alguns desses campos pode ser deduzido do código-fonte do ss e do kernel Linux. As informações que você vê são impressas por tcp_show_info() função em iproute2/misc/ss.c.

    advmss :

    Em ss.c:

    s.advmss     = info->tcpi_advmss;
    (...)
        if (s->advmss)
            out(" advmss:%d", s->advmss);
    

    Em linux/include/linux/tcp.h:

    u16 advmss;     /* Advertised MSS           */
    

    app_limited:

    Em ss.c:

    s.app_limited = info->tcpi_delivery_rate_app_limited;
    (..)
    if (s->app_limited)
       out(" app_limited");
    

    Esse não está documentado linux/include/uapi/linux/tcp.hno Linux:

    struct tcp_info {
    (...)
        __u8    tcpi_delivery_rate_app_limited:1;
    

    mas surpreendentemente podemos encontrar algumas informações no commit que o introduziu:

    commit eb8329e0a04db0061f714f033b4454326ba147f4
    Author: Yuchung Cheng <[email protected]>
    Date:   Mon Sep 19 23:39:16 2016 -0400
    
        tcp: export data delivery rate
    
        This commit export two new fields in struct tcp_info:
    
          tcpi_delivery_rate: The most recent goodput, as measured by
            tcp_rate_gen(). If the socket is limited by the sending
            application (e.g., no data to send), it reports the highest
            measurement instead of the most recent. The unit is bytes per
            second (like other rate fields in tcp_info).
    
          tcpi_delivery_rate_app_limited: A boolean indicating if the goodput
            was measured when the socket's throughput was limited by the
            sending application.
    
        This delivery rate information can be useful for applications that
        want to know the current throughput the TCP connection is seeing,
        e.g. adaptive bitrate video streaming. It can also be very useful for
        debugging or troubleshooting.
    

    Um rápido confirma que foi git blameadicionado depois que foi adicionado ao kernel.ss.capp_limitedtcpi_delivery_rate_app_limited

    ocupado :

    Em ss.c:

    s.busy_time = info->tcpi_busy_time;
    (..)
        if (s->busy_time) {
            out(" busy:%llums", s->busy_time / 1000);
    

    E no include/uapi/linux/tcp.hLinux diz:

    struct tcp_info {
    (...)
        __u64   tcpi_busy_time;      /* Time (usec) busy sending data */
    

    retransmissão :

    Em ss.c:

    s.retrans    = info->tcpi_retrans;
    s.retrans_total  = info->tcpi_total_retrans;
    (...)
        if (s->retrans || s->retrans_total)
            out(" retrans:%u/%u", s->retrans, s->retrans_total);
    

    tcpi_total_retransnão está descrito em linux/include/uapi/linux/tcp.h:

    struct tcp_info {
    (...)
        __u32   tcpi_total_retrans;
    

    mas é usado em tcp_get_info():

    void tcp_get_info(struct sock *sk, struct tcp_info *info)
    {
        const struct tcp_sock *tp = tcp_sk(sk); /* iff sk_type == SOCK_STREAM */
    (...)
        info->tcpi_total_retrans = tp->total_retrans;
    

    E linux/include/linux/tcp.hnele diz:

    struct tcp_sock {
    (...)
        u32 total_retrans;  /* Total retransmits for entire connection */
    

    tcpi_retranstambém não é descrito, mas lendo tcp_get_info() novamente vemos:

    info->tcpi_retrans = tp->retrans_out;
    

    E em linux/include/linux/tcp.h:

    struct tcp_sock {
    (...)
        u32 retrans_out;    /* Retransmitted packets out        */
    

    dsack_dups :

    Em ss.c:

    s.dsack_dups = info->tcpi_dsack_dups;
    (...)
        if (s->dsack_dups)
            out(" dsack_dups:%u", s->dsack_dups);
    

    Em include/uapi/linux/tcp.hLinux:

    struct tcp_info {
    (...)
    __u32   tcpi_dsack_dups;     /* RFC4898 tcpEStatsStackDSACKDups */
    

    E em https://www.ietf.org/rfc/rfc4898.txt :

    O número de segmentos duplicados relatados ao host local pelos blocos D-SACK.

    • 8
  2. saleetzo
    2019-09-20T14:00:51+08:002019-09-20T14:00:51+08:00

    MSS normalmente significa Tamanho Máximo do Segmento.

    rcvmss: tamanho máximo do segmento que você informa aos colegas que você aceitará

    advmss: anuncie o tamanho máximo do segmento

    app_limited: limite os fluxos TCP com limitação de aplicativos na solicitação ou nas respostas

    busy: A conexão TCP está ocupada?

    retrans: temporizador de retransmissão. Se o remetente de um pacote de dados não receber a confirmação antes que o temporizador expire, ele tentará retransmitir o pacote

    dsack_dups: confirmação seletiva duplicada

    minrtt: tempo mínimo de ida e volta, tempo mínimo de viagem de um pacote da origem ao destino

    Deixe-me saber se algum destes está errado e eu vou corrigir.

    • 1

relate perguntas

  • O AF_INET é necessário para criar o arquivo de soquete?

  • Perfuração UDP ou TCP para conectar dois pares (cada um atrás de um roteador)

  • Construindo uma ponte de soquete Unix via TCP

  • A conexão com o IP 0.0.0.0 foi bem-sucedida. Como? Por quê?

  • Qual processo é responsável pelo TCP no Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve