> Езиковата редакция на този превод е в ход. При неясноти сравнете с [английския оригинал](https://www.sm.ch-j.eu/docs/i18n/en/server-diagnostics.md). # Диагностика на сървъра Интегрирана в страничния панел на ядрото, в реда 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`Z| Валидира цели/опции, гранични стойности и стойности на enum; преобразуването на IDNA; цифровата статистика изключва неизвестни стойности. | | `dnsDiagnostics.js`Z| Системна резолюция за адрес използва `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/-/`. Всяка диагностика проверява компонента хешес, архитектура и изпълними възможности преди употреба. Конфигурирани файлове, прокси, 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 на историята. Историята използва съществуващия частен атомен писател в `/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 е било изхвърлено; фиксирането никога не се използва от времето за изпълнение на приложението.