[Computer rede] artigo uma visão geral de soquete

anuário

A, tomada Introdução

Dois, fluxo de comunicação de soquete

Três, soquete e http

A diferença entre 3,1 e soquete http

cenários 3.2 soquete e http de aplicação que


A, S ocket Perfil

Porta (porta) é acompanhado pelo nascimento do conceito da camada de transporte. Pode ser uma camada de rede de comunicação IP é distribuída a cada canal de comunicação. protocolo UDP e protocolo TCP embora muito diferente no trabalho, mas eles estabeleceram uma comunicação de uma porta para outra porta.

Quando entramos na camada de transporte, podemos chamar a API do sistema operacional, para construir um encaixe (socket) .

 

Tomada é uma interface de programação para o sistema operacional, ele é usado para representar uma rede de comunicações. Aplicação ao módulo de Chamada permite protocolo de rede do kernel do sistema de processamento de pelo socket, e esses módulos do kernel será responsável pela implementação de protocolos de rede específicos. Desta forma, podemos deixar o kernel para receber detalhes do protocolo de rede, e nós só precisará fornecer conteúdo a ser transmitido sobre ele, o kernel irá nos ajudar a controlar o formato e após o pacote de fundo.

 

Soquete pode ser visto como um ponto de extremidade de conexão de comunicação nos dois programas, um pedaço programa de informação para a tomada, o Socket envia essa informação para a tomada de outro, de modo que esta informação pode ser transmitida a outros programas. Tais como servidores e clientes interagem através de socket. As necessidades do servidor para se ligar a um número de porta na máquina, o cliente precisa declarar o seu próprio endereço que está ligado a qual a porta, de modo que o servidor eo cliente pode ser conectado.

 

Gerar um soquete, existem três parâmetros principais: o propósito de comunicação IP o endereço , utilizando o protocolo da camada de transporte (TCP ou UDP) e número de porta utilizado . Soquete tem a intenção de "socket". Ao combinar estes três parâmetros, com um "encaixe" o soquete de ligação, a camada de aplicação e a camada de transporte pode ser uma interface de encaixe, a partir de diferentes aplicações para distinguir um processo de comunicação ou a ligação de rede, a transmissão de dados é serviços simultâneos.

 

Portanto, na prática, não precisa saber os detalhes de como formar um pacote UDP, mas só precisa fornecer informações (endereço IP, número de porta, informação a ser transmitida, etc.) para criar um socket, então o socket vai ajudar o kernel do sistema operacional antes da transmissão baseado na informação que fornecem constituem um pacote UDP (qualificado pacotes e quadros, assim como uma camada inferior).

 

Dois, soquete fluxo de comunicação

Um programa em um host de um pedaço de informação na tomada, o conteúdo é acessado software de gerenciamento de rede soquete anfitrião de A, e esta informação é enviada para o Host B através do Host A placa de interface de rede, uma rede placa de interface host B recebe a esta informação, transmitida ao software de gerenciamento de rede de acolhimento B, software de gerenciamento de rede, esta informação vai economizar soquete host B, e, em seguida, o programa B pode ler esta informação na tomada.

Para comunicar através da Internet, pelo menos, um par de soquetes , uma tomada em execução no lado do cliente, chamado o ClientSocket , uma outra tomada em execução no servidor, chamado serverSocket .     

A forma de conexão de início e socket local do alvo a ser ligado, o processo de conexão entre a tomada pode ser dividido em três etapas: escuta servidor , cliente solicita , confirmação de conexão .     

  • Servidor de monitoramento: do lado do servidor de soquete não localizar um cliente específico soquete, mas em um estado de espera para uma conexão, monitoramento em tempo real do status da rede.
  • As solicitações do cliente: refere-se à solicitação de conexão feita por tomada de cliente, o objetivo é conectar ao soquete do servidor. Para este fim, a tomada de cliente deve descrever o soquete de servidor para se conectar a ele, apontando o número endereço e porta do soquete do lado do servidor, em seguida, fez um pedido de ligação à tomada no servidor.
  • confirmação de conexão: significa que quando o soquete de servidor para ouvir ou receber um pedido de ligação de um socket cliente, ele responde à solicitação do soquete do cliente para criar um novo segmento, o soquete de servidor descrever para o cliente, uma vez que o cliente para confirmar esta descrição, uma boa conexão é estabelecida. E soquete o servidor continua em estado de escuta, continua a receber pedidos de outros clientes conectados à tomada.

Tomada passo de comunicação:

  1. Soquete de servidor para criar o tipo de endereço (IPv4, IPv6), tipo de soquete, tipo de protocolo (UDP / TCP)
  2. soquete de servidor de ligação endereço IP eo número da porta
  3. Servidor socket de escuta pedido número da porta, pronto para enviar para a conexão do cliente de receber, desta vez o servidor de soquete não foi aberto
  4. O cliente cria socket
  5. socket cliente Open, ip acordo com o servidor usando o endereço e número de porta connexct () método tenta ligar à tomada de servidor
  6. socket servidor recebe uma tomada de solicitação do cliente, aberto passiva para começar a receber pedidos de clientes até que as informações de conexão de retorno cliente. Esta tomada servidor de tempo para o estado bloqueado, ou seja, o chamado bloqueio accept () método foi devolvido ao cliente após as informações de conexão retornado, o cliente começa a receber a próxima solicitação de conexão
  7. conexão do cliente for bem sucedida, o envio de informações para o status da conexão do servidor
  8. Servidor aceitar () retorna uma conexão bem-sucedida
  9. O método cliente send () grava informações para o socket
  10. recv Server () método para obter informações leitura
  11. fecha cliente
  12. Do lado do servidor fechada

Nós podemos ver a partir do processo acima, o soquete está no encapsulamento protocolo TCP / IP e aplicações. No protocolo TCP / IP, de três vias protocolo de handshake TCP para estabelecer uma conexão confiável.

  1. O primeiro handshake: uma tentativa de cliente para ligar para o servidor, o servidor transmite o pacote syn (SEQ ID NO sincronizado Números Sincronizar sequência), syn = j, as esperas de cliente para o servidor de introduzir SYN_SEND reconhecimento.
  2. Segundo handshake: um servidor cliente recebe pacotes SYN e reconhecimento (ACK = j + 1), enquanto que o cliente envia um pacote SYN (sin = k), isto é, SYN + ACK, então o servidor insere um SYN_RECV estado.
  3. Terceiro aperto de mão: o cliente recebe o pacote SYN + ACK para o servidor, o servidor envia uma confirmação pacote ACK (ACK = k + 1), este pacote é enviado, o cliente eo servidor para o estado ESTABLISHED, completar o handshake de três vias.

servidor de soquete e conexão de soquete cliente está realmente estabelecida parte do "handshake de três vias."

 

Três, tomada e http

3.1 Tomada e http diferença

conexão de soquete:

soquete não pertence ao âmbito do protocolo, mas uma interface chamada (API) , é um protocolo TCP / IP encapsulamento. Realizando conexão física entre o servidor eo cliente, e transmissão de dados. Tomada de protocolo de rede na camada de transporte , não são TCP / UDP protocolo dois (é claro que existem TCP / IP privada protocolo outros protocolos).

conexão de soquete é uma longa ligação , em teoria, o cliente eo servidor, uma vez que uma conexão é estabelecida não vai tomar a iniciativa de cortar, mas devido a vários fatores ambientais podem causar desconexão, tais como: do lado do servidor ou host cliente é baixo, a rede longo tempo entre a falha de transmissão de dados, ou ambos, o firewall de rede pode desligar a ligação aos recursos da rede liberação. Assim, quando uma conexão de soquete não está transmitindo dados, a necessidade de manter a conexão para enviar uma mensagem de pulsação.

A transmissão de dados pode ser tomada de costume, como o nível de byte, uma pequena quantidade de dados podem ser criptografados, segurança de dados, informações para interação em tempo real entre o cliente / servidor.

 

http: conexões

HTTP é baseado no protocolo TCP / IP é um protocolo da camada de aplicação , definido na especificação da transmissão de dados de conteúdos.

HTTP é baseado em um pedido - resposta e é na forma de um conector curto , ou seja, o cliente envia uma solicitação para o servidor, o servidor irá responder a uma conexão que está quebrado.

HTTP é um protocolo sem estado, para as quais não características do Estado, em aplicações práticas que eles precisam ter a forma do estado, ele tende a resolver este problema pela tecnologia sessão / cookie.

HTTP velocidade de transmissão lenta, pacotes de dados de grande porte, a segurança de transmissão de dados é pobre, como a interação em tempo real, a pressão desempenho do servidor.

 

3.2 Tomada e http cenários de aplicação que

comparando uma tomada instantânea para comunicações gerais e em tempo real é alta, como empurrar, bate-papo, mantendo as ligações batimentos cardíacos longos;

http geralmente usado para requisitos de tempo real não são tão altos, como feedback de informação, upload de fotos, informações notícias acesso.

 

A razão para usar http sem o uso de encaixe, em alguns casos, é a tomada Uma vez ligado, ele está sempre ligado, ele irá causar bloqueio IO, com esta relação, bem como de não-bloqueio IO.

  • Bloqueio IO refere pedidos de clientes a, em seguida, o valor de retorno do lado do servidor, o processamento do lado do servidor é concluído para o cliente. Neste caso, o cliente tem sido no estado bloqueado. Quando um cliente também, solicitações simultâneas, o processamento do lado do servidor, no entanto, o servidor teria sido preso lá esperando, afetando a experiência do usuário. Portanto, a proposta de não-bloqueio IO.
  • Sem bloqueio IO meios para retornar imediatamente após o cliente solicita o servidor, o servidor é responsável por alguns ouvintes aceitar o pedido, o cliente recebe os pedidos enviados que diz ao cliente aceitou bem, e outro tratamento após a conclusão dos dados retornados processamento de dados durante o serviço do lado do cliente o cliente não terá que esperar para a obstrução.

Bloqueio e preocupação sem bloqueio é o estado do programa enquanto aguarda o resultado da chamada (a mensagem, o valor de retorno) de.

Bloqueio de chamadas refere-se os resultados antes da chamada retorna, o fio de corrente é suspenso. Apenas o segmento de chamada não retornar até após o resultado.

Antes de chamada sem bloqueio refere-se não obter os resultados imediatamente, a chamada não bloqueia o segmento atual.


 Referência: https://www.linuxidc.com/Linux/2018-09/154366.htm
                   https://blog.csdn.net/weixin_36691991/article/details/104963784?fps=1&locationNum=2

Publicado 54 artigos originais · ganhou elogios 47 · vê 10000 +

Acho que você gosta

Origin blog.csdn.net/cy973071263/article/details/105128839
Recomendado
Clasificación