O que significa ser um protocolo
Um protocolo é uma regra (ou coleção de regras) sobre como as informações são comunicadas. Um protocolo application-layer descreve como os programas e serviços se comunicam com os protocolos subjacentes das camadas "inferiores". Essas camadas inferiores - como a camada de transporte - descrevem como ocorre a comunicação em geral, incluindo como a comunicação de camada superior está empacotado.
Esse é um resumo muito geral e há mais de um modelo de rede em camadas. Quantas camadas, até mesmo, são determinadas pelo modelo que se escolhe usar para descrever como funciona a rede.
Juntas, as camadas compõem um conjunto, como o conjunto de protocolos de Internet , que descreve como um sistema em funcionamento (que pensamos como "uma rede") é funcionar.
O ponto-chave é que um protocolo é uma regra ou descrição de como algo deve funcionar. Portanto, um protocolo não é "parte" de um programa em qualquer sentido comum de "parte". No entanto, um programa pode implementar um protocolo da camada de aplicação. Isso significa que está escrito para realizar o tipo de comunicação especificado no protocolo, de uma maneira que esteja de acordo com o protocolo.
(Às vezes, os programas também não são compatíveis, variando de acordo com os requisitos de um protocolo. Geralmente, isso é uma falha - às vezes é intencional, quando o protocolo não atende às necessidades de usuários ou desenvolvedores.)
Programas que implementam protocolos de camada de aplicação
O DHCP é implementado por servidores DHCP e clientes DHCP. HTTP é implementado por servidores web (como o Apache), navegadores da web, rastreadores e (juntamente com outros protocolos) gerenciadores de download . Os navegadores, rastreadores e gerenciadores de downloads são clientes HTTP. O SMB no Ubuntu é implementado pelo Samba, que tem componentes de cliente e servidor.
Os protocolos da camada de aplicativo ficam no topo das camadas de nível inferior que fornecem um modelo cliente-servidor. Os protocolos da camada de aplicativos usam esse modelo; você notará que eu falei sobre clientes e servidores para todos os exemplos acima.
Às vezes, um programa tem o mesmo nome de um protocolo implementado. Por exemplo, a maioria dos sistemas operacionais, incluindo o Ubuntu, tem um cliente de FTP chamado ftp
. Note que este é apenas um cliente FTP; um executável do servidor FTP geralmente é chamado ftpd
( d
para "daemon" ). Um daemon é um serviço que é executado em segundo plano e muitos programas do servidor são daemons. É comum que o daemon que implementa o protocolo "FooBar" seja chamado de foobard
. Por exemplo, os executáveis do servidor da Web são geralmente denominados httpd
.
Os principais utilitários de arquivos não implementam protocolos de camada de aplicação
Você pode estar se perguntando se os utilitários de arquivo como ls
, cp
, chmod
, rm
e mv
implementam qualquer aplicação protocolos de camada. A resposta é que eles não.
O uso de qualquer um desses utilitários de arquivos pode causar a comunicação de rede, se eles acessarem arquivos ou informações de diretório em uma rede. Por exemplo, se você montou um compartilhamento NFS (ou SMB) e usa ls
para listar o conteúdo de uma pasta remota, a comunicação de rede está acontecendo. Mas esses utilitários de arquivos não cuidam dessa comunicação de rede. Em vez disso, o cliente do NFS (ou SMB) executa essa comunicação. Normalmente, um utilitário de arquivo como ls
ou chmod
funcionará exatamente da mesma maneira que ao acessar arquivos locais.