Устранение неполадок с подключением TCP/IP
Попробуйте наш виртуальный агент . Он поможет вам быстро определить и устранить распространенные проблемы с репликацией Active Directory.
Применимо к: Windows 10
Вы можете столкнуться с ошибками подключения в конце приложения или с ошибками времени ожидания. Ниже приведены наиболее распространенные сценарии.
- Подключение приложений к серверу базы данных
- Ошибки времени ожидания SQL
- Ошибки времени ожидания приложения BizTalk
- Сбои протокола удаленного рабочего стола (RDP)
- Сбои доступа к общей папке
- Общая возможность подключения
Если вы подозреваете, что проблема связана с сетью, вы собираете трассировку сети. Затем трассировка сети будет фильтроваться. Во время устранения ошибок подключения вы можете столкнуться со сбросом TCP в сетевом захвате, который может указывать на проблему с сетью.
- Протокол TCP определяется как надежный протокол, ориентированный на подключение. Одним из способов обеспечения надежности TCP является процесс подтверждения. Создание сеанса TCP начинается с трехстороннего подтверждения, затем передачи данных, а затем четырехстороннего закрытия. Четырехсторонняя закрытие, при которой и отправитель, и получатель соглашаются о закрытии сеанса, называется корректной закрытием. После четырехсторонного закрытия сервер предоставит 4 минуты времени (по умолчанию), в течение которого будут обрабатываться все ожидающие пакеты в сети. Этот период является TIME_WAIT состоянием. После завершения TIME_WAIT состояния все ресурсы, выделенные для этого подключения, освобождаются.
- Сброс TCP — это внезапное закрытие сеанса; это приводит к немедленному освобождению ресурсов, выделенных для подключения, и все остальные сведения о подключении удаляются.
- Сброс TCP определяется флагом RESET в заголовке TCP, который имеет значение 1.
Трассировка сети в источнике и назначении помогает определить поток трафика и увидеть, в какой момент наблюдается сбой.
В следующих разделах описаны некоторые сценарии, когда вы увидите RESET.
Удаление пакетов
Когда один одноранговый узел TCP отправляет TCP-пакеты, для которых не получен ответ с другого конца, одноранговый узел TCP в конечном итоге перенаправляет данные, а если ответа не получено, он завершит сеанс, отправив ACK RESET (этот ACK RESET означает, что приложение подтверждает, какие данные обмениваются до сих пор. но из-за удаления пакетов подключение закрывается).
Одновременная трассировка сети в источнике и назначении поможет проверить это поведение, когда на стороне источника вы увидите пакеты, передаваемые повторно, а в месте назначения ни один из этих пакетов не отображается. Этот сценарий означает, что сетевое устройство между источником и назначением удаляет пакеты.
Если начальное подтверждение TCP завершается сбоем из-за удаления пакетов, то вы увидите, что пакет TCP SYN повторно передается только три раза.
Подключение на стороне источника через порт 445:

Конечная сторона: при применении того же фильтра пакеты не отображаются.

Для остальных данных TCP передаст пакеты пять раз.
Исходная трассировка 192.168.1.62:

Целевая трассировка 192.168.1.2:
Вы не увидите ни одного из указанных выше пакетов. Обратитесь к сетевой команде, чтобы изучить различные прыжки и узнать, может ли какой-либо из них вызвать падение сети.
Если вы видите, что пакеты SYN достигают назначения, но назначение по-прежнему не отвечает, убедитесь, что порт, к которому вы пытаетесь подключиться, находится в состоянии прослушивания. (Выходные данные Netstat помогут). Если порт прослушивает и по-прежнему нет ответа, то может быть падение мппы.
Неправильный параметр в заголовке TCP
Такое поведение возникает, когда пакеты изменяются в сети устройствами среднего уровня, а TCP на принимающем конце не может принять пакет, например изменяемый порядковый номер или пакеты, воспроизводимые средним устройством путем изменения порядкового номера. Опять же, одновременная трассировка сети в источнике и назначении сможет определить, будут ли изменены какие-либо заголовки TCP. Начните с сравнения трассировки источника и целевой трассировки. Вы сможете заметить, есть ли изменения в самих пакетах или какие-либо новые пакеты достигают назначения от имени источника.
В этом случае вам снова потребуется помощь от команды сети, чтобы определить любое устройство, которое изменяет пакеты или отправляет пакеты в место назначения. Наиболее распространенными из них являются устройства RiverBed или акселераторы глобальной сети.
Сброс на стороне приложения
Если вы определили, что сбросы не связаны с повторной отправкой или неправильным параметром или пакетами, изменяемыми с помощью трассировки сети, вы сузили его до сброса на уровне приложения.
Сбросы приложения — это те, где вы видите флаг подтверждения, равный 1, а также флаг сброса. Этот параметр означает, что сервер подтверждает получение пакета, но по какой-то причине не принимает подключение. На этом этапе приложению, получившей пакет, не понравилось то, что оно получило.
На снимках экрана ниже вы увидите, что пакеты, отображаемые в источнике и назначении, одинаковы без каких-либо изменений или удалений, но вы увидите явный сброс, отправленный назначением в источник.
На стороне источника

Трассировка на стороне назначения

Вы также увидите пакет флага ACK+RST в случае отправки пакета создания TCP SYN. Пакет TCP SYN отправляется, когда клиент хочет подключиться к определенному порту, но если назначение или сервер по какой-либо причине не хочет принимать пакет, он отправляет пакет ACK+RST.

Приложение, которое вызывает сброс (определяется номерами портов), должно быть изучено, чтобы понять, что заставляет его сбрасывать подключение.
Приведенные выше сведения о сбросах с точки зрения TCP, а не UDP. UDP — это протокол без подключения, и пакеты отправляются ненадежно. Вы не увидите повторную передачу или сброс при использовании UDP в качестве транспортного протокола. Однако UDP использует ICMP в качестве протокола отчетности об ошибках. Если пакет UDP отправлен на порт, а порт назначения не указан, сразу после пакета UDP вы увидите сообщение о том, что узел назначения ICMP недоступен: Порт недоступен .
10.10.10.1 10.10.10.2 UDP UDP:SrcPort=49875,DstPort=3343 10.10.10.2 10.10.10.1 ICMP ICMP:Destination Unreachable Message, Port Unreachable,10.10.10.2:3343
Во время устранения неполадок с подключением вы также можете увидеть в трассировке сети, что компьютер получает пакеты, но не отвечает. В таких случаях может произойти падение на уровне сервера. Чтобы понять, сбрасывает ли локальный брандмауэр пакет, включите аудит брандмауэра на компьютере.
auditpol /set /subcategory:"Filtering Platform Packet Drop" /success:enable /failure:enable
Затем можно просмотреть журналы событий безопасности, чтобы узнать, как удалить пакет на определенный IP-адрес порта и связанный с ним идентификатор фильтра.

Теперь выполните команду netsh wfp show state , при этом при выполнении будет создан файлwfpstate.xml . После открытия этого файла и фильтрации по идентификатору, который вы найдете в приведенном выше событии (2944008), вы увидите имя правила брандмауэра, связанное с этим идентификатором, которое блокирует подключение.

Обратная связь
Были ли сведения на этой странице полезными?
TCP подключение
Этот сервис дает возможность протестировать TCP подключение к любому порту любого IP адреса или веб-сайта из различных мест и стран. Проверьте состояния портов на сервере легким способом.
Например Вы можете проверить новый порт для SSH у вашего сервера на доступность из различных точек земного шара. Мониторинг веб-сайта или мониторинг любого другого сервиса с помощью этого инструмента может сэкономить значительное время системному администратору.
Примеры:
Как подключиться к внешнему IP с помощью tcp?
Подключение работает, но только если устройства подключены к одной сети (WiFi или моб. сеть), тем самым подключение ограничено в пределах одной сети.
Можно ли как-то соединиться по внешнему ip адресу или по ip из другой сети, при этом с условием, что сервер может разворачиваться на любом устройстве?
Получается такая схема: любой пользователь может создать сервер на своём устройстве и любой другой пользователь, зная порт и ip может к этому серверу подключиться.
- Вопрос задан более года назад
- 283 просмотра
Комментировать
Решения вопроса 2
Flatt10342 @Flatt10342
Да, это возможно, но при соблюдении одного условия — белый IP адрес у сервера. В этом случае сервер будет доступен для всех, кто знает IP вашего сервера. Для этих целей вы так же можете использовать сторонние сервисы, например, NGROK.
Однако, обратите внимание, что в таком случае вы работаете с url, а не с IP адресом.
Если же вы хотите, чтобы сервер был доступен только конкретным участникам, то вы можете поднять свой VPN сервер и выдать сертификаты всем, кто сможет в дальнейшем воспользоваться вашим сервером. Т.е. доступ к этой сети будет строго ограничен теми людьми, у которых есть учетные данные и сертификат. Одним из вариантов реализации такого решения может стать, например, OpenVPN.
Здесь адресация будет работать так же, как и в локальной сети
Ответ написан более года назад
Комментировать
Нравится 2 Комментировать
В нынешних условиях когда каждое подключение проходит через домашний роутер с NAT, нет не у кого «белого» ip-адреса(глобального, внешнего), кроме как у серверов. Даже если «белый» ip-адрес выдаётся провайдером роутеру(что не факт), то нужно сперва пробросить порт через UPnP или пользователем вручную. В последнем случае пользователь должен указать Вашей программе адрес и порт. Конечно есть ещё IPv6, но тех у кого он есть не слишком много. Есть Teredo, но включать его без спроса пользователя не стоит. Да и как любая технология основанная на STUN, работает он не всегда. Метод который работает абсолютно всегда это VPN, который будет проксировать подключения.
Кстати Ваш код очень наивен. У меня в системе есть сетевые адаптеры виртуальных машин, VPN-соединений, даже могут быть дополнительные Loopback, ну и конечно физические. В каком порядке будут выдаваться адреса всех этих адаптеров?
Ответ написан более года назад
Нравится 1 6 комментариев

limb @LittleBob Автор вопроса
Я знаю что есть проблема со списком адресов, уже столкнулся.
Думаю, есть какое-то распознавание или типа того.
Спасибо за ответ!
Как вариант может чем то поможет проект nebula network
Достаточно развернуть там 1 «маяк» и можно обслуживать сотни юзеров, для связи друг с другом

limb @LittleBob Автор вопроса
Если вам не затруднит, я бы хотел ещё кое-что уточнить.
Одно время я хостил сервер Terraria (игра)
У них есть свой консольный сервер, я точно знаю, что он реализован так же на tcp, при этом эту консольку можно было развернуть на любом ПК и подключаться к ней с других устройств по внешнему IP (которое например показывает 2ip.ru)
Очевидно, что на моем пк не было белого IP, я даже никаких настроек не совершал.
Представляете ли вы как такое может реализоваться?
LittleBob, На ПК у Вас может быть и не было «белого» ip-адреса, но был ли у Вас роутер? Terreria умеет UPnP.
Что такое TCP/IP
TCP/IP (Transmission Control Protocol/Internet Protocol) – это модель передачи цифровых данных. Протокол передачи TCP/IP описывает правила передачи данных, стандарты связи между компьютерами, а также содержит соглашения о маршрутизации и межсетевом взаимодействии.
Что такое протокол и для чего он нужен? Протокол – это набор правил, благодаря которым устройства обмениваются данными через интернет. Эти правила сообщают устройствам о том:
- Как начинать общение и приветствовать другую сторону.
- Как договориться с другим устройством о параметрах передачи данных.
- Что делать при ошибках.
- Как узнать, что передача данных закончена.
Сетевые протоколы TCP/IP обеспечивает связь между устройствами, работающими через интернет. Обычно эти устройства называют хостами. Хотя существуют и другие протоколы передачи данных, TCP/IP выделяется тем, что при его работе обеспечивается аппаратная независимость.
Это значит, что работа протокола не зависит от особенностей аппаратного обеспечения, он позволяет организовать обмен данными между любыми устройствами с различной технологией передачи данных. Кроме этого, сетевая модель TCP/IP определяет стандарты для множества различных служб связи конечных пользователей.
Благодаря TCP/IP возможны такие действия:
- Передача данных в другую систему.
- Вход в удаленную систему.
- Управление сетью.
- Отправка сообщений удаленным пользователям.
- Выполнение удаленных команд.
- Печать файлов из удаленной системы.
Как работает TCP/IP
TCP и IP два отдельных протокола, работающие вместе. Они образуют стек протоколов надежной передачи данных. Стек протоколов TCP/IP различают два типа сокетов TCP (потоковые) и UDP (датаграммные). Подробнее о сокетах расскажем далее.
UDP – простой протокол с минимальной дополнительной нагрузкой, он подходит для отправки небольших сообщений, когда не важна надежность при передаче данных. Протокол TCP – выполняет проверку доставки всех файлов адресату и проверяет не было ли ошибки при передаче информации. TCP может повторно запросить данные, если они были потеряны и регулировать загрузку сети.
Стек протоколов TCP/IP позволяет обеспечивать доставку информации в необходимое место назначения. IP определяет адрес доставки, а TCP отвечает за процесс передачи и доставки данных. Для более наглядного примера предположим, что IP – это адрес электронной почты, а TCP — это почтовый клиент, с помощью которого происходит отправка сообщений.
Протоколы используются вместе, чтобы информация имела место назначения, а сам процесс происходил безопасно.
Для работы протоколов необходима установка TCP/IP – специального программного обеспечение. Обычно, оно устанавливается с операционной системой и не требует скачивания дополнительных программ.
Как настроить TCP/IP
Настройка TCP/IP происходит в разделе основных настроек компьютера.
Windows
- В меню Пуск выберите Сеть и интернет.
- Далее перейдите в раздел Ethernet.
- В открывшемся окне найдите пункт Настройка параметров адаптера.
- Затем снова выберите пункт Ethernet, нажав на него правой кнопкой мыши, и выберите раздел свойства.
- В открывшемся окне двойным щелчком по левой кнопке мыши выберите пункт IP версии 4 (TCP/IPv4).
- В новом окне отметьте точками: Получить IP-адрес автоматически и Получить адрес DNS-сервера автоматически.
- На вкладке Альтернативная конфигурация отметьте точку Автоматический частный IP-адрес.
- Нажмите ОК, чтобы сохранить настройки.
MacOS
- Выберите меню Apple и перейдите в Системные настройки.
- Зайдите в раздел Сеть.
- Слева выберите сетевую службу, которую используете.
- Далее нажмите Подробнее.
- Выберите раздел TCP/IP.
- Для адреса IPv4, кликните всплывающее меню «Конфигурация IPv4».
- Выберите здесь один из вариантов, потом введите адрес IPv4, маску подсети и адрес маршрутизатора.
- Для адреса IPv6, кликните всплывающее меню «Конфигурация IPv6»
- Выберите один из вариантов, потом введите адрес маршрутизатора, адрес IPv6 и длину префикса.
- Если у вас есть ID клиента DHCP, укажите его.
- Нажмите ОК.
Что такое сокеты
Сокет — это программный механизм, который обеспечивает сетевое взаимодействие, помогает осуществлять передачу информации от одного компьютера к другому. Он представляет собой конструкцию, состоящую из IP-адреса и номера порта.
Сокет был придуман для того, чтобы облегчить программистам процесс написания кодов. При работе с сокетами программистам не надо разбираться с IP и портами, при программировании он указывает, что хочет создать сокет и обозначает для него IP-адрес. Программа, в которой работает специалист, создает сокет. Далее информация отправляется и принимается в сокете, а программа отвечает за ее передачу.
Основное назначение сокетов – передача данных через сеть и обеспечение связи между различными приложениями.
При настроенных сокетах в двух разных приложениях можно осуществлять передачу данных без дополнительных программ. Например, чтобы получить информацию из мобильного приложения, сервер запускает сокет для связи с этим приложением. Само приложение также открывает сокет, чтобы связаться с сервером. После этого происходит обмен данными между сервером и приложением.
Чтобы к серверу можно было одновременно подключиться нескольким приложениям, сервер делает копии сокетов.
Для чего нужны порты
Сетевые порты представляют собой 16-ти битное число от 1 до 65535, которое определяет назначение пакетов данных в пределах одного хоста. Они необходимы, чтобы осуществлять передачу информации определенного вида. Все хосты передают данные при помощи IP-адресов, когда происходит подключение к сети, порты определяют к какой программе относятся передаваемые файлы. Основные программы это:
- Web-сервер, для трансляции с веб-сайтов.
- Почтовый сервер, для обмена электронными письмами.
- FTP-сервер, для передачи информации.
Например, пользователь на своем ноутбуке открывает браузер и вбивает поисковый запрос, веб-сервер при этом автоматически отправляет данные по протоколу TCP/IP в порт 80.
При работе с почтовым клиентом Outlook используется два стандартизированных порта: порт 110 – для получения электронных сообщений и порт 25 – для отправки писем к адресату.
Важно знать, что порты обеспечивают доступ в интернет не только полезным программам, но и вирусам, которые могут открывать порты без согласия пользователя и считывать данные на его компьютере.
Что можно делать с портом
- Открыть. Чтобы знать куда направлять данные, которые пришли по адресу порта.
- Закрыть. Чтобы прекратить передачу данных.
- Пробросить. Если запрос пришел на порт 1020, отправить его на порт 2020.
- Просканировать. То есть проверить числа от 0 до 65535 на предмет ответа от кого-то из них. Если ответ найден, то это будет означать, что на этом порту работает какая-то программа. Это поможет найти уязвимости и вредоносные программы.
- Заблокировать. Например, для того, чтобы не допустить посторонних к открытому порту.
- Задать. Если для работы программы требуется порт, который у вас заблокирован, ей можно создать другой порт и проводить обмен данными через него.
Уровни протоколов TCP/IP
Одной из основных и первых моделей передачи данных была OSI (The Open Systems Interconnection model). В соответствии с ней происходит работа сетевых протоколов, так как она устанавливает основные требования и правила. Модель OSI состоит из семи уровней, каждый из них определяет нормы сотрудничества систем между собой:
- Прикладной уровень
- Сеансовый уровень
- Уровень представления
- Транспортный уровень
- Сетевой уровень
- Канальный уровень
- Физический уровень

Несколько протоколов, работающих по определенным уровням, называют стеком протоколов. Современный интернет работает на стеке протоколов TCP/IP. Различают следующие уровни стека TCP/IP:
Регулирует работу сетевых приложений, например, браузеры, программы для загрузки файлов по ftp , почтовые клиенты, SSH . Эти программы могут использовать свои протоколы обмена данными.
На прикладном уровне передача информации осуществляется путем передачи пакета с данными от одного сетевого узла к другому. Пересылка данных от хоста-отправителя к хосту-получателю осуществляется при помощи протокола IP, который сообщает адрес получателя и указывает номер порта. Благодаря IP сеть определяет откуда пришел пакет данных и куда его следуют отправить.
Комбинация IP-адреса и номера порта передачи данных называется сокетом. Определенные порты используют для упрощения стандартов, каждый порт соответствует функциональному назначению приложения (Например, почтовый SMTP-сервер использует 25 порт).
Работу этого уровня определяют протоколы TCP (Transmission Control Protocol) и UDP (User Datagram Protocol). Протокол TCP анализирует переданные пакеты информации и, в случае ошибки, повторно запрашивает пакеты. Также он следит за верной последовательностью переданных пакетов. UDP – протокол без установки соединения, он выполняет небольшую проверку и считается ненадежным. Отправка информации с помощью UDP выполняется быстрее по сравнению с TCP.
Передача данных начинается с установки соединения: хост-клиент отправляет фрагмент данных с номером последовательности и флагом SYN (служит для обозначения начала установки соединения). Сервер выделяет память для обработки задачи и назад отправляет фрагмент с номером последовательности и флагами SYN и ACK (служит для обозначения получения подтверждения).
Получив флаг SYN, хост-клиент отправляет сегмент с флагом ACK, в том случае, когда этот флаг узел уже получил, включается режим ESTABLISHED ( или активное соединение). Если, повторив свой запрос, хост не получает ответа, то через некоторое время включается режим CLOSED (или завершение сеанса связи):
- Хост-получатель шлет хосту-отправителю флаг FIN (конец передачи данных).
- Узел возвращает флаги ответа ACK, FIN о завершении связи.
- Хост-клиент устанавливает соединение, и шлет хосту сигнал о завершении сессии в виде флага ACK (получение подтверждения).
- Межсетевой или сетевой уровень TCP/IP
Так как глобальная сеть объединяет в себе множество локальных сетей, то сетевой уровень нужен для регламентирования передачи данных и взаимодействия локальных сетей.
Основные функции межсетевого уровня: доставка пакетов с информацией между сетями, выбор оптимального пути перемещения данных, согласование разных технологий передачи информации, фильтрация трафика, предотвращение перегрузок при передаче.
IP (Internet Protocol) – основной протокол межсетевого уровня. Он отвечает за перемещение пакетов между подсетями — от одного пограничного маршрутизатора до другого, пока данные не достигнут сети назначения.
При передаче информации от одного хоста к другому все данные делятся на пакеты, которые передаются по нужным каналам связи. Канальный уровень определяет физические свойства обмена информацией: максимальное расстояние передачи пакетов, частота сигнала, возможное время задержки ответа от хоста.
Чаще всего на этом уровне используют протокол Ethernet, он определяет проводные соединения и электросигналы на физическом уровне. Когда хост собирается передать пакет информации, он проверяет свободен ли канал в этот момент (по наличию несущей частоты в кабеле). Если частота не найдена, то начинается передача данных. Передача информации ограничивается по времени, она не может превышать, а также быть меньше заданной величины. Это необходимо для предотвращения единоличного использования сети одним компьютером и доступом к сети другим пользователям.
Зачем нужны уровни сетевой модели TCP/IP? Передача файлов между двумя хостами напрямую невозможна. Сначала пакеты данных попадают на сетевой уровень, чтобы получить IP-адрес. На транспортном уровне, с помощью протокола TCP, отдельные части данных передаются хосту. На каждом уровне к передаваемым файлов добавляется служебная информация: например, указание порта, чтобы распознать приложение. Кроме того, информацию могут добавлять протоколы Ethernet, IP, TCP и другие.
Такое наслоение правил и дополнительной информации называется стеком. Таким образом, стек – набор сетевых протоколов с иерархической структурой. Главная задача стека – достаточный набор правил, который обеспечивает взаимодействие устройств в интернете.
Чтобы все протоколы могли работать одновременно и не конфликтовали между собой, были выделены уровни стека протоколов TCP/IP. Каждый уровень решает свою определенную задачу, что снижает возникновение сбоев и незавершенных операций.
Заключение
Протокол интернета TCP/IP популярен своей возможностью реализовать широкий набор функций: совместное использование файлов, принтеров, удаленный доступ к системам и серверам. Стек TCP/IP – надежный набор протоколов, благодаря которым легко налаживаться работа приложений, а управление маршрутизацией удобно настраивается.