Este é o comando nttcp que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
nttcp - novo programa TCP de teste
SINOPSE
nttcp [ local opções ] parceiro-anfitrião [ parceiro-anfitrião ] ... [ remoto opções ]
DESCRIÇÃO
A nttcp programa mede a taxa de transferência (e outros números) em um TCP, UDP ou UDP
conexão multicast. Usar nttcp você tem que fornecer o executável no local
máquina e em uma máquina parceira. Na máquina do parceiro, basta iniciar nttcp com o
opção -i. Começou assim, nttcp está esperando por conexões de outro nttcps. No
anfitrião local simplesmente ligue nttcp com o nome do host parceiro. Ele entrará em contato com o nttcp
iniciado na máquina parceira e iniciar a transferência. No padrão, o programa é transferido
2048 buffers de comprimento de 4KByte (um total de 8 MByte) para o host parceiro. Em ambos os lados o
o desempenho será medido e as descobertas (tanto remotas quanto locais) serão relatadas no
lado local. Você pode alterar quase todos os parâmetros da transmissão via linha de comando
opções, até mesmo o que e como os resultados são impressos.
OPÇÕES
-r define a direção de transferência de recebimento; os dados são enviados do host parceiro para o
host local.
-t define a direção de transferência de transmissão; os dados são enviados do host local para o
anfitrião parceiro. Esta é a direção padrão.
-T Imprima uma linha de título.
-u Use o protocolo UDP em vez de TCP (que é o padrão).
-g Tempo de intervalo em microssegundos entre os pacotes. Este atraso é implementado por meio do tempo limite
parâmetro de selecionar(2) e um loop com obterhoradodia(2) A precisão deste valor
é enganoso. A maioria das máquinas não será capaz de atrasar exatamente a quantidade fornecida.
O código fará o possível para atingir o atraso desejado. Para conexões TCP este
opção só implementa um atraso entre o escrever(2) chamadas de sistema. Isso não
realmente demora entre a saída real no dispositivo físico.
-v Fornece uma saída mais detalhada; útil apenas para fins de depuração.
-D Defina a opção TCP_NODELAY no soquete de transmissão. Com esta opção definida, o
socket não armazena em buffer nenhum pedido de escrita.
-f formato corda
Especifique seu próprio formato de saída. Ver SAÍDA.
-n número of buffers
O número fornecido de buffers será gravado no soquete de transmissão. Isto
o padrão é 2048.
-l comprimento of amortecer
O comprimento fornecido define o tamanho de um buffer gravado no soquete de transmissão.
O padrão é 4096.
-x fixado comprimento of dados,
O comprimento fornecido define a quantidade de dados que serão transferidos. Subseqüente
especificada -l or -n opções irão adaptar o outro valor correspondente para que o
número de buffers e o comprimento do buffer multiplica para o comprimento fixo fornecido.
-w número of quilo bytes
Define o tamanho do buffer do soquete de transmissão e recepção. Este é o sistema
dependente; normalmente é 16K.
-c Se esta opção estiver presente, o lado receptor irá comparar os bytes recebidos com
o padrão usado pelo lado de envio. No máximo, as primeiras 100 diferenças serão
relatado. Se a transmissão for via TCP, um padrão uniq para toda a transmissão
é gerado. Para UDP, o mesmo padrão para cada pacote é usado. Você pode forçar um
padrão de fluxo com o -s trocar; mas se um pacote for perdido, todos os pacotes subsequentes
contêm padrões não esperados e serão relatados como diferentes. Já que cada byte
é numerado, isso pode ser usado para detectar o primeiro pacote perdido durante o
transmissão.
MAS be consciente: se houver uma diferença, esta opção pode levar a perdas de pacotes em
Transmissões UDP ou degradação no desempenho, desde a preparação do
a saída é simplória e consome muito tempo da CPU.
-s Força a geração de um padrão de fluxo se os dados do pacote UPD forem comparados. Ver -c
interruptor.
-S semente corda
forneça qualquer string para inicializar o gerador de padrões. Por padrão, esta semente tem o
valor 'Este is a simples o init corda'. Isso reforça o -c opção.
-pporta número
Por padrão, o host parceiro ouvirá na porta 5037. Isso pode ser substituído com
esta opção.
-i Se você não tem acesso root no host parceiro, ou não quer hackear com inetd,
esta opção direciona nttcp para se comportar como um daemon, esperando por conexões e
gerando processos filhos por si só, como o inetd faria de outra forma.
-Rnúmero of getpid () chamadas
Esta opção não transmite nenhum dado, mas chama o número de vezes fornecido
enlouquecer(2) e calcula o número de chamadas por segundo. Esta é uma medida para o
velocidade da máquina e da interface de chamada do sistema.
-mmulticast IP: porta
Esta opção é usada para forçar o envio para o endereço e porta multicast especificados.
Esta opção impõe o -u e-t interruptor.tbVejoMULTICASTmais tardeinessedocumento.
SAÍDA
A saída do programa consiste em duas linhas de números; ou mais linhas se usado em
transmitir para mais de uma máquina (multicast). A primeira linha para as medidas de
o host local a outra linha para a medida do host parceiro. Isso também é indicado
com os primeiros caracteres sendo um 'l' respectivo 'r'. Se o -T bandeira foi dada, também um
A linha do título é fornecida. O formato padrão da saída é assim:
Bytes Real s CPU s Real-MBit / s CPU-MBit / s Chamadas Real-C / s CPU-C / s
l 8388608 7.51 0.25 8.7307 259.8676 2048 272.83 8120.86
r 8388608 7.55 0.95 8.6804 68.9853 3831 507.42 4032.63
Os valores de tempo e taxa marcados com 'CPU' usam a soma do tempo do sistema e do usuário apenas.
Os valores reais de tempo e taxa são calculados usando o tempo do início ao fim do
transmissão.
É possível especificar outra forma de saída. Isso é feito de forma semelhante ao formato
cordas de printf(3s). Os personagens de conversão de printf(3s) são substituídos pelo
seguintes tags. Cada tag é precedida por '%' como em printf(3s). Entre o caractere '%'
e a tag há especificações de largura e precisão permitidas como com printf(3s). Dois
tipos de valores são inteiros impressos e flutuantes. Para esses tipos, as letras de conversão
'd' respectivo 'f' de printf(3s) são usados.
l imprime o comprimento do buffer em bytes. Valor inteiro.
n imprime a contagem do buffer. Valor inteiro.
c imprime o número de chamadas. Valor inteiro.
rt imprime o tempo real em s. Valor flutuante.
rbr imprime a taxa de bits real em MBit / s. Valor flutuante.
RCR imprime a taxa real de chamadas em chamadas / s. Valor flutuante.
ct imprime o tempo da CPU em s. Valor flutuante.
cbr imprime a taxa de bits da CPU em MBit / s. Valor flutuante.
ccr imprime a taxa de chamadas da CPU em chamadas / s. Valor flutuante.
O formato padrão é produzido com a seguinte string de formato:
"%9b%8.2rt%8.2ct%12.4rbr%12.4cbr%8c%10.2rcr%10.2ccr"
INSTALAÇÃO
Para fazer o uso mais conveniente deste programa, ele pode ser instalado na máquina parceira,
de modo a inetd(8) pode iniciá-lo. Para fazer isso, dois arquivos devem ser editados:
/etc/inetd.conf e / etc / services.
As respectivas linhas podem ter a seguinte aparência:
inetd.conf:
ttcp stream tcp nowait ninguém / usr / local / etc / nttcp nttcp
Serviços:
ttcp 5037 / tcp # para medir as taxas de transferência tcp
Depois que essas mudanças forem feitas, o inetd(8) o processo deve ser notificado por meio de um HUP
sinal (ou eliminado e reiniciado em versões anteriores do unix).
MULTICASTAGEM
A partir da versão 1.4, há suporte para a geração de tráfego multicast. Você nem precisa
defina qualquer opção, mas simplesmente especifique mais de um host parceiro. Este modo é restrito a
enviar pacotes do host local para os hosts parceiros. E, claro, funciona apenas em
máquinas que possuem uma pilha IP habilitada para multicast. Este recurso foi testado no Solaris 2.6,
HPUX-10 e HPUX-11 e Irix 6.2. Também o FreeBSD-2.2.6 compilado com a opção MROUTING funciona.
Mas esteja ciente do que isso significa para o seu ambiente de rede. A maioria dos switches Ethernet para
exemplo, trata o tráfego multicast como broadcast. Desta forma, você inundará seu completo
rede com esses pacotes.
MEIO AMBIENTE
Existem duas variáveis de ambiente NTTCP_LOC_OPT e NTTCP_REM_OPT que podem ser usadas para
predefinir as opções locais e as opções remotas respectivamente. Eles têm o mesmo formato que o
linha de comando sim. As opções de linha de comando substituem essas configurações do ambiente.
SEGURANÇA
Sob considerações de segurança, o modo inetd de operação é NÃO sugerido. Hospedeiros
configurado para começar nttcp dessa forma, estão muito abertos a ataques de negação de serviço. Se você é
preocupado com este problema, você deve considerar o uso de tcpwrapper ou simplesmente não
instalar nttcp deste jeito.
Também certifique-se de executar nttcp como não-root quando iniciado via inetd(8). Eu tenho tomado alguns cuidados para
evitar codificação propensa a saturação de buffer. Mas a fonte é muito grande agora para ter certeza em todos os cantos
do código.
Você também pode considerar não fornecer acesso geral a este programa. Pode ser facilmente
usado para inundar sua rede com muito tráfego. Isso pode ser usado para lançar ou apoiar
ataques de negação de serviço.
ATENÇÃO
Existem muitas armadilhas na explicação de medidas inesperadas. Certifique-se de fazer um exame completo
compreensão da sua rede e dos dispositivos usados e instalados. Também é extemamente
útil para ter um entendimento profundo das coisas que acontecem em sua máquina e
sistema operacional. Um pequeno exemplo mostra o que significa aqui: Se você vir pacotes perdidos em
O UDP transfere, pode ser, que os pacotes sejam perdidos no host de envio! Para hoje
máquinas é fácil produzir pacotes muito mais rápido do que uma Ethernet de 10 MBit pode engoli-los,
portanto, eles podem ser descartados na pilha UDP do sistema operacional. Isso depende do
implementação de sua pilha de IP. Então, para ter certeza, use uma segunda máquina e espie ou
tcpdump o tráfego em questão, para ter certeza do que acontece no meio.
Use nttcp online usando serviços onworks.net