Puncte:0

De ce Test-NetConnection indică că se poate face conexiunea, dar nu pot vizita site-ul?

drapel jp

Trebuie să determin dacă un anumit site este accesibil pe un anumit port, având în vedere că există restricții de firewall în rețea.

Dacă nu pot accesa site-ul pe un anumit port, înseamnă că ar trebui să modific firewall-ul înainte de a continua. În caz contrar, dacă pot ajunge pe site, atunci aș putea continua cu ceea ce intenționez să fac.

Am vrut să știu dacă pot prelua un depozit de la Github folosind adresa URL https a depozitului. Un exemplu de URL https: https://github.com/git-for-windows/git.git. Acesta poate fi folosit cu clonare și alte instrumente.

Să văd dacă pot ajunge Github și prin extensie, clonează repo-ul, am rulat următoarea comandă: Test-NetConnection -ComputerName github.com -Port 443 |findstr „TcpTestSucceeded”

Pe sistem, această comandă a returnat următoarele, indicând că am putut ajunge github.com peste portul 443 (https).

TcpTestSucceeded : Adevărat

Cu toate acestea, apoi am deschis un browser web și am vizitat https://github.com, iar browserul web a indicat că nu a putut fi realizată o conexiune. https este peste portul 443 și domeniul este github.com exact ca ce am pus la test.

Întrebările mele sunt:

  • De ce există această discrepanță între cele două teste?
  • Cum pot testa cu exactitate CMD sau PowerShell dacă am acces la un anumit domeniu printr-un anumit port?

În mod clar, Test-NetConnection comanda nu a produs rezultate precise, deoarece browserul web nu a putut ajunge github.com.

dave_thompson_085 avatar
drapel jp
Dacă „restricțiile firewall” se datorează faptului că vă aflați în rețeaua unei companii sau organizații care „inspectează” traficul din motive de securitate și/sau legale, ar putea exista un proxy explicit pe care browser-ul îl folosește și powershell nu, sau un proxy transparent care ambele folosesc, dar se lansează doar deasupra stratului TCP. Ar putea fi informativ să încercați iwr (alias invoke-webrequest) și să vedeți ce obține.
Puncte:2
drapel cv

În mod clar, comanda Test-NetConnection nu a produs exact rezultate, deoarece browserul web nu a putut accesa github.com.

Nu este o afirmație exactă.

Test-NetConnection a realizat de fapt o conexiune TCP la portul 443 al serverului de destinație, verificând că portul TCP 443 de pe serverul de la distanță este în starea de ascultare. Test-NetConnection nu testează ce aplicație/serviciu rulează/ascultă pe portul 443.

În esență, Test-NetConnection nu vă poate spune ce rulează/ascultă la Layer 7, vă poate spune doar că portul 443 este în starea de ascultare.

Puncte:1
drapel bd

Cele două afirmații „conexiunea se poate face” și „Sunt capabil să procedez cu ceea ce intenționez să fac” sunt departe de a fi echivalente, iar un simplu test de conexiune TCP precum Test-NetConnection nu testează deloc același lucru ca un real clona git.

A putea deschide o conexiune TCP la un port nu implică acces la serviciul care ascultă pe acel port. Există multe etape după conectarea inițială care pot eșua, cum ar fi negocierile TLS, autentificarea, autorizarea sau schimburile de protocol la nivel de aplicație.

De asemenea, restricțiile firewall nu sunt singurul motiv posibil pentru care o conexiune TCP eșuează, iar eșecurile conexiunii TCP nu sunt singurul efect posibil al unei restricții firewall. Deci afirmatiile tale:

Dacă nu pot accesa site-ul pe un anumit port, înseamnă că ar trebui să modific firewall-ul înainte de a continua.

și

În caz contrar, dacă pot ajunge pe site, atunci aș putea continua cu ceea ce intenționez să fac.

sunt amandoua gresite. Aceasta înseamnă că, în loc să vă întrebați de ce dvs Test-NetConnection testul nu a detectat problema care a cauzat ulterior eșecul accesului dvs. la GitHub, ar trebui să analizați care a fost de fapt acea problemă și apoi să evaluați dacă detectarea acelei probleme în avans ar oferi vreun beneficiu. Dacă răspunsul este da, atunci puteți concepe un test pentru a face exact asta.

În practică, deseori cel mai eficient mod de acțiune este să încercați operațiunea dorită fără teste anterioare și să gestionați orice erori pe măsură ce apar. Verificarea problemelor în avans are sens în mare parte numai dacă acestea pot fi remediate automat sau dacă încercarea și eșuarea operațiunii efective implică un cost sau un risc substanțial.

Mai exact, operațiunile GitHub eșuează destul de grațios și cu o indicație destul de clară a cauzei eșecului, așa că nu văd niciun beneficiu direct în testarea conexiunii mai întâi în loc să încerc doar operațiunea dorită direct.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.