Устранение неполадок подключения TCP/IP Troubleshoot TCP/IP connectivity
Могут возникнуть ошибки подключения в конце приложения или ошибках времени окончания. You might come across connectivity errors on the application end or timeout errors. Наиболее распространенные сценарии: The following are the most common scenarios:
- Подключение приложений к серверу баз данных Application connectivity to a database server
- SQL времени SQL timeout errors
- Ошибки времениобзора приложения BizTalk BizTalk application timeout errors
- Сбои протокола удаленного рабочего стола (RDP) Remote Desktop Protocol (RDP) failures
- Сбои доступа к файловой папке File share access failures
- Общее подключение General connectivity
Если вы подозреваете, что проблема в сети, вы собираете трассировка сети. When you suspect that the issue is on the network, you collect a network trace. Затем будет фильтроваться трассировка сети. The network trace would then be filtered. Во время устранения ошибок подключения может возникнуть сброс TCP при захвате сети, который может указывать на проблему с сетью. During troubleshooting connectivity errors, you might come across TCP reset in a network capture that could indicate a network issue.
Протокол TCP определяется как протокол, ориентированный на подключение и надежный. TCP is defined as connection-oriented and reliable protocol. Одним из способов обеспечения надежности TCP является процесс рукопожатия. One of the ways in which TCP ensures reliability is through the handshake process. Создание сеанса TCP начинается с трехнабного рукопожатия, за которым следует передача данных, а затем четырехадверное закрытие. Establishing a TCP session would begin with a three-way handshake, followed by data transfer, and then a four-way closure. Четырехнаправное закрытие, в котором отправитель и приемник согласны с закрытием сеанса, — это корректное закрытие. The four-way closure where both sender and receiver agree on closing the session is termed as graceful closure. После 4-го закрытия сервер будет использовать 4 минуты времени (по умолчанию), в течение которых будут обрабатываться все ожидающих пакетов в сети, это TIME_WAIT состояния. After the 4-way closure, the server will allow 4 minutes of time (default), during which any pending packets on the network are to be processed, this is the TIME_WAIT state. После TIME_WAIT состояния все ресурсы, выделенные для этого подключения, будут освобождены. After the TIME_WAIT state completes, all the resources allocated for this connection are released.
Сброс TCP — это резкое закрытие сеанса; Это приводит к немедленному освобождения ресурсов, выделенных для подключения, и стираются все остальные сведения о подмыве. TCP reset is an abrupt closure of the session; it causes the resources allocated to the connection to be immediately released and all other information about the connection is erased.
Сброс TCP идентифицирован по флагу RESET в заголке TCP, установленного на 1 . TCP reset is identified by the RESET flag in the TCP header set to 1 .
Трассировка сети на источнике и месте назначения помогает определить поток трафика и определить, в какой момент наблюдается сбой. A network trace on the source and the destination helps you to determine the flow of the traffic and see at what point the failure is observed.
В следующих разделах описаны некоторые сценарии, когда вы увидите сброс. The following sections describe some of the scenarios when you will see a RESET.
Пакетные пакеты Packet drops
Когда один одноранговой TCP отправляет TCP-пакеты, для которых нет ответа от другого конца, одноранговая точка TCP в конечном итоге будет перенаправлять данные, а если ответ не получен, сеанс завершится отправкой сброса ACK (это означает, что приложение подтверждает все данные, которые были обменяны до сих пор, но из-за переташения пакетов , подключение закрыто. When one TCP peer is sending out TCP packets for which there is no response received from the other end, the TCP peer would end up retransmitting the data and when there is no response received, it would end the session by sending an ACK RESET (this means that the application acknowledges whatever data is exchanged so far, but because of packet drop, the connection is closed).
Одновременные сетевые трассировки в источнике и месте назначения помогут вам проверить это поведение, если на стороне источника вы увидите, что пакеты будут перенаправлены, а в месте назначения ни один из этих пакетов не будет виден. The simultaneous network traces on source and destination will help you verify this behavior where on the source side you would see the packets being retransmitted and on the destination none of these packets are seen. Это означает, что сетевое устройство между источником и местом назначения сбрасывает пакеты. This would mean, the network device between the source and destination is dropping the packets.
Если первоначальное рукопожатие TCP не удается из-за перетаскивания пакетов, то вы увидите, что пакет TCP SYN переназначается только три раза. If the initial TCP handshake is failing because of packet drops, then you would see that the TCP SYN packet is retransmitted only three times.
Подключение на стороне источника через порт 445: Source side connecting on port 445:
Destination side: applying the same filter, you do not see any packets. Destination side: applying the same filter, you do not see any packets.
Для остальных данных TCP повторно передает пакеты пять раз. For the rest of the data, TCP will retransmit the packets five times.
Трассировка источника 192.168.1.62: Source 192.168.1.62 side trace:
Назначение 192.168.1.2 боковой трассировки: Destination 192.168.1.2 side trace:
Вы не увидите ни один из вышеуказанных пакетов. You would not see any of the above packets. Привяйте свою сетевую команду, чтобы изучить различные переходы и узнать, могут ли какие-либо из них вызвать проблемы в сети. Engage your network team to investigate with the different hops and see if any of them are potentially causing drops in the network.
Если вы видите, что пакеты SYN достигают места назначения, но не отвечают, убедитесь, что порт, к который вы пытаетесь подключиться, находится в состоянии прослушивания. If you are seeing that the SYN packets are reaching the destination, but the destination is still not responding, then verify if the port that you are trying to connect to is in the listening state. (Выходные данные Netstat помогут). (Netstat output will help). Если порт прослушивает и ответа по-прежнему нет, может произойть перепад WFP. If the port is listening and still there is no response, then there could be a wfp drop.
Неправильный параметр в загонке TCP Incorrect parameter in the TCP header
Это происходит, когда пакеты изменяются в сети устройствами среднего размера, а TCP на приемном конце не может принять пакет, например номер последовательности, который изменяется, или пакеты, повторяющиеся средним устройством путем изменения номера последовательности. You see this behavior when the packets are modified in the network by middle devices and TCP on the receiving end is unable to accept the packet, such as the sequence number being modified, or packets being replayed by middle device by changing the sequence number. Опять же, одновременная трассировка сети в источнике и назначении сможет сообщить вам, были ли изменены какие-либо из TCP-загон. Again, the simultaneous network trace on the source and destination will be able to tell you if any of the TCP headers are modified. Начните с сравнения трассировки источника и конечной трассировки, вы сможете заметить изменение в самом пакете или если какие-либо новые пакеты достигают места назначения от имени источника. Start by comparing the source trace and destination trace, you will be able to notice if there is a change in the packets itself or if any new packets are reaching the destination on behalf of the source.
В этом случае вам снова потребуется помощь группы по сети для определения любого устройства, которое будет изменять пакеты или переигрывать пакеты в месте назначения. In this case, you’ll again need help from the network team to identify any device that’s modifying packets or replaying packets to the destination. Наиболее распространенными являются устройства RiverBed или ускорители WAN. The most common ones are RiverBed devices or WAN accelerators.
Сброс на стороне приложения Application side reset
Если вы определили, что сбросы не вызваны переназначением или неправильным параметром или пакетами, которые были изменены с помощью трассировки сети, то сузили его до сброса уровня приложения. When you have identified that the resets are not due to retransmits or incorrect parameter or packets being modified with the help of network trace, then you have narrowed it down to application level reset.
При сбросе приложения вы увидите флаг подтверждения, установленный вместе с 1 флагом сброса. The application resets are the ones where you see the Acknowledgment flag set to 1 along with the reset flag. Это означает, что сервер подтверждает получение пакета, но по какой-либо причине не принимает подключение. This would mean that the server is acknowledging the receipt of the packet but for some reason it will not accept the connection. Это происходит, когда приложению, получиваму пакет, не нравится полученное. This is when the application that received the packet did not like something it received.
На снимках экрана ниже видно, что пакеты, которые видны в источнике и назначении, одинаковы без каких-либо изменений или любых сброшений, но вы видите явный сброс, отправленный назначением в источник. In the below screenshots, you see that the packets seen on the source and the destination are the same without any modification or any drops, but you see an explicit reset sent by the destination to the source.
На стороне источника Source Side
Трассировка на стороне назначения On the destination-side trace
Вы также увидите пакет флага ACK+RST в случае, если вы отправляете СИН пакета установки TCP. Пакет TCP SYN отправляется, когда клиент хочет подключиться к определенному порту, но если по какой-либо причине destination/server не хочет принимать пакет, он отправляет пакет ACK+RST. You also see an ACK+RST flag packet in a case when the TCP establishment packet SYN is sent out. The TCP SYN packet is sent when the client wants to connect on a particular port, but if the destination/server for some reason does not want to accept the packet, it would send an ACK+RST packet.
Необходимо искомые приложения, вызывающие сброс (идентифицированные номерами портов), чтобы понять, что приводит к сбросу подключения. The application that’s causing the reset (identified by port numbers) should be investigated to understand what is causing it to reset the connection.
Вышеперечисленные сведения о сбросах с точки зрения TCP, а не UDP. The above information is about resets from a TCP standpoint and not UDP. UDP — это протокол без подключения, и пакеты отправляются ненадежно. UDP is a connectionless protocol and the packets are sent unreliably. При использовании UDP в качестве транспортного протокола не будет отсканироваться или сброситься. You would not see retransmission or resets when using UDP as a transport protocol. Однако UDP использует ICMP в качестве протокола отчетов об ошибках. However, UDP makes use of ICMP as a error reporting protocol. Если у вас есть пакет UDP, отправленный через порт, а у пункта назначения нет порта в списке, вы увидите, что назначение, отправляя хост назначения ICMP, недостижимо: порт недостижимое сообщение сразу же после пакета UDP When you have the UDP packet sent out on a port and the destination does not have port listed, you will see the destination sending out ICMP Destination host unreachable: Port unreachable message immediately after the UDP packet
В ходе устранения неполадок подключения вы также можете увидеть в трассировке сети, на которую компьютер получает пакеты, но не отвечает. During the course of troubleshooting connectivity issue, you might also see in the network trace that a machine receives packets but does not respond to. В таких случаях может произойть снижение уровня сервера. In such cases, there could be a drop at the server level. Чтобы понять, сбрасывает ли локальный брандмауэр пакет, в включить аудит брандмауэра на компьютере. To understand whether the local firewall is dropping the packet, enable the firewall auditing on the machine.
Затем можно просмотреть журналы событий безопасности, чтобы просмотреть перепад пакетов на определенном ip-адресе порта и связанный с ним ИД фильтра. You can then review the Security event logs to see for a packet drop on a particular port-IP and a filter ID associated with it.
Восстановление стека TCP/IP
Что делать если не работают сетевые протоколы? При попытки пропинговать сервер / ip-адресс вы получаете ошибку «Не удается обратиться к драйверу IP. Код ошибки 2»? Тогда у вас что-то со стеком TCP/IP, разберём подробнее.
Начну с лёгкого и простого, заканчивая более сложными решениями проблемы.
Возможно у вас на компьютере стоит Аваст и проблемы начались после обновления антивирусных баз, 6 декабря 2012 года аваст добавил в свои базы файл C:\Windows\system32\drivers\TCPIP.sys , вскоре после обновления баз аваст нашёл этот файл в системных файлах и удалил (возможно поместил в карантин).
Не беда, ниже я напишу как восстановить работоспособность стека TCP/IP, после чего сеть должна заработать (если она конечно раньше работала):
1. Самый простой способ — воспользоваться avastfix.zip зеркало :
- для начала нужно скачать avastfix (ссылки строчкой выше)
- распаковать, допустим на диск C:\ (в архиве есть папка, так что после извлечения будет путь такой C:\avastfix\ )
- если у вас стоит аваст, то отключите его: в правом нижнем углу найдите значок аваста (возле часов), нажмите на него правой кнопкой мышки и выберите управление экранами avast , далее нужно указать отключение навсегда
- запустите fixtcpip.bat , после чего компьютер перезагрузится
- после перезагрузки проверяем работу сети например пингом на сервер гугла: на клавиатуре нажмите одновременно на флажок (логотип windows), между Ctrl и Alt , и букву R , то есть Win + R . В появившемся окне напишите cmd , у вас открылась командная строка, в ней напишите ping 8.8.8.8 , должно появиться
Обмен пакетами с 8.8.8.8 по 32 байт:
Ответ от 8.8.8.8: число байт=32 время=55мс TTL=48
или что-то похожее, но не ошибка драйвера сети
C:\Windows\system32\drivers\TCPIP.sys (у вас может быть установлен windows на другой раздел, например D: )
Давайте теперь рассмотрим что в этом «чудо» архиве:
fixtcpip.bat — некий скрипт, который импортирует в реестр стандартные настройки стека, распаковывает архив tcpip.rar при помощи UnRAR.exe в C:\Windows\system32\drivers\ и перезагружает компьютер
2. Рассмотрим теперь ручное восстановление/копирование файла
- для начала всё же отключим аваст (см. выше 3-ий пункт » если у вас стоит …»)
- файл tcpip.sys можно скопировать из папки C:\Windows\system32\dllcache , но возможно аваст его то же удалил, тогда можно взять загрузочный CD/DVD/USB диск и там найти этот файл в …\I386\TCPIP.SY_ . Так же файл можно взять с рабочей системы. Но если взять этот файл вам не откуда, тогда вот ссылка для SP3 (если у вас SP2, то можете попросить) tcpip.sys
- перезагрузите компьютер
- проверьте работоспособность сети/интернета, если работает, тогда обновите аваст и запустите аваст (см. последний пункт 1-го способа)
3. Если не помогли предыдущие способы, то скорее всего виноват не аваст. Проверьте, существует ли файл C:\windows\inf\nettcpip.inf , если существует, тогда приступайте к следующему способу. Если файла нет, тогда его нужно скопировать с рабочей системы, нет рабочей системы? Не беда, скачайте отсюда nettcpip.inf
4. Переустановка стека TCP/IP используя Microsoft Fix it 50199 зеркало
5. Можно попробовать утилиту TCPIP.Sys RestoreTool от фирмы UnHackMe , этой утилитой я не пользовался, но по описанию она должна переустанавливать стек TCP/IP в операционных системах: Windows 2000/XP/Vista/Seven/8 32 и 64-бит
6. Сброс настроек стека TCP/IP вручную. На сайте Microsoft в статье kb299357 написано, что для переустановки достаточно выполнить выполнить всего одну команду в командной строке:
- запустите cmd
- выполните netsh int ip reset resetlog.txt
- перезагрузите компьютер
7. А теперь самое сложное переустановка стека TCP/IP в windows XP вручную.
- Загрузите windows в Безопасный режим , то есть включаете компьютер и многократно нажимайте на F8 пока не появится меню загрузки windows, выберите Безопасный режим
- Зайдите в реестр ( Пуск — Выполнить — regedit — OK или Win + R )
- Удалите два ключа и выйдите из реестра: