O protocolo TCP é um protocolo de comunicação da camada de transporte baseado em fluxo de bytes, orientado à conexão e confiável na camada de transporte.
Preparação ambiental
As ferramentas de teste de interface podem ser classificadas nas seguintes categorias:
Ferramentas de detecção de rede: tcpdump, wireshark
Ferramentas de proxy: fiddler, charles, anyproxyburpsuite, mitmproxy
Ferramentas de análise: curl, postman, chrome Devtool
Captura de pacotes e análise do protocolo TCP
tcpdump
tcpdump é uma ferramenta que intercepta completamente o "cabeçalho" dos pacotes de dados transmitidos na rede e fornece análise. Ele suporta filtragem por camada de rede, protocolo, host, rede ou porta e fornece instruções lógicas como e, ou, para não remover informações inúteis.
Deixe o tcpdump escutar a porta 443 o tempo todo e insira-o no arquivo de log se houver alguma anormalidade
sudo tcpdump port 443 -v -w /tmp/tcp.log
Com este comando o relatório obtido será colocado /tmp/tcp.log
no diretório.
Parâmetros comuns | significado |
---|---|
porta 443 | Ouça na porta 443 |
-v | gerar informações mais detalhadas |
-c | gravar dados no log |
Wireshark
Wireshark também é uma ferramenta de detecção de rede. Além da função tcpdump, possui funções mais estendidas, como ferramentas de análise. No entanto, no teste de interface, o processo de captura de pacotes geralmente é executado no servidor, e o servidor geralmente o faz. não fornece uma interface UI, portanto, o wireshark não pode funcionar no servidor e só pode usar tcpdump para capturar pacotes para gerar logs e, em seguida, importar os logs para o wireshark para análise no cliente com interface UI.
Análise de captura de pacotes Protocolo TCP
Pegue uma solicitação http get:
Procure por mp3 no Baidu http://www.baidu.com/s?wd=mp3
Use tcpdump para interceptar esta solicitação get e gerar um log
Abra o log gerado pelo tcpdump com wireshark
Use o wireshark para visualizar o log:
As primeiras informações no log são o handshake triplo. Como o canal não é confiável, é necessário garantir que o canal esteja estável antes de enviar dados, e o handshake triplo é semelhante às seguintes operações:
O primeiro handshake: Quando a conexão é estabelecida, o cliente envia um pacote syn (syn = j) ao servidor e entra no estado SYN_SENT, aguardando a confirmação do servidor.
O segundo handshake: o servidor recebe o pacote syn, deve confirmar o SYN do cliente (ack=j+1), e ao mesmo tempo enviar um pacote SYN (seq=k), ou seja, o pacote SYN+ACK, e o O servidor entra no estado SYN_RECV neste momento;
O terceiro handshake: o cliente recebe o pacote SYN+ACK do servidor e envia um pacote de confirmação ACK (ack=k+1) para o servidor. Depois que o pacote é enviado, o cliente e O servidor entra no estado ESTABLISHED (conexão TCP bem-sucedida) e completa três apertos de mão.
Após um handshake de três vias, a comunicação adicional é possível, como segue:
No final da troca, também são necessários quatro acenos de mão:
A primeira onda: o cliente envia um FIN ao servidor, solicitando o encerramento da transmissão de dados.
A segunda onda: o servidor recebe o FIN do cliente e envia um ACK ao cliente, onde o valor do ack é igual a FIN+SEQ.
Terceira onda: O servidor envia um FIN ao cliente, informando o aplicativo cliente para fechar.
A quarta onda: o cliente recebe o FIN do servidor e responde um ACK ao servidor. O valor de ack é igual a FIN+SEQ.
Nota: Uma solicitação pode ser dividida em vários pacotes, assim como um dado, então você verá muitos pacotes no wireshark.
Por fim, gostaria de agradecer a todos que leram meu artigo com atenção. A reciprocidade é sempre necessária. Embora não seja algo muito valioso, se você puder usá-lo, poderá retirá-lo diretamente: [Coletar no final do artigo ]
[A seguir está o diagrama de sistema de arquitetura de conhecimento de aprendizado do engenheiro de teste de software mais completo + conjunto completo de materiais que compilei em 2023]
1. Da entrada ao domínio da programação Python
2. Projeto de automação de interface de combate real
3. Combate Real do Projeto de Automação Web
![](https://img-blog.csdnimg.cn/b65b4eaa3ff4475cb55a2bf910f8b86b.jpeg)
4. Combate real do projeto de automação de aplicativos
5. Currículo dos fabricantes de primeira linha
![](https://img-blog.csdnimg.cn/0ec3f95dbb214105b948f811969b9599.png)
6. Teste e desenvolva sistema DevOps
7. Ferramentas de teste automatizado comumente usadas
Oito, teste de desempenho JMeter
9. Resumo (pequena surpresa no final)
a vida é longa, então adicione óleo. Todo esforço não será decepcionado, desde que você persevere, haverá recompensas no final. Valorize seu tempo e persiga seus sonhos. Não se esqueça da intenção original, siga em frente. O seu futuro está nas suas mãos!
A vida é curta, o tempo é precioso, não podemos prever o que acontecerá no futuro, mas podemos compreender o momento presente. Valorize cada dia e trabalhe duro para se tornar mais forte e melhor. Crença firme, busca persistente, o sucesso acabará por pertencer a você!
Somente desafiando-se constantemente você poderá se superar constantemente. Persista em perseguir seus sonhos e avance com coragem, e você descobrirá que o processo de luta é tão belo e valioso. Acredite em você, você consegue!