ss comando: diferença entre soquetes brutos e unix

2

O comando ss (do conjunto de ferramentas iproute2 que vem como uma alternativa mais recente a netstat ) possui em --help as seguintes opções

   -0, --packet        display PACKET sockets
   -t, --tcp           display only TCP sockets
   -S, --sctp          display only SCTP sockets
   -u, --udp           display only UDP sockets
   -d, --dccp          display only DCCP sockets
   -w, --raw           display only RAW sockets
   -x, --unix          display only Unix domain sockets

Qual é exatamente a distinção feita entre RAW e UNIX soquetes de domínio?

E quais são realmente os PACKET sockets?

    
por pkaramol 01.09.2018 / 07:44

1 resposta

2

Um soquete bruto é um soquete rede ( AF_INET ou AF_INET6 normalmente). Ele pode ser usado para criar pacotes IP brutos que podem ser usados para solução de problemas ou para implementar sua própria implementação de TCP sem usar SOCK_STREAM :

Raw sockets allow new IPv4 protocols to be implemented in user space. A raw socket receives or sends the raw datagram not including link level headers. [raw(7)]

Ferramentas como nmap usam soquetes brutos para interromper o handshake TCP após oSYN inicial, SYN-ACK , pois a conexão TCP nunca foi completamente estabelecida. Como um soquete de rede, ele usa sockaddr_in para endereços.

No entanto, a criação de soquetes brutos é geralmente restrita. Somente processos privilegiados podem criá-los.

Um socket unix por outro lado é não um socket de rede ( AF_UNIX ). É um soquete local :

The AF_UNIX (also known as AF_LOCAL) socket family is used to communicate between processes on the same machine efficiently. [unix(7)]

Ele usa outra estrutura de endereço ( sockaddr_un ). É uma maneira comum de implementar a comunicação bidirecional em um único sistema para comunicação entre processos sem passando pela camada de rede.

E os pacotes sockets são pacotes brutos no nível driver :

Packet sockets are used to receive or send raw packets at the device driver (OSI Layer 2) level. They allow the user to implement protocol modules in user space on top of the physical layer. [packet(7)]

Os outros sockets atuam na camada network (OSI Layer 3) ou superior. Nesse ponto, você está falando diretamente com o driver da sua interface de rede.

Para obter mais informações, consulte socket(2) , ip(7) , packet(7) , raw(7) , socket(7) e unix(7) .

    
por 01.09.2018 / 09:42