
나는 현재 사용하고 있습니다엔맵내 프로그램의 일부로 로컬 네트워크를 매핑하려고 하는데 모든 포트에서 서로 다른 포트 스캔을 수행하는 데 시간이 얼마나 걸리는지 궁금합니다.
포트가 열려 있는지(확인하기 위해 패킷이 전송된 경우) 확인하기 위해 전송된 시간 초과 및 평균 패킷 크기는 얼마이며 이러한 요인 및 기타 요인을 기반으로 검색하는 데 걸리는 시간과 상관 관계가 있습니까?
나는 이것을 그래프로 표현하고 아마도 이러한 결과를 테스트할 수 있기를 바랍니다.
일반적으로 UDP 포트 스캔은 연결이 없고 훨씬 더 많은 리소스가 사용되기 때문에 TCP보다 오래 걸린다는 것을 알고 있습니다.
답변1
링크 속도, 이중, 최소 패킷 크기, 왕복 시간, 대상 호스트의 대기 시간, 침입 탐지/방지 시스템 관련 여부, 특정 스캔의 왕복 횟수 등 많은 요소가 관련될 수 있습니다. 필요한 유형, 링크 사용량 등
따라서 스캐너 시스템과 대상이 동일한 기가비트 이더넷에 있다고 가정하고 65536개 포트를 스캔하는 데 소요되는 이론적 최소 시간을 추정해 보겠습니다. GigE는 항상 전이중이며 최소 프레임 크기는 64바이트이며 필수 프레임 간 간격을 계산한 후 최대 프레임 속도는 초당 최소 크기 프레임 1,488,000입니다. TCP Syns, Syn-Acks, (빈) Acks, Fins 및 Rsts는 모두 최소 크기 프레임입니다. 내가 지금 사용하고 있는 GigE에서 RTT는 0.3ms(300μsec)이므로 대상 호스트가 동일한 0.3ms 대기 시간 내에 Syn-Ack 또는 Rst로 Syn에 응답한다고 가정해 보겠습니다. 더 나아가서 둘 중 하나로 응답할 것이라고 가정해 보겠습니다. 임의의 시간 초과를 기다려야 하는 "필터링된" 포트는 없을 것입니다.
따라서 모든 포트에 TCP Syn을 보내는 데 걸리는 시간은 65,536 / 1,488,000 = 44ms입니다.
GigE는 전이중이므로 이후 Syn이 나가면서 첫 번째 응답이 들어오기 시작하지만 마지막 Syn 전송과 마지막 응답 사이에 1 RTT를 기다려야 하므로 0.3ms인 1 RTT를 추가합니다. 총44.3ms.
두 번의 왕복을 수행해야 하는 스캔이 있더라도 모든 네트워크 트래픽은 1초 이내에 완료될 수 있습니다.
대상 호스트가 일부 포트에 대해 Syns에 응답하지 않는 경우 자체 알고리즘에서 "응답 없음" 시간 제한을 설정할 기간을 직접 선택해야 합니다. 하지만 RTT처럼 생각할 수도 있습니다. 10초 제한 시간을 사용한다고 가정해 보겠습니다. 여전히 44ms 내에 모든 Syn을 보낼 수 있지만 해당 포트에서 응답을 받을 가능성이 없는지 확인하려면 마지막 Syn을 보낸 후 10초를 기다려야 할 수도 있습니다. 따라서 2^16개 포트가 모두 응답하지 않고 시간 초과가 10초인 경우에도 총 시간은 44ms + 10초 = 10.044초가 됩니다.