Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 nttcp 명령입니다.
프로그램:
이름
nttcp - 새로운 테스트 TCP 프로그램
개요
NTTCP [ 지방의 옵션 ] 파트너 호스트 [ 파트너 호스트 ] ... [ 먼 옵션 ]
기술
이 어플리케이션에는 XNUMXµm 및 XNUMXµm 파장에서 최대 XNUMXW의 평균 출력을 제공하는 NTTCP 프로그램은 TCP, UDP 또는 UDP에서 전송률(및 기타 숫자)을 측정합니다.
멀티캐스트 연결. 사용 NTTCP 로컬에서 실행 파일을 제공해야 합니다.
머신과 파트너 머신에서. 파트너 컴퓨터에서 시작하기만 하면 됩니다. NTTCP 와 더불어
option -i. 이렇게 시작했고, NTTCP 다른 사람의 연결을 기다리고 있습니다. NTTCP에스. 에
로컬 호스트는 단순히 전화 NTTCP 파트너 호스트의 이름으로. 그것은 접촉할 것입니다 NTTCP
파트너 시스템에서 시작하고 전송을 시작합니다. 기본적으로 프로그램 전송
파트너 호스트에 대한 2048KByte 길이(총 4MByte)의 8 버퍼. 양쪽에는
성능이 측정되고 결과(원격 및 로컬 모두)가 시스템에 보고됩니다.
지역 편. 명령줄을 통해 전송의 거의 모든 매개변수를 변경할 수 있습니다.
옵션, 심지어 결과가 인쇄되는 내용과 방법까지.
옵션
-r 수신 전송 방향을 정의합니다. 데이터는 파트너 호스트에서
로컬 호스트.
-t 전송 전송 방향을 정의합니다. 데이터는 로컬 호스트에서
파트너 호스트. 이것이 기본 방향입니다.
-T 제목 줄을 인쇄합니다.
-u TCP(기본값) 대신 UDP 프로토콜을 사용합니다.
-g 패킷 사이의 간격 시간(마이크로초)입니다. 이 지연은 타임아웃을 통해 구현됩니다.
매개 변수 고르다(2) 및 루프 gettimeofday(2). 이 값의 정확도
오해의 소지가 있습니다. 대부분의 기계는 주어진 양을 정확하게 지연시킬 수 없습니다.
코드는 원하는 지연을 달성하기 위해 최선을 다할 것입니다. TCP 연결의 경우 이
옵션은 쓰다(2) 시스템 호출. 하지 않는다
물리적 장치의 실제 출력 사이에 실제로 지연됩니다.
-v 더 많은 정보를 출력하십시오. 디버깅 목적으로만 유용합니다.
-D 전송 소켓에서 TCP_NODELAY 옵션을 설정합니다. 이 옵션을 설정하면
소켓은 쓰기 요청을 버퍼링하지 않습니다.
-f 체재 현
자신의 출력 형식을 지정하십시오. 보다 출력.
-n 번호 of 버퍼
주어진 버퍼 수는 전송 소켓에 기록됩니다. 그것
기본값은 2048입니다.
-l 길이 of 버퍼
주어진 길이는 전송 소켓에 기록되는 하나의 버퍼 크기를 정의합니다.
기본값은 4096입니다.
-x 고정 길이 of 데이터
주어진 길이는 전송될 데이터의 양을 정의합니다. 후속
지정 -l or -n 옵션은 해당하는 다른 값을 조정하여
버퍼 수와 버퍼 길이는 주어진 고정 길이에 곱합니다.
-w 번호 of 킬로 바이트
송신 및 수신 소켓의 버퍼 크기를 정의합니다. 이것은 시스템입니다
매달린; 일반적으로 16K입니다.
-c 이 옵션이 있으면 수신측에서 수신된 바이트를 비교합니다.
송신측에서 사용하는 패턴. 기껏해야 처음 100개의 차이점은
보고했다. 전송이 TCP를 통해 이루어지는 경우 전체 전송에 대한 고유 패턴
생성됩니다. UDP의 경우 각 패킷에 대해 동일한 패턴이 사용됩니다. 강제로
스트림 패턴 -s 스위치; 그러나 하나의 패킷이 손실되면 모든 후속 패킷은
예상하지 못한 패턴을 포함하며 다른 것으로 보고됩니다. 모든 바이트 이후
번호가 매겨져 있으며, 이는 전송 중에 손실된 첫 번째 패킷을 감지하는 데 사용할 수 있습니다.
전송.
그러나 be 인식: 차이가 있는 경우 이 옵션을 사용하면 패킷 손실이 발생할 수 있습니다.
UDP 전송을 준비하거나 성능 저하를
출력은 단순하고 많은 CPU 시간을 사용합니다.
-s UPD 패킷 데이터를 비교하는 경우 스트림 패턴 생성을 강제합니다. 보다 -c
스위치.
-S 씨 현
패턴 생성기를 초기화하기 위해 임의의 문자열을 제공하십시오. 기본적으로 이 시드는
값 '이 is a 간편한 설치 INIT 현'. 이것은 -c 옵션을 선택합니다.
-p포트 번호
기본적으로 파트너 호스트는 포트 5037에서 수신 대기합니다. 다음으로 덮어쓸 수 있습니다.
이 옵션.
-i 파트너 호스트에 대한 루트 액세스 권한이 없거나 해킹을 원하지 않는 경우 inetd,
이 옵션은 NTTCP 연결을 기다리는 데몬으로 작동하고
inetd가 그렇지 않으면 자식 프로세스를 자체적으로 생성합니다.
-R번호 of getpid() 통화
이 옵션은 데이터를 전송하지 않고 지정된 횟수만큼 호출합니다.
getpid(2) 초당 호출 수를 계산합니다. 이에 대한 대책이다.
기계 및 시스템 호출 인터페이스의 속도.
-m멀티 캐스트 IP:포트
이 옵션은 지정된 멀티캐스트 주소 및 포트로 강제 전송하는 데 사용됩니다.
이 옵션은 -u and-t 스위치.또한참조멀티캐스트후에in이문서를 참조하시기 바랍니다.
출력
프로그램의 출력은 두 줄의 숫자로 구성됩니다. 또는 더 많은 라인이 사용된 경우
둘 이상의 시스템에 전송(멀티캐스팅). 측정값의 첫 번째 줄
로컬 호스트 파트너 호스트 측정을 위한 다른 라인 이것도 표기
첫 번째 문자는 'l'과 각각의 'r'입니다. 만약 -T 깃발도 주어졌다.
제목 줄이 주어집니다. outout의 기본 형식은 다음과 같습니다.
바이트 Real s CPU s Real-MBit/s CPU-MBit/s 호출 Real-C/s CPU-C/s
엘 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
'CPU'로 표시된 타이밍 및 속도 값은 시스템 및 사용자 시간의 합계만 사용합니다.
실제 타이밍 및 속도 값은 시작부터 끝까지의 시간을 사용하여 계산됩니다.
전송.
출력의 다른 형식을 지정할 수 있습니다. 이것은 형식과 유사하게 수행됩니다.
문자열 printf(3초). 의 변환 문자 printf(3s)는
다음 태그. 각 태그 앞에는 다음과 같이 '%'가 붙습니다. printf(3초). '%' 문자 사이
태그에는 다음과 같이 허용되는 너비 및 정밀도 사양이 있습니다. printf(3초). 둘
값 유형은 인쇄된 정수와 실수입니다. 이러한 유형의 경우 변환 문자
'd' 각각의 'f' printf(3s)가 사용됩니다.
l 버퍼 길이를 바이트 단위로 인쇄합니다. 정수 값.
n 버퍼 수를 인쇄합니다. 정수 값.
c 통화 수를 인쇄합니다. 정수 값.
rt 실시간을 s로 인쇄합니다. 플로트 값.
rbr MBit/s 단위로 실제 비트 전송률을 인쇄합니다. 플로트 값.
RCR 통화/초 단위로 실제 통화 속도를 인쇄합니다. 플로트 값.
ct cpu 시간을 s로 인쇄합니다. 플로트 값.
CBR CPU 비트 전송률을 MBit/s 단위로 인쇄합니다. 플로트 값.
CCR cpu 호출 속도를 호출/초 단위로 인쇄합니다. 플로트 값.
기본 형식은 다음 형식 문자열로 생성됩니다.
"%9b%8.2rt%8.2ct%12.4rbr%12.4cbr%8c%10.2rcr%10.2ccr"
설치
이 프로그램을 가장 편리하게 사용하기 위해 파트너 컴퓨터에 설치할 수 있습니다.
그래서 inetd(8) 시작할 수 있습니다. 이를 수행하려면 다음 두 파일을 편집해야 합니다.
/etc/inetd.conf and / etc / services.
각각의 줄은 다음과 같을 수 있습니다.
inetd.conf:
ttcp 스트림 tcp nowait 아무도 /usr/local/etc/nttcp nttcp
서비스:
ttcp 5037/tcp # tcp 전송률 측정
이러한 변경이 이루어진 후, inetd(8) 프로세스는 HUP를 통해 통지되어야 합니다.
신호(또는 이전 버전의 유닉스에서는 종료 및 재시작).
멀티캐스팅
버전 1.4부터는 멀티캐스트 트래픽 생성이 지원됩니다. 당신은 심지어 필요하지 않습니다
임의의 옵션을 설정하되 둘 이상의 파트너 호스트를 지정하기만 하면 됩니다. 이 모드는
로컬 호스트에서 파트너 호스트로 패킷을 보냅니다. 물론
멀티캐스트 지원 IP 스택이 있는 시스템. 이 기능은 Solaris2.6에서 테스트되었습니다.
HPUX-10 및 HPUX-11 및 Irix 6.2. MROUTING 옵션으로 컴파일된 FreeBSD-2.2.6도 작동합니다.
그러나 이것이 네트워킹 환경에 어떤 의미가 있는지 알고 있어야 합니다. 대부분의 이더넷 스위치
예를 들어 멀티캐스트 트래픽을 브로드캐스트로 처리합니다. 이 방법으로 당신은 당신의 완전한 범람하게 될 것입니다
이 패킷으로 네트워크.
환경
두 가지 환경 변수 NTTCP_LOC_OPT 및 NTTCP_REM_OPT는 다음과 같이 사용할 수 있습니다.
로컬 옵션과 원격 옵션을 각각 미리 설정합니다. 그들은 다음과 같은 형식을 취합니다.
커맨드라인이 합니다. 명령줄 옵션은 환경의 해당 설정을 재정의합니다.
보안
보안 고려 사항에 따라 inetd 작동 모드는 다음과 같습니다. 않습니다. 제안. 호스트
시작하도록 구성 NTTCP 이렇게 하면 서비스 거부 공격에 매우 취약합니다. 당신이있는 경우
이 문제에 대해 우려하고 있다면 tcpwrapper를 사용하거나 단순히 사용하지 않는 것을 고려해야 합니다.
설치 NTTCP 이 방법.
또한 반드시 실행 NTTCP 다음을 통해 시작할 때 루트가 아닌 사용자로 inetd(8). 나는 조금 신경을 썼다
버퍼 오버런이 발생하기 쉬운 코딩을 피하십시오. 하지만 소스가 너무 커서 모든 구석에서 확인할 수 없습니다.
코드의.
이 프로그램에 대한 일반 액세스 권한을 제공하지 않는 것도 고려할 수 있습니다. 쉽게 될 수 있습니다
많은 트래픽으로 네트워크를 범람시키는 데 사용됩니다. 시작하거나 지원하는 데 사용할 수 있습니다.
서비스 거부 공격.
경고
예상치 못한 조치를 설명하는 데는 많은 함정이 있습니다. 반드시 꼼꼼한
네트워크와 사용 및 설치된 장치에 대한 이해 또한 극도로
기계에서 일어나는 일을 깊이 이해하고
운영 체제. 짧은 예는 여기서 의미하는 바를 보여줍니다.
UDP 전송은 보내는 호스트에서 패킷이 손실될 수 있습니다! 오늘
기계에서는 10MBit 이더넷이 삼킬 수 있는 것보다 훨씬 빠르게 패킷을 생성하기 쉽습니다.
따라서 운영 체제의 UDP 스택에 드롭될 수 있습니다. 이것은 다음에 달려 있습니다.
IP 스택 구현. 따라서 확실하게 하려면 두 번째 기계를 사용하고 snoop 또는
문제의 트래픽을 tcpdump하여 미디어에서 어떤 일이 발생하는지 확인합니다.
onworks.net 서비스를 사용하여 온라인에서 nttcp 사용