What's the difference between Unix socket and TCP/IP socket?
Um soquete TCP / IP é usado para comunicação entre 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. AIUI, pelo menos no Linux, os soquetes TCP / IP sempre resultam na geração e decodificação de pacotes TCP / IP, mesmo se o cliente e o servidor estiverem na mesma máquina.
Por outro lado, um soquete de domínio unix (às vezes encurtado para um soquete unix) opera em uma única máquina. Os sockets de escuta vivem na hierarquia do sistema de arquivos e o acesso a eles pode ser controlado por 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 seu servidor de banco de dados e incluir uma cópia dela no código da sua webapp, basta informar ao servidor de banco de dados que o usuário que está executando o webapp tem acesso à conta de usuário correspondente no banco de dados.
TCP sockets are handled by Unix too?
Claro
TCP sockets is part of the TCP protocol specification
As especificações do 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 que a do termo "API sockets".
A "API sockets", 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 sockets TCP e UDP tende a ser o mesmo em diferentes plataformas, mas coisas e coisas mais avançadas que interagem com outras partes do sistema operacional variam, por exemplo, em sistemas unix-like, um socket é identificado por um identificador de arquivo e pode ser lido / escrito pelas APIs de arquivo, este não é o caso no Windows.
Algumas extensões para a API sockets foram documentadas em rfcs, mas essas RFCs são apenas "informativas".
or any protocol could use IP Sockets ?
Quando uma aplicação cria explicitamente um socket usando a função "socket" (soquetes também são criados pela função accept) ela passa três parâmetros, "domain", "type" e "protocol". Entre eles, esses três parâmetros podem ser usados para selecionar vários tipos diferentes de soquete.
O domínio - seleciona a família de protocolos / endereços em uso, por exemplo, AF_INET para ipv4, AF_INET6 para ipv6, AF_Unix para caminhos do sistema de arquivos unix, etc.
O tipo - seleciona a semântica de comunicação, sendo as principais datagrama e fluxo, mas também há outros tipos mais especializados.
O protocolo - seleciona o protocolo a ser usado, se for definido como 0, um protocolo padrão para a combinação de domínio e o tipo será usado.