Respostas:
Um soquete UNIX é um mecanismo de comunicação entre processos que permite a troca bidirecional de dados entre processos em execução na mesma máquina.
Soquetes IP (principalmente soquetes TCP / IP) são um mecanismo que permite a comunicação entre processos pela rede. Em alguns casos, você pode usar soquetes TCP / IP para conversar com processos em execução no mesmo computador (usando a interface de loopback).
Os soquetes de domínio UNIX sabem que estão executando no mesmo sistema, para evitar algumas verificações e operações (como roteamento); o que os torna mais rápidos e mais leves que os soquetes IP. Portanto, se você planeja se comunicar com processos no mesmo host, essa é uma opção melhor do que os soquetes IP.
Edit: Conforme comentário de Nils Toedtmann : soquetes de domínio UNIX estão sujeitos a permissões do sistema de arquivos, enquanto soquetes TCP podem ser controlados apenas no nível do filtro de pacotes.
Você pode listar os soquetes unix locais da sua própria máquina com o seguinte comando:
netstat -a -p --unix
Diverta-se!
netstat
no entanto, funciona no Windows.
Qual é a diferença entre o soquete Unix e o soquete TCP / IP?
Um soquete TCP / IP é usado para comunicação através de redes TCP / IP. Um soquete TCP conectado é identificado pela combinação de IP local, porta local, IP remoto e porta remota. Um soquete TCP de escuta é identificado pela porta local e possivelmente pelo IP local. A AIUI pelo menos nos soquetes TCP / IP do Linux sempre resulta na geração e decodificação de pacotes TCP / IP, mesmo se o cliente e o servidor estiverem na mesma máquina.
Um soquete de domínio unix (às vezes reduzido para soquete unix), por outro lado, opera em uma única máquina. Os soquetes de escuta vivem na hierarquia do sistema de arquivos e o acesso a eles pode ser controlado pelas permissões do sistema de arquivos.
Além disso, um processo que aceita uma conexão em um soquete Unix pode determinar o ID do usuário do processo que se conecta. Isso pode evitar a necessidade de uma etapa de autenticação. Em vez de gerar uma senha para o servidor de banco de dados e incluir uma cópia dela no código do aplicativo da web, basta informar ao servidor do banco de dados que o usuário que está executando o aplicativo da web tem acesso à conta de usuário correspondente no banco de dados.
Soquetes TCP também são tratados pelo Unix?
Claro
Os soquetes TCP fazem parte da especificação do protocolo TCP
As especificações de protocolo da Internet tendem a se preocupar apenas com o que acontece na conexão, a especificação TCP contém uma definição de Socket, mas essa definição não é a mesma de como o termo é usado pela "API de sockets".
A "API de soquetes", como a conhecemos, foi introduzida pelo BSD, mas depois foi copiada em todo o lugar e é incluída como parte do padrão posix. O material básico para soquetes TCP e UDP tende a ser o mesmo em diferentes plataformas, mas o material mais avançado que interage com outras partes do sistema operacional varia, por exemplo, em sistemas tipo unix, um soquete é identificado por um identificador de arquivo e pode ser lido / gravado pelas APIs do arquivo, esse não é o caso no Windows.
Algumas extensões da API de soquetes foram documentadas em rfcs, mas esses RFCs são apenas "informativos".
ou algum protocolo poderia usar soquetes IP?
Quando um aplicativo cria explicitamente um soquete usando a função "soquete" (soquetes também são criados pela função de aceitação), ele passa três parâmetros, "domínio", "tipo" e "protocolo". Entre eles, esses três parâmetros podem ser usados para selecionar muitos tipos diferentes de soquetes.