Интегрирана в страничния панел на ядрото, в реда Plugins → Сървърна диагностика → Hash & Checksum. Тя не изисква SSH сесия или изтеглен плъгин. Всички кодове за време на работа, тестове и тела живеят в app/; модулът няма зависимост от хранилищата на братя и сестри. Хранилището няма doc.md, така че този документ и двете READMEs описват изпълнението.
Потребителски работен процес
Въведете име на хост, адрес IPv4, IPv6 или HTTP(S)/WS( S). Баре хост имена / IPs по подразбиране за HTTPS; изрични URL адреси запазват своя път, заявка и порт по време на заявката. Отхвърлят се удостоверенията в URL адреси, неподдържани схеми, знаци за бяло пространство/контрол и имена на хостове, подобни на черупки. IPv6 буквално се скоба автоматично; идентификаторите на обхват/линк-локална зона не се поддържат от адресния анализатор.
Изберете Auto (предпочитайте IPv4, в противен случай IPv6), IPv4 или IPv6. Разрешаване на адресите за избор на конкретен текущ отговор. Прегледът показва всички решени отговори; сондите тестват избрания адрес или един адрес за всяко поискано семейство. И двете семейства се измерват независимо. Самото присъствие на AAAA никога не предполага работа на IPv6 свързаност.
Стартирайте диагностика работи DNS, пинг, traceroute, HTTP, компресия, TLS и избраните TCP портове. WebSocket се включва. Всеки инструмент също има отделен Run/Stop контрол. Един диагностичен тест може да бъде активен веднага. Завършена работа означава, че инструментите са готови, не че всяка сонда е успяла. Няма одеало "сървър офлайн" присъда.
Тайм аут, брой пакети, повторения, максимален хмел, DNS решаващ, избор на протокол, топла връзка и сравнение HTTP/HTTPS са конфигурираеми. Промяната на целта изчиства предварително избран IP. Историята може да отвори отново, да сравни два доклада, да изтрие, да импортира JSON, копие или износ JSON/CSV/TXT чрез естествени диалогови прозорци Core. Темата Light/dark/system се отнася за секцията за диагностика и се записва в съществуващата конфигурация UI. CZ/DE/EN следва незабавно езика на заявлението.
Компоненти и протоколно поведение
| Компонент | Приложение и тълкуване |
|---|---|
common.js |
Валидира цели/опции, гранични стойности и стойности на enum; преобразуването на IDNA; цифровата статистика изключва неизвестни стойности. |
dnsDiagnostics.js |
Системна резолюция за адрес използва dns.lookup, за да почете конфигурацията на OS и хост файлове. Запис заявки използват ограничена UDP DNS с TCP резервно копие за непълен отговор срещу dns.getServers(), или изрично избраният потребител / обществен решетел. Без имплицитно превключване към публично DNS. |
processTools.js |
Изпълнение на PS пинг / traceroute с масив от аргументи и shell: false, ограничена продукция, изрична таймаут и прекратяване / почистване на убийство. Парсирайте пакет отговори и хмел, вместо да третирате продължителността на процеса като RTT. |
httpDiagnostics.js |
Сбръчкани къдрици за HTTP/1.1, HTTP/2 както и HTTP/3; строга проверка на удостоверенията и приковано IP семейство. Всяка версия се иска независимо; действителната версия се записва. |
socketDiagnostics.js |
Експлицитно TLS Проби за версия, ограничена TCP свързва / пасивни банери, преди автентичност SSH наблюдение на ключа хост, като се използва съществуващата зависимост ssh2 и незадължителния RFC 6455 Подобрение. |
diagnosticsService.js |
Работи и отменя инструменти, избира/валидатира адреси, потоци напредък, запазва частични измервания и притежава крайния срок за изпълнение. |
historyStore.js |
Вероятна ограничена местна история, Редакция, внос от схема и износ на данни с измерени стойности. |
ICMP и маршрути
Ping по подразбиране за четири индивидуално изпълнени ICMP ехо заявки. Резултатите съдържат измерените за всеки пакет RTT, получени/изпратени бройки, загуба, min/average/max, стандартно отклонение на популацията, средна абсолютна разлика между последователни измерени RTTs (житер), TTL/Hop Limit при печат и времеви печати. Отговорът на <1 ms се счита за получен с горна граница, вместо да се изобретява цифров RTT. Неизвестните RTT се изключват от статистиката за латентност. Статистиката използва запазения прозорец на най-много 500 пакети; изпратените /received/loss брой обхваща целия период. Графиките показват последните наблюдения на 200, с различни символи за отговори, отговори под-резолюция, липсващи отговори и изрични искания/процедурни таймаутове.
Липсващият отговор може да отразява филтрирането на ICMP, загубата на пакети или таймаут; тези наблюдения не могат да идентифицират защитна стена убедително. Липсващи изпълними файлове, неправилни локални разрешения и невалидни извиквания на инструменти са отделни грешки в инструментите, а не загуба на пакети или липса на сървър. Не се изисква повишаване на привилегиите.
Проследете потоци хмел, адреси, индивидуални сонди, средства и наблюдавани проценти без отговор-сонда. Обратният DNS се решава след маршрута, като се използва избраният регулатор. Повторенията сравняват наблюдаваните поредици от хмел-адрес; разликите могат да отразяват балансирането на товара. Неотговорените междинни хмелове не установяват счупен маршрут. Метаданните и методът на Raw сондите се появяват в разширени детайли. macOS изисква цяло-секундни traceroute чакания; се записва ефективното заоблено време.
DNS
Дванадесетте рекордни типа са A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS и DNSKEY. DNS тел за анализ на проверките транзакция/идентичност на въпроса, размери на запис, контури за компресиране и ограничения на съобщенията. Отговорите запазват рекордни TTLs, времето за запитване, решаващ и NXDOMAIN/NODATA/SERVFAIL/refused/timeout състояния. Прегледите на адресите на OS не могат да предоставят TTL; отделната заявка за запис може.
CNAME следва се ограничава до осем връзки с откриването на цикъла. Последователността повтаря A/AAA отговори от избрания решетел и извършва предварително PTR за IP-литературни тестове DNS. Променените отговори са наблюдения, а не доказателство за грешка на DNS. Запитвания за SRV използват името на целта, както е дадено; въведете име на услуга като _service._tcp.example.org, когато е необходимо. DNSSEC винаги е not валидиран. Присъствието на DS/DNSKEY и дори флагът AD не се третират като самостоятелно валидиране.
HTTP, ефективност и компресия
HTTP/1.1 приема тази версия като поддържана само когато всъщност е била върната. HTTPS HTTP/2 изисква договорени h2; не се поставя повторно етикетиране. Cleartext HTTP/2 използва предварителни знания, а не сонда HTTP/1.1 Upgrade. Проверката на TLS остава стриктна за всяко искане на HTTP/WebSocket.
Ръчното пренасочване е ограничено до осем; циклите, невалидните дестинации и прекомерните пренасоки се провалят изрично. Пълната верижна отчетност на промените в домейните и понижаването на нивата на HTTPS; схемите и www промените са видими в URL адресите източник/назначение. Отхвърлят се схемите за прехвърляне на данни и схеми, които не са HTP(S). Всеки кръстосан хост пренасочване се решава независимо чрез избрания разрешаващ и поиска IP семейство.
Измерванията включват DNS (когато се извършва), TCP, TLS, TTFB с окончателен отговор, общо TTFB, включително DNS/redirects, изтегляне, пренасочване и общо време на стената, действителните байтове, скорост на прехвърляне, статус, заглавни части на отговора, действителен сървър адрес/порт, ALPN и потвърдена повторна употреба на връзката. DNS/TCP/TLS фазите, които не се извършват на захваната или повторно използвана връзка са N/AНе фалшиви нули. QUIC няма TCP фаза; неговото ръкостискане се записва отделно. Заглавната част или цялата тел не се твърди като измерване на байта. Това са сървър/мрежови времеви интервали, а не резултати от пресъздаване на страници или фар.
Всеки избран протокол използва една и съща цел и повторения. IPv4/IPv6 и HTTP/HTTPS са изрични варианти за сравнение. Алтернативната схема използва своето пристанище по подразбиране. Всеки протокол започва независим процес на пакетиране-клиент за проба. Не се твърди повторно използване на връзката. Статистиките за общото време включват min/average/median/max/nearest-rank P95 и отделен процент на грешка при транспортиране/протокол; кодовете за състоянието на HTTP остават видими дори когато сървърът успешно връща отговор 4xx/5xx.
Compression изпраща идентичност, Gzip, deflate, br и (когато времето за изпълнение го поддържа) Zstd като отделни заявки за приемане-Encoding. Кодирането на съдържанието трябва да съответства, и ограничена декомпресия трябва да успее. Съотношението се изчислява само ако декодираният орган хеш, крайният URL адрес и статусът съвпадат с изходната стойност на самоличността. Игнорираните кодирания са неподдържани; променящите се/динамичните тела нямат съотношение. Това е наблюдение за този URL/status, а не универсална поддръжка на сървъра.
Проверките за сигурност показват наличие и стойност на HSTS, CSP, X-Content-Type-Options, Referer-Policy, Права-Политика и X-Frame-Options. Директивата CSP за рамковите инвеститори може да замени последната. Присъствието не установява, че политиката е правилно конфигурирана или че уеб сайта е сигурен.
HTTP/3 изисквания и доказателство
HTTP/1.1, HTTP/2 и HTTP/3 използват един и същ клиент. macOS arm64 както и Linux x64 използване на къдрици 8.22.0, OpenSSL 3.5.9, nghttp2 1.70.0, NGTCP2 1.25.0 и nghttp3 1.18.0. Windows x64 използва официалния crowl.se къдрици за победа 8.22.0_3 статично изграждане с LibreSSL 4.3.3 и същите HTTP библиотеки. Не е необходимо системно извиване, сваляне на време за изпълнение или разрешение за администратор. Рецептата Windows нагоре по веригата възпроизводима строителна е https://github.com/curl/curl-for-win/tree/9d77e31e .
Постройте с python3 scripts/native/build.py (Windows: python scripts/native/build.py) преди опаковката. macOS/Linux изисква C/C++ инструменти, CMake, Ninja, Perl, made и pkg-конфигурация. Източниците са прихванати от версията и нагоре по SHA-256 в scripts/native/dependencies.lock.json. Сценарият проверява всяко изтегляне, статично свързва транспортни библиотеки на трети страни и се проваля без HTTP2/HTTP3/SSL характеристики. Само библиотеките на операционната система остават динамични. Windows използва прикования официален двоичен архив, а не локално компилиран транспортен стек Windows. Пакетираният CA файл има собствен прикован хеш; лицензите за компоненти и произходът на строителството нагоре по веригата придружават времето за изпълнение.
Клиентът и доверителният магазин са инсталирани извън app.asar в resources/native-runtime/<platform>-<arch>/. Всяка диагностика проверява компонента хешес, архитектура и изпълними възможности преди употреба. Конфигурирани файлове, прокси, TLS доверителна среда се отменят и се изключват променливи за Библиотеката. Кърлинги с абсолютен път, деактивирани черупки, проверени CA доверие, изрично решен IP семейство, без бисквитки, без автоматични пренасочване, и ограничена изход и време. Пренасочването се валидира и преразпределя от заявлението. HTTPS се поддържа на пристанища, различни от 443.
HTTP/3 използва --http3-only и се потвърждава само след завършено предаване на HTTP версия 3, както и успешно удостоверяване на сертификат. HTTP грешки отговори като 404 може да потвърди протокола. Alt-Svc е реклама, не доказателство. QUIC таймаут, отказ на сертификат, повреда на DNS, отказ за връзка, несъвместим протокол и неизправност на компонента остават различни. Времетраене на UDP оставя поддръжка на сървъра непроверена. QUIC времето за ръкостискане не е докладвано като TCP време.
Всяко измерване започва отделен процес/връзка. Топлата опция не претендира за повторно използване на връзката за пакетирания клиент. Това поддържа протоколните сравнения последователни. Докладите включват версии, възможности за изпълнение, проверка на TLS и QUIC време, докато историята/експортът премахват органи, заявки за URL адреси и заглавни части за удостоверяване на автентичността.
Актуализиране на тези пинове и възстановяване на всяка поддържана платформа при актуализиране на транспортния стек или CA доверителен магазин. Публикуваните артефакти и снимки са неизменни.
Основна IPC
Предварителното зареждане разкрива само window.chjCore.diagnostics; всички манипулатори запазват съществуващата проверка на основния подател и работата в мрежата остава основна. Резултатите използват { ok: true, value } или { ok: false, error: { code, message } }.
| Канал / предварително натоварване метод | Зареден товар / резултат |
|---|---|
diagnostics:resolve / resolve(options) |
Валидирана цел/настройки → целеви и разрешени адреси. Най-много две едновременни искания за резолюция. |
diagnostics:start / start(options) |
Валидирана цел/settings/tool подбор → непрозрачен идентификатор на длъжността и първоначален доклад. |
diagnostics:cancel / cancel(id, tool?) |
Отменяне на един активен/quued инструмент или целия пробег. |
diagnostics:get / get(id) |
Снимка на известен опит или запис на доклада. |
diagnostics:history / history() |
Местната история обобщава. |
diagnostics:removeHistory / removeHistory(id) |
Премахване на избрания елемент от историята. |
diagnostics:copy / copy(id, format) |
Мейн пише редактиран доклад в клипборда. |
diagnostics:export / export(id, format) |
JSON/CSV/TXT Чрез естествения прозорец за запис; рейнджърът не може да предостави път на файловата система. |
diagnostics:import / import() |
Народен файлов берач, размер/schema/depth валидиране и редактиране преди съхранение. |
diagnostics:progress / onProgress(callback) |
Решени адреси, инструмент за стартиране/завършване, пакети, хмел, HTTP проби и завършване; връща отписване обратно. |
Не е изложена обща обвивка, файлова система или мрежа API. Контекстовата изолация, пясъчника, интеграцията на възела с увреждания и съществуващият динамометър CSP остават включени. Съществуващите договори за плъгини и updater проверка / изключения са непроменени.
Бюджети и местни данни
- Един ход, два активни инструмента, най-много две IP-семейни сонди на инструмент; TCP допълнително ограничава всеки адрес до четири връзки.
- Почивка по време на операцията 250–30000 MS; 1–100 опаковки, 1–20 повторения, 1–40 хмел, 1–16 Пристанища. Редовните писти спират на пет минути; непрекъснат пинг в тридесет минути. Траекторията подпроцес има допълнителна 180-секунда капачка.
- Нормално производство на процеси 256 KB; структура на HTTP 2 МиБ; декомпресирано тяло 8 МиБ; HTTP заглавни части са ограничени; няма отговор органи влизат в историята.
- Запазете най-много пакети 500/прогресивна събития, пет по памет работи, тридесет исторически доклади и 10 MIB на историята. Историята използва съществуващия частен атомен писател в
<userData>/diagnostics/history.json(моуд 0600). - Вносът е най-много 2 Ми Би, шема. 1, с ограничени колекции от гнездящи и валидирани резултати. CSV клетките са избягали и формулите са неутрализирани. Запитванията/фрагментите за URL, пълномощията, бисквитките, заглавните части на автентичността и суровите тела се изключват от докладите на /copied/exported. Сурови детайли показват измерени структурирани данни, а не пакет за улавяне или запазване на отговор.
- Няма синхронизация на облака, автоматично влизане, промени в настройките на сървъра или агресивно/несвързано сканиране. Потребителят изрично избира целта /ports/resolver.
Изисквания към платформата и проверка
| Платформа | ICMP | Маршрут | Други протоколи |
|---|---|---|---|
| Windows 10/11 | ping.exe -4/-6 |
tracert.exe -4/-6, ICMP |
Подути curl.exe с HTTP/2 както и HTTP/3. Локализираните RTT полета не зависят от думата "време". |
| macOS | /sbin/ping, /sbin/ping6 |
/usr/sbin/traceroute, /usr/sbin/traceroute6, UDP; цяло число-секунда чака |
Сбръчкана къдрица с HTTP/2 както и HTTP/3. |
| Ubuntu/Linux | ипутин ping -4/-6 |
стандарт traceroute -4/-6, УДП |
Сбръчкана къдрица с HTTP/2 както и HTTP/3; липсващите ICMP/пътни инструменти се отчитат отделно. |
Не е добавена нова зависимост от npm. Изпълнението използва Node вградени и съществуващи ssh2. Той нито инсталира системни инструменти, нито изисква административни права. Противопожарните стени и ограниченията на UDP могат да попречат на изпитването да установи подкрепа; те не могат да бъдат изведени само от прекъсване.
Автоматизирано покритие е в diagnosticsCore.test.js, diagnosticsNetwork.test.js, diagnosticsHttp.test.js както и diagnosticsIpc.test.js: валидиране/IPv6 буквални, местни/местни DNS UDP + TCP тела, липсващи/двойни семейни отговори и решаващи грешки, CNAM / постоянство, OS аргумент / съхраняване на тела, ограничени реални детски процеси, блокирани ICMP наблюдения, реално локални HTTP/1.1 както и TLS h2, пренасочва/ограничение на тялото/timeouts/reuse, активирана/незабележима компресия, HTTP3 възможности/успешни резултати от анализ/отхвърляне на загуби, местно доверие в CA/mismatch/expiration и истински IPv6 HTTP/HTTPS, TCP връзка/refused/mock Таймаут, истински WebSocket и SSH ръкостискане преди удостоверяване, анулиране/cleanup/partial резултати, офлайн състояние, частна история кръгло пътуване / отхвърляне внос/износ, доверени IPC и предварително зареждане абонаменти.
npm test провежда детерминистични тестове без публични тестови сървъри. npm run test:diagnostics:ui работи scripts/smokeDiagnostics.js в графичен Electron работен плот, използвайки производство UI/preload/IPC и реални локални HTTP/компресни сонди. Несвързаните услуги са само в този изпитвателен колан. Той проверява навигационната поръчка, резултатите от протокола, постоянството, CZ/DE/EN, двете теми, тесен прозорец и предпочитания за пясъчник. Ако обвивката зададе ELECTRON_ RUN_AS_NODE, тя се изключва за тази команда.
Проверката на текущото работно време обхваща контролирани прехвърляния на QUIC, IPv4/IPv6, HTTPS на порт за непо подразбиране, 404 отговори, TLS неуспехи и реклама само за TCP услуги Alt-Svc. Пер-изграждане резултати придружават всяка версия.
Изрични незадължителни граници: без независимо валидиране на DNSSEC (изисква пълен валидиращ решаващ/доставчик на емисии жизнен цикъл), без одит на фара (само в работно време, без оневинен одит на TLS или отмяна/CT услуга, без искане за топла употреба HTTP3 и без измерване на топлинното използване на HTTP/3. Неподдържаните възможности се показват вместо симулирани.
Файлове в тази промяна
Създадени: седемте сервизни файла в src/main/diagnostics/; src/renderer/diagnostics.js, diagnosticsI18n.js и diagnostics.css. Четирите test/diagnostics*.test.js файлове; пет файла под test/fixtures/diagnostics/ (scripts/smokeDiagnostics.js); този документ.
Интегрирана/актуализирана: src/main/index.js, src/main/ipc/registerCoreIpc.js, src/preload/corePreload.js, src/renderer/index.html, app.js, i18n.js, package.json, app/README.md, корен README.md, .gitignore (четири изключения за публичното обзавеждане) и коренови гитлеаки позволяват списък тясно назоваване на умишлено обществено TLS Прикрепяне на клавиша за изпитване. Подписването на частен ключ CA е било изхвърлено; фиксирането никога не се използва от времето за изпълнение на приложението.