Vova_2581 писал(а):То есть, если правильно понимаю, то при пинге, в любом случае отправляется 32 байта, как бы неизменной структуры пакета с параметрами
alibek писал(а):По умолчанию ping использует 32-байтовый payload, но это значение можно переопределить ключом -l.
Содержимое этого payload в windows-версии циклически наполняется строкой алфавита.
28-байтовый заголовок отправляется в любом случае, независимо от ключей.
Количество байт, указываемых в выводе ping, относятся только к данным, без заголовка.
alibek писал(а):Во-первых, ping может быть недоступен, заблокирован или ограничен в привилегиях.
alibek писал(а):Во-вторых, успешный или неуспешный ответ на пинг ни о чем не говорит.
Vova_2581 писал(а):А если пинговать ресурс с заранее открытыми и доступными всеми привилегиями для пинга, например, какие-нибудь публичные DNS сервера???
Например, dns.google по IP - 8.8.8.8 или 8.8.4.4, любой другой публичный DNS... например, из защищенных: quad9 - IP 9.9.9.9
Vova_2581 писал(а):Если DNS пингуется один или сразу несколько произвольных, значит интернет есть, если все DNS НЕ пингуются, - значит интернета нет. Логично??
Хакер писал(а):С практической, как правильно подметил Алибек, если нам в интернете нужен какой-то ресурс, то надо его сразу и проверять.
Хакер писал(а):Интернет это совокупность машин, это децентрализованная сеть, и непонятно, какая часть должна отвалиться, чтобы можно было сказать «интернета нет».
Хакер писал(а):Если обывателю отрезать HTTP и HTTPS, а всё остальное оставить рабочим, обыватель будет уверен, что интернета нет. Хотя, если HTTP не трогать, но задавить DNS-трафик, у обывателя тоже почти все сайты перестанут открываться
Vova_2581 писал(а):как и обычно. Получаем ошибочное представление о, якобы, «пропавшем» интернете.
Vova_2581 писал(а):И еще вопрос: на кой хрен вообще админу, провайдеру или «дяде Пете», еще кому по списку... «резать» ICMP ??? На фига???
Хакер писал(а):Хотя, если HTTP не трогать, но задавить DNS-трафик, у обывателя тоже почти все сайты перестанут открываться (или выборочно — в зависимости того, какие результаты резолвинга хостов попали в локальный кеш DNS).
alibek писал(а):Браузер Google Chrome (самый распространенный) при обращении к ресурсам из встроенного списка (в основном гуглоресурсы) не использует системный DNS, а использует гугловский DNS.
Vova_2581 писал(а):задачи 100% проверить доступность интернета, я уже понял, что это нереально.
Хакер писал(а):Гугловский, или же жестко вшитые пары хост->IP? Если просто не дефолтный, а свой, то блокировка DNS-трафика даст тот же результат.
Хакер писал(а):...сама фраза «доступность интернета» бессмысленна
Vova_2581 писал(а):что находится внутри айпишной функции InternetGetConnectedState ???
Vova_2581 писал(а):Значит, здесь уже идет упор на активность именно "железа" подключенного к интернету?
Получается, что может быть такая ситуация, когда модем/карта активны, а интернета нет. То есть, обрезан HTTP/HTTPS админом, к примеру, или сайт недоступен.
Эта функция все равно вернет True ???
alibek писал(а):...пытаются открыть адрес http://captive.apple.com/generate_204.
Если в ответ получают пустой HTML с тестом Success — значит интернет есть.
Private Sub Timer1_Timer() 'Interval - 1000 ms
On Error Resume Next
Dim oXMLHTTP As Object
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
With oXMLHTTP
.Open "GET", "http://captive.apple.com/generate_204", False
.Send
Cls
If .responseText Like "*Success*" Then
Print "Ресурс доступен"
Else
Print "Ресурс НЕ доступен"
End If
End With
Set oXMLHTTP = Nothing
End Sub
'Открываем сессию работы с Интернет...
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_FLAG_RELOAD = &H80000000
Const sURL = "http://captive.apple.com/generate_204"
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Sub Timer1_Timer() 'Interval - 1000 ms
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
sBuffer = Space(100)
hOpen = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
InternetReadFile hFile, sBuffer, 100, Ret
InternetCloseHandle hFile
InternetCloseHandle hOpen
Cls
If Trim(sBuffer) Like "*Success*" Then
Print "Ресурс доступен"
Else
Print "Ресурс НЕ доступен"
End If
End Sub
Private Sub Timer1_Timer() 'Interval - 1000 ms
Dim hOpen As Long, hFile As Long
hOpen = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
Cls
If hFile <> 0 Then
Print "Ресурс доступен"
Else
Print "Ресурс НЕ доступен"
End If
InternetCloseHandle hFile
InternetCloseHandle hOpen
End Sub
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11