Qual processo é responsável pelo TCP no Linux

1

Estou interessado em saber qual processo no Linux realmente obtém informações da camada de Rede no lado do recebimento, aplica toda a lógica relacionada ao TCP (verificação de erro no nível do TCP, reconhecimento de segmentos, etc.) e a coloca em recebimento buffer da conexão em espera?

Por outro lado, qual processo recebe informações que foram enviadas para o socket pelo aplicativo host para processá-las e enviá-las para a camada de rede?

Talvez eu não entenda este processo corretamente ... Por favor, ajude

    
por RuslanSh 19.01.2018 / 18:04

2 respostas

2

Em termos de código, é o código que existe no espaço do kernel que realmente manipula a implementação do TCP para cima dos drivers da NIC. O kernel do Linux está ciente do seu hardware de rede e o abstrai em um conjunto de adaptadores de link. A pilha TCP / UDP / IP está ciente desses dispositivos de "link" e é ainda mais abstraída para conceitos de nível Linux / Unix, como soquetes.

Os processos acessam essa funcionalidade por meio de chamadas do sistema para o kernel. Enquanto o conceito de um processo no Linux é isolado ou fechado a partir do kernel, é tecnicamente verdade que cada processo é capaz de acessar essa funcionalidade através de chamadas do sistema.

Isso significa que quando os dados são recebidos na NIC, o kernel manipula o TCP. Quando um aplicativo recebe dados do buffer que o processo está manipulando TCP, embora apenas de uma maneira bloqueada por meio de chamadas do sistema no espaço / memória do kernel por meio de sua inicialização de uma chamada do sistema.

Como o Linux é preventivo, mesmo as chamadas para o espaço do kernel são parte de pelo menos como o kernel controla o compartilhamento de tempo dos processos, portanto, tecnicamente, você pode considerar o TCP como parte de todo processo. Mas se você considerar apenas o código que pertence a esse espaço de memória de processos (aplicativos de espaço do usuário), apenas o kernel tratará o TCP.

Lembre-se de que o Linux / Unix incorpora alguma funcionalidade de soquete que está abstraindo o TCP / IP em bibliotecas que estão vinculadas ao tempo de compilação de um aplicativo, portanto, estaria em seu espaço de memória. Como estruturas de memória usadas para representar endereços IP.

    
por 19.01.2018 / 22:19
4

Sua pergunta é muito confusa. É baseado na descrição do TCP / IP em termos do modelo OSI. E isso não é possível. O TCP / IP é anterior ao OSI e nunca foi planejado para obedecer a esse modelo. Acessando esta página usando um navegador compatível com HTTP / 2, você tem pelo menos 4 camadas de sessão separadas, a compactação está sendo manipulada em pelo menos 3 camadas diferentes da pilha, sem mencionar a otimização de WAN na própria rede.

Which process is responsible for TCP in Linux

TCP acontece no kernel. Não nos processos do usuário. Então, dependendo do seu quadro de referência, todos eles ou nenhum deles.

    
por 19.01.2018 / 19:14

Tags