> Šio vertimo kalbinė peržiūra dar vyksta. Jei tekstas neaiškus, palyginkite su [anglišku originalu](https://www.sm.ch-j.eu/docs/i18n/en/server-diagnostics.md). # Serverio diagnostika Integruota į Core šoninę juostą, eilės įskiepiai → Server Diagnostika → Hash & Checksum. Jai nereikia jokių SSH seansų arba atsisiųsti įskiepio. Visi bėgimo laiko kodai, bandymai ir įranga gyvena `app/`; modulis neturi priklausomybės nuo brolių ir seserų saugyklos. Saugykla neturi `doc.md`, todėl šis dokumentas ir abi READMEs apibūdina įgyvendinimą. ## Naudotojo darbo srautas Įveskite kompiuterio pavadinimą, IPv4, IPv6 arba HTTP(S)/WS(S) URL. Neliesti HTTPS serverių pavadinimų/IPs numatytoji reikšmė; užklausos metu aiškūs URL išsaugo kelią, užklausą ir prievadą. Atmesti URL, nepalaikomų schemų, baltos erdvės/kontrolės simboliai ir į apvalkalą panašūs mazgų pavadinimai. IPv6 raidės yra sukabinamos automatiškai; URL analizatorius nepalaiko skersinių/vietos zonų identifikatorių. Pasirinkite Auto (preferuoti IPv4, kitaip IPv6), IPv4 ar IPv6 arba abi. Išspręsti adresus tam tikram atsakymui. Apžvalga rodo visus išspręstus atsakymus; zondai tikrina pasirinktą adresą arba vieną adresą vienai prašomai šeimai. Abi šeimos matuojamos atskirai. AAAA buvimas vienas niekada reiškia, kad veikia IPv6 ryšį. Paleisti Diagnostika veikia DNS, ping, trackroute, HTTP, suspaudimo, TLS ir pasirinktus TCP prievadus. WebSocket yra pasirinkimas. Kiekvienas įrankis taip pat turi atskirą Paleisti/sustabdyti valdymą. Vienas diagnostinis ciklas gali būti aktyvus iš karto. Užbaigtas paleisti reiškia, kad įrankiai baigė, o ne kad kiekvienas zondas pavyko. Nėra antklodė “server offline” nuosprendis. Timeout, paketų skaičius, pasikartojimai, maksimalus apynių, DNS resolver, protokolo pasirinkimas, šiltas ryšys ir HTTP/HTTPS palyginimas yra konfigūruojamas. Keičiant tikslą atpažįstamas anksčiau pasirinktas IP. Istorija gali atnaujinti, palyginti du pranešimus, ištrinti, importuoti JSON, kopijavimas arba eksportas JSON/CSV/TXT per gimtoji Core dialogai. Light/dark/system tema taikoma diagnostikos sekcijai ir yra išsaugota esamoje UI konfigūracijoje. CZ/DE/EN nedelsiant seka paraiškos kalbą. ## Komponentai ir protokolo elgsena | Komponentas | Įgyvendinimas ir aiškinimas | | --- | --- | | `common.js` | Tikrinami tikslai ir (arba) pasirinktys, ribos ir enum vertės; IDNR konversija; skaitiniai statistiniai duomenys neapima nežinomų verčių. | | `dnsDiagnostics.js` z | Sistemos adresų raiška naudoja `dns.lookup` OS konfigūracijai ir mazgams failams pagerbti. Įrašų užklausos naudoti apriboti UDP DNS su TCP atsarginė atspalvis sutrumpintas atsakymus prieš `dns.getServers()`, arba aiškiai pasirinktą užsakymą / viešą sprendžiamąjį. Netiesioginis perėjimas prie viešo DNS. | | `processTools.js` z | OS ping/traceroute su argumentų masyvu ir `shell: false`, ribojama išvestis, aiškus laiko tarpas ir paneigtas/įgalinimo valymas. Parses paketus atsakymus ir apynius, o ne apdoroti proceso trukmę kaip RTT. | | `httpDiagnostics.js` z | Bundled garbanos HTTP/1.1, HTTP/2 ir HTTP/3; griežtas sertifikato patikrinimas ir prisegta IP šeima. Kiekviena versija prašoma nepriklausomai; faktinė versija registruojama. | | `socketDiagnostics.js` | Aiškiai TLS versijų zondai, TCP sujungimai/pasyvieji baneriai, iš anksto atpažinti SSH priimamojo rakto stebėjimas naudojant esamą priklausomybę nuo ssh2 ir pasirenkamas RFC; 6455 Atnaujinti patvirtinimą. | | `diagnosticsService.js` | Paleidžia ir atšaukia įrankius, pasirenka / patvirtina adresus, srautų progresą, išsaugo dalinius matavimus ir valdo paleidimo terminą. | | `historyStore.js` | Perkelta ribojanti vietovės istorija, pakartotiniai veiksmai, patikrintas importas pagal schemą ir duomenų eksportas. | ### ICMP ir maršrutai ICMP atspalvio užklausos Į rezultatus įeina matuojamas RTT kiekis, gautas/išduotas skaičius, nuostoliai, min./average/max, populiacijos standartinis nuokrypis, vidutinis absoliutus skirtumas tarp iš eilės nustatytų RTT (jitter), TTL/Hop limit atspausdintų ir laiko ženklų. Atsakymas `<1 ms` laikomas gautu su viršutine riba, užuot išradus skaitinę RTT. Nežinomi NTT neįtraukiami į latentinę statistiką. Statistiniai duomenys naudoti ne daugiau kaip išlaikytą langą 500 paketai; išsiųsta/received/loss skaičiai apima visą paleisti. Grafikai rodo paskutinį 200 pastabos su aiškiais atsakymų simboliais, posprendžio atsakymais, trūkstamų atsakymų ir aiškiu prašymu (proceso terminai). Trūkstamas atsakymas gali atspindėti ICMP filtravimą, paketų praradimą ar laiko tarpą; šie stebėjimai negali galutinai nustatyti ugniasienės. Trūksta vykdomųjų darbų, vietos leidimo klaidos ir netinkamas įrankis pritraukimas yra atskiros įrankio klaidos, o ne paketo praradimas ar serverio nepasiekiama. Privilegijų didinti nereikia. Maršruto srautų apyniai, adresai, pavieniai bandiniai, vidutiniai ir pastebėti neatsakingi procentiniai dydžiai. Atbulinis DNS išsprendžiamas po maršruto, naudojant pasirinktą sprendiklį. Kartojimai palygina pastebėtas apynių adresų sekas; skirtumai gali atspindėti apkrovos balansavimą. Nesulaukti tarpiniai apyniai nenustato sulaužyto maršruto. Pramoninio zondo metaduomenys ir metodas rodomi išplečiamoje detalėje. macOS reikalauja sveikojo-sekundės tracroute laukti; registruojamas efektyvusis suapvalintas laiko tarpas. ### DNS Dvylika įrašų tipų yra A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, PTR, DS ir DSKEY. DNS vielos užklausų tikrinimas sandorio/klausimo tapatumas, įrašų dydžiai, suspaudimo žymeklių kilpos ir pranešimų ribos. Atsakymai išsaugoti įrašą TTL, užklausų laikas, pertvarkymas ir NXDOMAIN/NODATA/SERVFAIL/refused/timeout valstijos. OS adresų paieška negali pateikti TTL; atskiras įrašas užklausa gali. CNAME yra ribojamas aštuoniomis jungtimis su ciklo aptikimu. Konsekvencija kartoja A/AAAA atsakymus iš pasirinkto sprendėjo, ir atlieka į priekį patvirtintą PTR IP-literal DNS testams. Pakeisti atsakymai yra pastabos, o ne įrodymas DNS kaltė. Užklauskite SRV naudoti tikslo pavadinimą, kaip nurodyta; įveskite paslaugos pavadinimą, pavyzdžiui `_service._tcp.example.org`, kai reikia. DNSSEC visada yra **not validuotas**. DS/DNSKEY buvimas ir netgi pertvarkytojo AD vėliava niekada nelaikomi nepriklausomu patvirtinimu. ### HTTP, veikimas ir suspaudimas HTTP/1.1 priima šią versiją kaip palaikomą tik tada, kai ji buvo faktiškai grąžinta. HTTPS HTTP/2 reikalauja sutartų h2; nėra atsarginės žymės. Išvalyti tekstą HTTP/2 naudoja ankstesnes žinias, o ne HTTP/1.1 Atnaujinti zondą. TLS tikrinimas tebėra griežtas kiekvienam HTTP/WebSocket prašymui. Rankiniai nukreipimai ribojami iki aštuonių; kilpos, netinkamos paskirties vietos ir pernelyg dideli nukreipimai aiškiai nepavyksta. Visos grandinės įrašai apie orientyrus ir HTTPS blogėja, schemos ir www pokyčiai matomi šaltinio ir (arba) maršruto URL. Kredencinės ir ne HTTP(S) nukreiptosios schemos atmetamos. Kiekvienas nukreipimas tarp hostų yra sprendžiamas nepriklausomai per pasirinktą sprendžiamąjį ir prašoma IP šeima. Matavimai apima DNS (kai atliekama), TCP, TLS, galutinį atsaką TTFB, bendrą TTFb, įskaitant DNS/re Directions, parsisiuntimą, nukreipimą ir visą sienos laiką, faktinius asmens baitus, perdavimo greitį, būklę, atsako antraštes, tikrąjį serverio adresą/prievadą, ALPN ir patikrintą jungties pakartotinį naudojimą. DNS/TCP/TLS fazės, neveikiamos prijungiant prie prisegto arba pakartotinai naudojamo jungties, yra `N/A`, o ne klastotės nuliai. QUIC neturi TCP fazės; jos rankinė yra registruojama atskirai. Viršutinės vielos dalies perkėlimas arba pilnas laidas nelaikomas subjekto baitų matavimu. Tai serverių/tinklo laikai, o ne puslapių atvaizdavimas ar švyturių balai. Kiekvienas pasirinktas protokolas naudoja tą patį tikslą ir pasikartojimus. IPv4/IPv6 ir HTTP/HTTPS yra aiškių palyginimo galimybių. Alternatyvioji schema naudoja numatytąjį prievadą. Kiekviename protokole pradedamas nepriklausomas komplektavimo kliento procesas mėginyje. Nenurodomas pakartotinis jungčių naudojimas. Viso laiko statistika apima min/average/median/max/nearest-rank P95 ir atskirą transportavimo/protokolio klaidų dažnį; HTTP būsenos kodai lieka matomi net tada, kai serveris sėkmingai grąžina 4xx/5xx atsaką. Suspaudimas siunčia tapatybę, gzip, deflate, br ir (jei veikiamas laikas palaiko jį) zstd kaip atskiri Priėmimo- Enkodavimo užklausos. Turinio įrašymas turi atitikti, o apribotas dekompresija turi sėkmingai. Santykis apskaičiuojamas tik tada, jei iškoduotas kūno hash, galutinis URL ir būklė atitinka tapatybės nustatymo bazinę vertę. Ignoruoti kodavimai nepalaikomi; besikeičiantys/dinaminiai kūnai neturi santykio. Tai to URL/statuso, o ne universalaus serverių palaikymo, stebėjimas. Saugumo viršūnių patikros rodo, kad yra HSTS, CSP, X-Content-Type-Politika, Leidimai-Politikai ir X-Frame-Nustatymai. A CSP Direktyva dėl rėmėjų gali ją pakeisti. Dalyvavimas neįrodo, kad politika yra teisingai sukonfigūruotas arba kad svetainė yra saugi. ### HTTP/3 reikalavimai ir įrodymas HTTP/1.1, HTTP/2 ir HTTP/3 naudoja tą patį komplektuotą garbanos kliento. macOS arm64 ir Linux x64 naudoti garbaną 8.22.0, OpenSSL 3.5.9, nghttp 1.70.0, ngtcp2 1.25.0 ir nghttp3 1.18.0. Windows x64 naudoja oficialų garbanos.se garbanos-win 8.22.0_3 statinių statybos su LibresSL 4.3.3 ir tos pačios HTTP bibliotekos. Nėra sistemos garbanos grįžtamosios, paleisti laiko atsiuntimo ar administratoriaus leidimas nėra reikalingas. Windows priešakyje atkuriamas sukurti receptas yra https://github.com/curl/curl-for-win/tree/9d77e31e . Kurti su `python3 scripts/native/build.py` (Windows: `python scripts/native/build.py`) prieš pakavimą. macOS/Linux reikalauja C/C++ įrankių, CMake, Ninja, Perl, make ir pkg-config. Šaltiniai yra prisegti versija ir prieš SHA-256 į `scripts/native/dependencies.lock.json`. Scenarijus patikrinti kiekvieną atsisiuntimą, statiškai nuorodos trečiųjų šalių transporto bibliotekos ir nepavyksta be HTTP2/HTTP3/SSL funkcijos. Tik operacinių sistemų bibliotekos išlieka dinamiškos. Windows naudoja prisegtą oficialų dvejetainį archyvą, o ne vietoje sukompiliuotą Windows transporto kaminą. Komplektuota CA failas turi savo prisegtą hash; komponento licencijos ir priešakinio kūrimo provenencija lydi paleisti laiką. Kliento ir pasitikėjimo parduotuvė įdiegta išorinėje aplikacijoje.Asar in `resources/native-runtime/-/`. Prieš naudojant kiekvieną diagnostinę patikrą, hasą, architektūrinę ir vykdomąją galimybes. Konfigūruoti failus, prixis, TLS Patikėjimo aplinka perjungia ir bibliotekos įpurškimo kintamieji yra neįtraukti. Garbanos veikia su absoliučiu keliu, apvalkalas išjungtas, patikrinta CA pasitikėjimas, aiškus išspręstas IP šeima, nėra slapukų, nėra automatinių nukreipimų, ir ribojamas išvestis ir laikas. Nukreipimai tvirtinami ir iš naujo pašalinami pagal paraišką. HTTPS palaikomas ne 443 prievaduose. HTTP/3 naudoja `--http3-only` ir yra patvirtinama tik po to, kai baigtas perdavimo ataskaita HTTP versija 3 bei sėkminga sertifikato patikra. HTTP klaidos atsakymai, pvz., 404, gali patvirtinti protokolą. Alt-Svc yra reklama, o ne įrodymas. QUIC laukimo laikas, sertifikato klaida, DNS klaida, prisijungimo atsisakymas, nesuderinamas protokolas ir komponento klaida išlieka skirtingi. UDP laiko tarpas palieka serverio palaikymą nepatikrintą. QUIC rankos paspaudimo laikas nėra pranešama kaip TCP laiko. Kiekvienas matavimas prasideda atskiru procesu ir (arba) jungtimi. Šiltas pasirinkimas nereikalauja, kad grupuojamas klientas pakartotinai naudotų ryšį. Tai palaiko pastovų protokolo palyginimą. Ataskaitos apima bėgimo laiko versijas, galimybes, TLS tikrinimą ir QUIC laiką, o istorija/eksportas pašalinti įstaigas, URL užklausų ir autentiškumo patvirtinimo antraštes. Atnaujinti šiuos smeigtukus ir atkurti kiekvieną palaikomą platformą, kai atnaujina transporto kamino arba CA pasitikėjimo parduotuvė. Skelbti artefaktai ir šaltinio vaizdai yra nekintamas. ## Pagrindinė IPC Išankstinė pakrova atkuria tik `window.chjCore.diagnostics`; visi tvarkytojai išlaiko esamą pagrindinio tinklo duomenų siuntėjo patikrinimą, o tinklo darbas išlieka pagrindinis. Rezultatai naudoti `{ ok: true, value }` arba `{ ok: false, error: { code, message } }`. | Kanalas/išankstinio įkrovimo metodas | Naudinga apkrova/rezultatas | | --- | --- | | `diagnostics:resolve` / `resolve(options)` | Patvirtintas tikslas (nustatymai) → taikinys ir išspręsti adresai. Ne daugiau kaip du prašymus dėl pertvarkymo. | | `diagnostics:start` / `start(options)` z | Patvirtintas tikslas/settings/tool pasirinkimas → nepermatomas darbo ID ir pradinė ataskaita. | | `diagnostics:cancel` / `cancel(id, tool?)` | Atšaukti vieną aktyvų/kvietinį įrankį arba visą paleidimą. | | `diagnostics:get` / `get(id)` | Įrašyti žinomo bėgimo ar išsaugojimo pranešimo fotografiją. | | `diagnostics:history` / `history()` | Vietos istorijos santraukos. | | `diagnostics:removeHistory` / `removeHistory(id)` | Pašalinti pasirinktą istorijos elementą. | | `diagnostics:copy` / `copy(id, format)` | Pagrindinėje dalyje į talpyklę rašomas perrašinėtas pranešimas. | | `diagnostics:export` / `export(id, format)` | JSON/CSV/TXT per vietinį įrašymo dialogą; atvaizduotojas negali pateikti failų sistemos kelio. | | `diagnostics:import` / `import()` | Failų parinkiklis, dydis/schema/depth patvirtinimas ir pakartotinis veiksmas prieš laikymą. | | `diagnostics:progress` / `onProgress(callback)` | Išspręsti adresus, įrankis prasideda / užpildo, paketai, apyniai, HTTP pavyzdžiai ir užbaigimas; grąžinti besąrašinį skambutį. | Nebuvo veikiama generinio apvalkalo, failų sistemos ar tinklo API. Kontekstinė izoliacija, smėlio dėžutė, išjungtų mazgų integracija ir esamas atvaizduotojas CSP lieka įjungtas. Galiojančios įskiepių sutartys ir atnaujinimas tikrinimas / išimtys yra nepakeistas. ## Biudžetai ir vietos duomenys - Vienas paleisti, du aktyvius įrankius, ne daugiau kaip du IP šeimos zondai vienai įrankiui; TCP papildomai apriboja kiekvieną adresą iki keturių jungčių. - Veiklos trukmė 250–30000 ms; 1–100 paketai, 1–20 pasikartojimai, 1–40 apynių, 1–16 uostams. Reguliarūs važiavimai sustoja po penkių minučių; nepertraukiamas ping 30 minučių. Trackroute poprocess turi dar vieną 180- Antras dangtelis. - Proceso išėjimas paprastai 256 KiB; HTTP subjekto kūnas 2 MiB; dekompresyvus kūnas 8 miB; HTTF antraštės apribotos; nėra atsako organų į istoriją. - Išlaikyti daugiausiai 500 Paketai/progresiniai renginiai, penki atminimo eigos, trisdešimt istorijos ataskaitų ir 10 MiB istorijos. Istorija naudoja esamą privačių atomų rašytojas `/diagnostics/history.json` (mode 0600). - Importas yra ne daugiau kaip 2 MiB, schema 1, su ribotu lizdų ir patvirtintų rezultatų rinkiniai. CSV ląstelės yra pabėgo ir formulė priešfiksuoja neutralizuojamos. Vartotojo užklausos/slaptažodžiai, duomenys, slapukai, autentiškumo patvirtinimo antraštės ir žaliavos įstaigos yra neįtrauktos į saugomą/copied/exported pranešimų. Išorinės detalės rodo išmatuotus struktūrizuotus duomenis, o ne paketo sugavimo ar išsaugojimo įstaigą. - Nėra debesų sinchronizavimo, automatinio prisijungimo, serverio konfigūracijos keitimo ar agresyvaus / besaikio skenavimo. Naudotojas aiškiai pasirenka targ/ports/resolver. ## Platformų reikalavimai ir patikra | Platforma | ICMP | Maršrutas | Kiti protokolai | | --- | --- | --- | --- | | Windows 10/11 | `ping.exe -4/-6` | `tracert.exe -4/-6`ICMP | Bundled curl.exe kai: HTTP/2 ir HTTP/3. Lokalizuoti RTT laukai nepriklauso nuo žodžio „laikas“. | | macOS | `/sbin/ping`, `/sbin/ping6` | `/usr/sbin/traceroute`, `/usr/sbin/traceroute6`, UDP; sveikasis-sekundinis laukia | Susmulkinta garbana su HTTP/2 ir HTTP/3. | | Ubuntu/Linux | iputils `ping -4/-6` | standartas `traceroute -4/-6`, UDP | Sulankstytas garbanos su HTTP/2 ir HTTP/3; trūksta ICMP/maršruto įrankiai pateikiami atskirai. | Nebuvo pridėta jokios naujos priklausomybės nuo NPM. Įgyvendinimas naudoja Node built-ins ir programos esamus ssh2. Ji nei įrengia sistemos priemones, nei reikalauja administracinių teisių. Ugniasienės ir UDP apribojimai gali užkirsti kelią bandymams sukurti paramą; jie negali būti laikomi vienu metu. Automatinė aprėptis `diagnosticsCore.test.js`, `diagnosticsNetwork.test.js`, `diagnosticsHttp.test.js` ir `diagnosticsIpc.test.js`: patvirtinimas/IPv6 vietiniai/vietiniai burtai DNS UDP+TCP įrenginiai, trūkstami/duali šeimos atsakymai ir sprendimo klaidos, CNAME/konsistencija, OS argumentai/pardavimo įranga, apriboti tikri vaikų procesai, blokuoti ICMP stebėjimas, realus vietinis HTTP/1.1 ir TLS h2, nukreipimai/kūno ribos/timeouts/reusesuspaudimo įjungta / prikabinta, HTTP3 Gebėjimai/rezultatų analizė/atmetimas, vietos CA pasitikėjimas/mismatch/expiration ir realus IPv6 HTTP/HTTPS, TCP jungtis/refused/mock laiko limitas, tikras WebSocket ir SSH priešauklinės rankos, atšaukimas/cleanup/partial rezultatai, atsijungusi valstybė, privati istorija apvalios juostos/importo atmetimo/eksporto, patikimos IPC ir išankstinio pristatymo prenumeratos. `npm test` atlieka deterministinius bandymus be viešųjų bandymų serverių. `npm run test:diagnostics:ui` veikia `scripts/smokeDiagnostics.js` grafiniame Electron darbastalyje, naudojant UI/preload/IPC gamybą ir realius vietinius HTTP/kompresijos zondus. Nesusijusios paslaugos yra čiužiamos ir (arba) nejudančios tik šiame bandymų įrenginyje. Ji tikrina navigacijos tvarką, protokolo rezultatus, atkaklumą, CZ/DE/EN, abi temos, siauras overflow srovė ir smėlio dėžės nustatymus. Jei korpusas nustato ELECTRON_RUN_AS_NODE, atjunkite jį šiai komandai. Esamas važiavimo laiko patikrinimas apima kontroliuojamus QUIC pervedimus, IPv4/IPv6HTTPS prievade, kuris nėra numatytasis, 404 atsakymai, TLS nesėkmės ir tik TCP paslaugos reklama Alt-Svc. Per statybos rezultatus lydi kiekvieną išleidimo. Aiškios neprivalomos ribos: nepriklausomi DNSSEC tvirtinimai (nereikalaujama visiško patvirtinimo, patvirtinančio sprendėjo/patikimo-anchoro gyvavimo ciklą), jokio švyturių audito (tik serveris/tinklo laikas), nuvertėjusio TLS audito ar atšaukimo/CT paslaugos, jokių HTTP3 šiltojo pakartotinio naudojimo reikalavimų ir jokio HTTP/3 karštojo pakartotinio panaudojimo matavimo. Nepalaikomos galimybės rodomos, o ne imituojamos. ## Šio pakeitimo failai Sukurti: septyni paslaugų failai `src/main/diagnostics/`; `src/renderer/diagnostics.js`, `diagnosticsI18n.js` ir `diagnostics.css` failus; keturi `test/diagnostics*.test.js` failai; penki failai pagal `test/fixtures/diagnostics/`; `scripts/smokeDiagnostics.js` ; šis dokumentas. Integruota/atnaujinta: `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`, šaknis `README.md`, `.gitignore` (keturios viešojo pobūdžio išimtys), o šaknys gitleaks leidžias siaurai pavadinti sąmoningai visuomenę TLS bandymo rakto tvirtinimo įtaisas. Pasirašymas CA privatus raktas buvo atmestas; įrenginys niekada nenaudojamas programos vykdymo metu.