1 Introdução aos conceitos básicos de redes de computadores
1.1 Introdução à arquitetura de redes de computadores
A arquitetura da rede de computadores é implementada de acordo com um método de design altamente estruturado, usando o princípio em camadas. As vantagens das camadas são: boa flexibilidade, fácil manutenção e implementação, propícias à colaboração entre várias camadas e padronização.
Dois padrões para redes de computadores:
- OSI / RM (Open_Systems_Interconnection_Reference_Model): Um padrão internacional que foi alcançado em teoria. As sete camadas da arquitetura OSI: camada de aplicativo, camada de apresentação, camada de sessão, camada de transporte, camada de rede, camada de enlace de dados e camada física.
- TCP / IP: padrão internacional na prática. Ou seja, o padrão TCP / IP é adotado na realidade. As quatro camadas da arquitetura TCP / IP: camada de aplicativo, camada de aplicativo, camada de transporte, IP da camada da Internet e camada de interface de rede.
1.2 Introdução ao modelo TCP / IP
- Camada de interface de rede: responsável pela recepção e transmissão de datagramas IP; responsável pelo protocolo da camada de interface de rede.
- IP da camada da Internet: roteamento, controle de fluxo e controle de congestionamento; protocolo da camada de rede para fornecer serviços sem conexão.
- Camada de transporte: estabeleça uma conexão ponta a ponta; execute os protocolos TCP e UDP.
- Camada de aplicação: protocolo para executar a comunicação entre processos; processamento de dados.
1.3 Serviços orientados a conexão e serviços sem conexão
Os tipos de serviços são divididos em duas categorias: serviços orientados a conexão e serviços orientados a conexão.
- Serviços orientados a conexão: Antes de transmitir dados, uma conexão deve ser estabelecida e, quando a transmissão de dados estiver concluída, a conexão será liberada. É caracterizado por três processos: estabelecimento da conexão, transmissão de dados e liberação da conexão; cada pacote de dados carrega o IP de origem e o IP de destino dos dados do pacote; a transmissão é confiável, mas o protocolo é mais complicado.
- Serviço sem conexão: nenhum estabelecimento ou liberação de conexão é necessário durante a comunicação. A característica é que não há necessidade de estabelecer um processo de conexão, transmissão de dados e liberação de conexão; a transmissão não é confiável, mas o protocolo é relativamente simples.
2 Introdução ao CS (cliente / servidor)
Na rede TCP / IP, a comunicação do processo entre os dois hosts adota o modo CS, onde o cliente e o servidor se referem ao processo. A descrição do cliente e servidor é a seguinte:
@ 1 cliente: a parte que iniciou a solicitação de conexão primeiro. O processo do cliente é o seguinte:
//1 运行一个客户进程,向服务器特定端口发送请求连接报文;
//2 等待并接收服务器的应答;
//3 继续提出请求;
//4 通信结束后关闭通信通道。
@ 2 server: a parte que aceita a solicitação e fornece o serviço. O processo do lado do servidor é o seguinte:
//1 开启服务器进程;
//2 loop:等待并检测客户/下一个客户的连接请求;
//3 如果接收到客户的连接请求,则处理该请求;
//4 goto loop
3 Protocolo de datagrama de usuário UDP (User Data Protocal)
3.1 Formato de datagrama do usuário
Datagrama de usuário O UDP possui dois campos: campo de cabeçalho (pseudo cabeçalho de datagrama de usuário + cabeçalho de datagrama de usuário) e campo de dados.
@ 1 O formato do pseudo cabeçalho do datagrama do usuário é mostrado na figura:
Entre eles:
- Endereço IP de origem: 4 bytes, usado para marcar o endereço IP do final do envio.
- Endereço IP de destino: 4 bytes, usado para marcar o endereço IP da extremidade receptora.
- 0: 1 byte, indicando bits de preenchimento.
- Protocolo: 1 byte, o número do protocolo UDP é 17.
- Comprimento do datagrama UDP: 2 bytes.
@ 2 O cabeçalho do relatório de dados do usuário é mostrado na figura:
Entre eles:
- Número da porta de origem: o número da porta de origem usado para marcar o datagrama.
- Número da porta de destino: o número da porta de destino usado para marcar o datagrama.
- Comprimento do datagrama UDP: contém o comprimento do cabeçalho do datagrama + o comprimento da parte dos dados.
- Campo Checksum: evita erros de datagrama do usuário durante a transmissão.
Nota: O pseudo cabeçalho do datagrama do usuário é uma estrutura de dados virtual, usada principalmente para calcular a soma de verificação e conectar-se aos dados do usuário UDP para obter um datagrama temporário para calcular a soma de verificação do datagrama do usuário UDP.
3.2 Inspeção e cálculo do datagrama do usuário
A soma de verificação do datagrama UDP é calculada duas vezes, uma na extremidade de envio e outra na extremidade de recebimento. (Código inverso + código-fonte = 0x11111111 ... usado aqui)
- No final do envio: defina o campo de soma de verificação no cabeçalho do datagrama UDP para 0; considere o pseudo cabeçalho e o datagrama do usuário UDP conectados por várias cadeias 16b (se a parte de dados do datagrama do usuário não for igual Bytes, você precisa adicionar um byte de todos os 0s, ou seja, os últimos 16b são todos os 0s e esse 16b se refere ao bit inferior), calcule a soma desses 16b de acordo com o código binário inverso; finalmente, inverta esse número, o resultado Essa é a soma de verificação do primeiro byte do datagrama enviado.
- No final do recebimento: o datagrama do usuário UDP recebido junto com o pseudo cabeçalho (e possível preenchimento de todos os 0 bytes) e a soma dessas palavras de 16 bits em inverso binário. Quando não há erros, o resultado deve ser 1. Caso contrário, indica que ocorreu um erro, e o terminal receptor deve descartar esse datagrama de usuário UDP (ele também pode ser entregue à camada de aplicativo, mas com um aviso de erro).
3.3 Características e usos de datagramas de usuário UDP
Recursos de datagramas de usuário UDP:
- Para protocolos sem conexão, nenhuma conexão é estabelecida antes da transferência dos dados.
- A confiabilidade da entrega não é garantida, apenas o melhor esforço de entrega.
Embora o UDP seja um protocolo não confiável, ele possui grandes vantagens na transmissão de certos aspectos dos dados.Os aplicativos do UDP são os seguintes:
- Conversão de nome de domínio
- Protocolo de link
- Gerenciamento de rede
- Serviço de arquivo remoto
- Telefone IP
4 Protocolo de controle de transmissão TCP (Protocal Control Transmission)
4.1 Introdução ao TCP
O TCP fornece serviços orientados a conexão e é um canal full-duplex confiável. Comparado com o UDP, o protocolo TCP é mais complexo, mas também é mais confiável, principalmente porque a conexão é orientada e os números TCP e confirma os dados transmitidos.
4.2 Cabeçalho do segmento TCP
O segmento de mensagem TCP também é dividido em duas partes: cabeçalho e dados.O formato do cabeçalho é mostrado na figura:
Entre eles:
- Número da porta de origem: o número da porta de origem usado para marcar o datagrama.
- Número da porta de destino: o número da porta de destino usado para marcar o datagrama.
- Número de sequência: o número de sequência do primeiro byte nos dados enviados neste segmento.
- Confirmar número de sequência: o número de sequência do primeiro byte dos próximos dados do segmento.
- Deslocamento de dados: ocupa 4 bits, a unidade de deslocamento é de 4 bytes; portanto, o deslocamento máximo que pode ser expresso é de 60 bytes.
- Reservado: o valor é 0.
- 6 bits.
- Janela: usada para controlar a quantidade de informações enviadas pela outra parte, a unidade é byte, usada principalmente no controle de fluxo e controle de congestionamento.
- Soma de verificação: o método de soma de verificação é o mesmo que UDP, apenas o número do protocolo é diferente.
- Opcional: Usado para lidar com algumas situações especiais. O campo de opção usado atualmente pode ser usado para definir o tamanho máximo do pacote no processo de comunicação e só pode ser usado quando a conexão for estabelecida.
- Preenchimento: usado para preencher o segmento de pacote TCP, o conteúdo do preenchimento deve ser 0; usado para garantir que a opção seja um múltiplo inteiro de 32b.
Os 6 bits a seguir são explicados em detalhes aqui:
- URG de bit urgente: quando URG é 1, indica que há dados urgentes na mensagem e devem ser transmitidos o mais rápido possível, em vez de estar de acordo com a sequência de enfileiramento original.
- Bit de confirmação ACK: usado ao estabelecer uma conexão; o sinalizador de confirmação no cabeçalho do pacote TCP confirma a mensagem TCP recebida.
- Bit PSH de envio: Quando PSH é 1, o remetente enviará a mensagem o mais rápido possível e, quando o receptor receber a mensagem com o bit de envio 1, ele será retirado do buffer de recebimento o mais rápido possível e entregue ao processo de aplicação.
- Reset bit RST: Quando RST é 1, indica que ocorreu um erro grave na conexão TCP, a conexão deve ser liberada e, em seguida, restabelecida.
- Bit de sincronização SYN: usado para sincronizar o número de sequência ao estabelecer uma conexão.
- Bit de finalização FIN: usado para liberar uma conexão. Quando FIN é 1, indica que os dados na extremidade de envio deste segmento foram enviados e a conexão deve ser liberada; FIN = 0 é inválido.
4.3 Número e confirmação de dados TCP
A razão pela qual o TCP pode obter uma transmissão de dados confiável é através da rotulagem e confirmação dos dados.
- O valor do número de sequência no cabeçalho do segmento enviado pelo TCP sempre indica o número de sequência do primeiro byte na parte de dados do segmento (como o número de sequência no cabeçalho do segmento TCP ocupa 4 bytes, pode marcar 4G Bytes de dados), para transmissão geral de dados, ele pode garantir que o número de sequência de cada byte não se sobreponha ao número de sequência de outros bytes.
- Confirmação de dados TCP: confirme o número de sequência do último byte nos dados que foram recebidos com sucesso.
- O número de sequência de confirmação retornado pelo final de recebimento: o final de recebimento espera o valor do número de sequência do primeiro byte nos próximos dados recebidos (esse valor deve ser igual ao número de sequência do último byte dos dados que foram recebidos corretamente + 1).
O relacionamento entre a sequência de envio e a sequência de recebimento é mostrado na figura:
4.4 Controle de fluxo TCP e gerenciamento de congestionamentos
O protocolo TCP geralmente usa janela deslizante de tamanho variável para controle de fluxo.
- Enviar janela: o número máximo de bytes que o remetente pode enviar dados por vez durante a comunicação de dados.O valor do campo da janela no início do segmento TCP é o tamanho da janela atual.
- Janela de recebimento: ajuste dinamicamente o tamanho da janela de envio da outra parte de acordo com a situação real durante a comunicação de dados.
Durante a comunicação TCP, o fim do envio mantém um ponteiro que aponta para os próximos dados a serem enviados. Cada vez que o remetente envia uma mensagem, o ponteiro avança pela distância de um segmento da mensagem. O movimento da janela de envio é realizado após o final do envio receber a confirmação do final de recebimento, e o segmento de pacote enviado pelo final do envio sempre que não for maior que o tamanho da janela de envio. A janela deslizante descreve essencialmente o tamanho do buffer de datagrama TCP do receptor e o remetente calcula o comprimento máximo dos dados que podem ser enviados com base nesses dados. Se o remetente receber um datagrama TCP com um tamanho de janela 0 no receptor, ele interromperá o envio de dados até que ele envie um datagrama com um tamanho de janela diferente de 0.
Controle de fluxo variável da janela:
- Janela de notificação: o tamanho da janela definida pelo final do recebimento de acordo com a capacidade de receber segmentos TCP naquele momento.
- Janela de congestionamento: o tamanho da janela definida pelo remetente de acordo com o congestionamento da rede. (Quanto maior a janela de congestionamento, maior a quantidade de dados que podem ser enviados)
Em circunstâncias normais, o valor da janela de envio é MIN (janela de notificação, janela de congestionamento) Durante o processo de transmissão de dados, o fluxo pode ser controlado alterando a janela. (O controle de fluxo pode não apenas permitir que o destinatário receba tempo suficiente para receber e processar dados, mas também impedir que a rede bloqueie.) O processo de uso de janelas variáveis para controle de fluxo é mostrado na figura:
4.5 Gerenciamento de conexões de transporte TCP
O método de estabelecimento da conexão TCP é o handshake de três vias e o método de desconexão é de quatro wave-hands.Os dois mecanismos são descritos a seguir:
@ 1 O processo de handshake de três direções é mostrado na figura:
A descrição do processo é a seguinte:
- O cliente envia um SYN para o servidor e aguarda o servidor enviar uma mensagem de confirmação.
- O servidor envia um SYN e ACK ao cliente para confirmar que recebeu a mensagem do cliente.
- Depois que o cliente recebe a mensagem de confirmação do servidor, ele retorna um ACK ao servidor e, em seguida, uma conexão confiável pode ser estabelecida com o servidor.
Quatro ondas: Como a conexão TCP / IP é full-duplex, cada direção deve ser fechada individualmente. O processo de acenar quatro vezes é mostrado na figura:
A descrição do processo é a seguinte:
- Depois que o cliente envia dados para o servidor, ele define FIN como 1 e informa que fecharei a conexão de dados nessa direção.
- Depois de receber o FIN, o servidor fecha a conexão de dados nessa direção. Defina ACK como 1 para informar ao cliente que as informações do cliente foram recebidas e processadas.
- Ao mesmo tempo, o servidor aplica ao cliente para desconectar a conexão de dados na direção oposta. Defina FIN como 1.
- O cliente recebe o aplicativo do servidor, define ACK como 1 e ambas as partes fecham a conexão ao mesmo tempo.