anuário
Dois, fluxo de comunicação de soquete
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:
- Soquete de servidor para criar o tipo de endereço (IPv4, IPv6), tipo de soquete, tipo de protocolo (UDP / TCP)
- soquete de servidor de ligação endereço IP eo número da porta
- 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
- O cliente cria socket
- 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
- 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
- conexão do cliente for bem sucedida, o envio de informações para o status da conexão do servidor
- Servidor aceitar () retorna uma conexão bem-sucedida
- O método cliente send () grava informações para o socket
- recv Server () método para obter informações leitura
- fecha cliente
- 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.
- 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.
- 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.
- 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