Tcp протокол
Содержание:
- TCP vs self-made UDP. Final fighting
- Проблемы безопасности, связанные с совместным использованием портов
- Как открыть порты в Windows 10
- Использование NirSoft CurrPorts
- TCP[править]
- Как открыть порты на вашем роутере
- Как открыть порт в Windows 7 и Windows 8
- Когда пользователю нужно открыть порт в Windows 10?
- Самый большой порт в Европе
- Как открывать или перенаправлять TCP/UDP порты? Печать
- Заголовок TCP
- Как работает NFS
- TCP-соединение[править]
- Порты
- Сетевые протоколы UDP, TCP, ICMP
- TCP— Transmission Control Protocol
- Порт[править]
- Применение стороннего софта CurrPorts
- Краткое резюме
TCP vs self-made UDP. Final fighting
- Send/recv buffer: для своего протокола можно делать mutable buffer, с TCP будут проблемы с buffer bloat.
- Congestion control вы можете использовать существующие. У UDP они любые.
- Новый Congestion control трудно добавить в TCP, потому что нужно модифицировать acknowledgement, вы не можете это сделать на клиенте.
- Мультиплексирование — критичная проблема. Случается head-of-line blocking, при потере пакета вы не можете мультиплексировать в TCP. Поэтому HTTP2.0 по TCP не должен давать серьезного прироста.
- Случаи, когда вы можете получить установку соединения за 0-RTT в TCP крайне редки, порядка 5 %, и порядка 97 % для self-made UDP.
- IP Migration — не такая важная фича, но в случае сложных подписок и хранения состояния на сервере она однозначно нужна, но в TCP никак не реализована.
- Nat unbinding не в пользу UDP. В этом случае в UDP надо часто делать ping-pong пакеты.
- Packet pacing в UDP простой, пока нет оптимизации, в TCP эта опция не работает.
- MTU и исправление ошибок и там, и там примерно сравнимы.
- По скорости TCP, конечно, быстрее, чем UDP сейчас, если вы раздаете тонну трафика. Но зато какие-то оптимизации очень долго доставляются.
Выбираем UDP!
Проблемы безопасности, связанные с совместным использованием портов
Хотя служба совместного использования портов Net.TCP предусматривает уровень обработки между приложениями и сетью, приложения, совместно использующие порты, все равно необходимо защищать так, как если бы они непосредственно прослушивали сеть. В частности, в приложениях, совместно использующих порты, необходимо оценивать привилегии процессов, в которых они выполняются. Имеет смысл рассмотреть возможность выполнения приложения от имени встроенной учетной записи Network Service, которая выполняется с минимально необходимым для обмена данными по сети набором привилегий.
Как открыть порты в Windows 10
От компьютера в интернет и наоборот передается огромное количество информации. Это делается с помощью службы, при которой зависимые от сети процессы ищут свободные транспортные протоколы TCP и UDP, а уже через них обращаются в сеть.
То есть данные отправляются на удаленные порты в пункте назначения или на веб-ресурс, к которому идет попытка подключения, а затем обратно – на локальные. Они используются всеми приложениями для связи с интернетом.
Операционная система управляет портами и гарантирует, что трафик направляется через «правильные», чтобы эти процессы могли подключаться к тем, которым необходимо.
Использование NirSoft CurrPorts
Если вы не любите командную строку или предпочли бы использовать простую утилиту, чтобы сделать всё это за один шаг, мы рекомендуем отличный бесплатный CurrPorts. Загрузите инструмент. Только убедитесь, что вы получили правильную версию (обычная версия для 32-разрядной версии Windows, а версия x64 – для 64-разрядной Windows). Это портативное приложение, поэтому вам не нужно его устанавливать. Просто распакуйте папку загрузки и запустите исполняемый файл.
В окне CurrPorts отсортируйте по столбцу «Локальный порт», найдите порт, который вы исследуете, и вы можете увидеть всё: имя процесса, ID, порт, полный путь к процессу и т.д.
Чтобы сделать это ещё проще, дважды щелкните любой процесс, чтобы увидеть каждую деталь в одном окне.
Когда вы определите, какое приложение или служба связаны с порт, – Вы сможете решить, как его использовать. Если это приложение, то можно указать другой номер порта. Если это сервис или у вас нет возможности указать другой номер порта – вероятно, Вам придётся остановить службу или удалить приложение.
TCP[править]
TCP протокол базируется на IP для доставки пакетов, но добавляет две важные вещи:
- установление соединения — это позволяет ему, в отличие от IP, гарантировать доставку пакетов
- порты — для обмена пакетами между приложениями, а не просто узлами
Протокол TCP предназначен для обмена данными — это «надежный» протокол, потому что:
- Обеспечивает надежную доставку данных, так как предусматривает установления логического соединения;
- Нумерует пакеты и подтверждает их прием квитанцией, а в случае потери организует повторную передачу;
- Делит передаваемый поток байтов на части — сегменты — и передает их нижнему уровню, на приемной стороне снова собирает их в непрерывный поток байтов.
Как открыть порты на вашем роутере
Поскольку некоторые утилиты и игры работают только в том случае, если вы открываете определенный порт, вот шаги, которые необходимо выполнить, чтобы настроить переадресацию портов на вашем маршрутизаторе.
Самый первый шаг к открытию портов на маршрутизаторе – это присвоение устройству статического IP-адреса и запись вашего общедоступного IP-адреса.
Примечание. Статический или фиксированный IP-адрес – это IP-адрес, который настраивается вручную для определенного устройства вместо адреса, назначенного DHCP-сервером
Он известен как статический, потому что он не меняется по сравнению с динамическими адресами.
Определите, с каким IP-адресом работает ваше устройство.
Запустить Windows PowerShell.
Введите команду: и нажмите кнопку Enter.
Обратите внимание на следующее: IPv4-адрес, Маска подсети, Основной шлюз и DNS-серверы.
Используя вышеупомянутые данные, вы можете легко настроить статический IP-адрес.
На этом этапе запустите приложение «Выполнить» (Win + R), введите и нажмите кнопку Ввод, чтобы открыть «Сетевые подключения».
В следующем окне найдите и щелкните правой кнопкой мыши соединение, название которого совпадает с названием, отображаемым в PowerShell (например, Ethernet1)
Перейдите к его свойствам (через контекстное меню, вызываемое щелчком правой кнопки мыши), найдите и выделите IP версии 4 (TCP/IPv4) и нажмите кнопку Свойства.
Активируйте раздел «Использовать следующий IP-адрес».
На этом этапе вам нужно аккуратно вставить все детали, которые вы скопировали из окна PowerShell.
Нажмите кнопку ОК, чтобы сохранить изменения!
Весь процесс переадресации портов зависит от марки маршрутизатора, который вы используете. Но шаги включают определение IP-адреса вашего маршрутизатора.
Как узнать IP-адрес маршрутизатора?
В Windows:
Запустить командную строку или PowerShell.
Выполнить команду
Найдите запись Основной шлюз
Здесь вы можете найти IP-адрес вашего маршрутизатора.
На Mac:
Откройте Системные настройки.
Нажмите Сеть и перейдите в Расширенные.
Перейдите на вкладку TCP/IP и найдите Маршрутизатор. Здесь вы можете найти IP-адрес вашего маршрутизатора.
Перейдите к настройкам маршрутизатора.
Как только вы войдёте, просто найдите вкладку «Переадресация портов» и откройте нужный порт. Например: на странице «Переадресация портов» вам нужно ввести имя вашего устройства, а затем ввести порт, который необходимо переадресовать, в поле порта.
Теперь выберите вариант TCP/UDP или Оба в разделе «Протокол», если вы не уверены, какой протокол используете. На этом этапе введите внутренний IP-адрес устройства, на которое выполняется переадресация порта, и нажмите кнопку «Применить» или «Сохранить», чтобы применить изменения.
Надеюсь, вы легко сможете открыть порты на своём роутере. Если вы знаете какой-либо другой способ переадресации портов, пожалуйста, расскажите о нём в разделе комментариев ниже!
Как открыть порт в Windows 7 и Windows 8
О том, как открыть порт на роутерах различных моделей я написал уже немало статей. Но в х почти к каждой из таких инструкций я сталкиваюсь с такой ситуацией, что пользователь открывает порт на роутере, но при проверке его из-вне — оказывается что он закрыт.
В это многие упираются и не знают что делать дальше. Одной из частых причин является система безопасности компьютера. Дело тут в том, что открыть порт на роутере часто оказывается половиной дела — нужно ещё открыть его и в правилах брандмауэра (фаервола) на компьютере.
1 практически идентична, соответственно как и процедура создания правил проброса портов.
Как попасть в настройки брандмауэра Windows
Настройка встроенного брандмауэра находится в «Панели управления», раздел «Система и безопасность».
В Windows 8 и 8.1 можно воспользоваться элементом рабочего стола — Поиск. Нужно начать вводить слово «Брандмауэр» и система выдаст ссылку в результатах.
Ещё один быстрый и удобный способ быстро попасть в настройки Брандмауэра — нажать комбинацию клавиш Win+R:
В строке открыть пишем firewall.cpl, нажимаем кнопку ОК.
Как открыть порт в брандмауэре Windows
Вам откроется раздел настройки Брандмауэра в режиме повышенной безопасности. В поле слева кликаем на раздел «Правила для входящих соединений»:
Откроется список всех правил для входящих соединений. Теперь надо создать правило. Для этого справа, в окне «Действия», кликаем на ссылку «Создать правило».
Откроется Мастер создания правила для нового входящего подключения:
Выбираем тип правила — «Для порта». Нажимаем кнопку Далее.
Теперь нужно выбрать тип протокола и указать порт. «Тип протокола» для игр, как правило, «Протокол TCP». В некоторых случаях, например для файлообменных программ или игр, нужно ещё открыть и порт UDP.
Поэтому, если нужно открыть и TCP-порт и UDP-порт в Windows — Вам придется создавать два правила. В поле Определенные порты нужно указать номер нужного порта. Например, для Minecraft нужно открывать порт 25565 и TCP и UDP.
Нажимаем кнопку Далее.
Ставим галку «Разрешить подключение». Нажимаем кнопку Далее.
Здесь ничего не меняем. Нажимаем кнопку Далее.
В поле Имя прописываем название для создаваемого правила — например DC++ или Minecraft. Нажимаем кнопку Готово.
Правило создано и порт в брандмауэре Windows 7 и Windows 8 открыт. Проверить доступность порта из-вне можно с помощью программы PFPortChecker.
Только теперь не для порта — а «Для программы». Нажимаем кнопку Далее.
Выбираем пункт «Путь программы» и нажимаем кнопку Обзор. В открывшемся окне нужно выбрать программы, к которой нужен доступ из внешней сети — например, UTorrent, DC++ или Minecraft. Нажимаем кнопку Далее.
Ставим галочку «Разрешить подключение». Нажимаем кнопку Далее.
В этом окне ничего не меняя, нажимаем кнопку Далее.
В поле имя вводим название правила — например, dc++, utorrnet или minecraft и нажимаем кнопку Готово.
Правило для программы создано.
Если и это не помогло — можно попробовать для чистоты эксперимента вообще отключить встроенных в систему фаервол.
Как отключить Брандмауэр Windows 7, Windows 8 и Windows 8.1
Для того, чтобы отключить встроенный в систему фаервол нужно в настройках Брандмауэра выбрать пункт «Включение и отключение брандмауэра Windows»:
Вам откроется вот такое окно «Настройки параметров для каждого типа сети»:
Для всех типов сетей ставим галку «Отключить брандмауэр Windows». Нажимаем кнопку ОК. После этого брандмауэр станет неактивен и Ваша операционная система будет полностью открыта угрозам из внешней сети.
Поэтому я рекомендую отключать брандмауэр либо только кратковременно, для диагностики проблем с доступностью порта из-вне, либо если Вы переходите на другой, сторонний пакетный фильтр (фаервол).
Постоянная работа в сети Интернет с отключенным брандмауэром (фаерволом) крайне нежелательна.
Когда пользователю нужно открыть порт в Windows 10?
Порты представляют собой подобие коридоров между роутером и вашим ноутбуком или ПК. Они используются для передачи разных типов данных, имеют свои особенности. Если вы ищете, как открыть порт 11000 на Windows 10, то ваш компьютер не дает установить соединение в онлайн-игре. Существуют и другие порты, которые отвечают за разные типы передачи данных:
Как видите некоторые игры и сервисы используют собственные порты, что не всегда адекватно воспринимается операционной системой. По умолчанию любая версия Windows закрывает доступ к портам, чтобы обеспечить свою безопасность. Для этого используются стандартный брандмауэр и антивирусное программное обеспечение. Поэтому часто в инструкциях к сервисам могут встречаться рекомендации отключить защиту, но мы рекомендуем это не делать. Лучше всего самостоятельно решить проблему, как открыть порт 27015 на Windows 10 (номер порта может быть любой другой).
Как проверить доступность порта?
Часть программ оповещает пользователя о недоступности порта, но многие «клиенты» просто перестают работать. Провести проверку можно самостоятельно – вам нужно лишь знать номер используемого программой порта. Есть два способа:
Первый способ подойдет только в том случае, если вам не нужно открыть порт 80 и 443 на Windows 10. Так как если эти «туннели» не активны, вы не сможете перейти на нужный сайт. Командная строка работает даже при отсутствии возможности выхода в Интернет.
Самый большой порт в Европе
Порт Роттердам является крупнейшим по размеру портом в Европе и единственным «западным» портом в списке. В период с 1962 по 2004 год он был крупнейшим портом в мире по объему грузов, но благодаря высокой производственной мощности своих стран, азиатские порты давно обогнали европейские гавани. Тем не менее, у порта Роттердам еще остались козыри.
Image Credist to: Maritime Getaway
Интересные факты о порте Роттердам:
- В 2020 году порт обработал 14,8 миллионов тонн грузов.
- Невероятно, но финансовые результаты порта в 2020 году улучшились по сравнению с 2019 годом. Чистая прибыль составила 351,7 миллионов евро.
- В 2020 году порт Роттердам принял 28 170 морских и 92 552 речных судна.
- 43,7% всех грузов в порту составляют нефть, нефтепродукты и СПГ.
- Общая добавленная стоимость порта Роттердам (более 45,6 млрд евро) составляет 6,2% валового внутреннего продукта (ВВП) Нидерландов.
Как открывать или перенаправлять TCP/UDP порты? Печать
Изменено: Вт, 3 Июл, 2018 at 10:45 AM
Открытие или перенаправление порта необходимо в тех случаях, когда нужно получить доступ к локальным устройства или службам находящимися за роутером в локальной сети.
Возможные задачи могут выглядеть следующим образом:
1. Необходимо получить доступ к WEB интерфейсу самого роутера.
2. Необходимо перенаправить порт 8080 на WEB сервер расположенный на локальном ПК с IP 192.168.88.100
Все операции с открытием и перенаправлением портов производятся в Межсетевом экране
1. Открытие порта
1.1. Через WEB
Открываются порты для получения доступа к различным службам на самом роутере или контроллере.
Например откроем порт 80 для получения доступа к WEB-интерфейсу роутера.
Переходим в пункт Правила для трафика
Добавляем новое правило
Так выглядит новое созданное правило
Сохраняем добавленные правила
1.2. Через консоль
Необходимо отредактировать файл /etc/config/firewall
nano /etc/config/firewall
Добавляем правило и сохраняем файл:
config rule option enabled ‘1’ option target ‘ACCEPT’ option src ‘wan’ option proto ‘tcp udp’ option dest_port ‘1194’ option name ‘OpenVPN’
Перезапускаем межсетевой экран
/etc/init.d/firewall restart
2. Перенаправление порта
2.1. Через WEB
Перенаправление используется, чтобы перенаправить запросы с внешнего порта к другому или тому же порту в локальную сеть.
Например перенаправим запросы с внешнего порта 8080 к локальному ПК с IP 192.168.88.100 и его порту 80
Переходим в пункт Перенаправления портов
Добавляем новое правило:
Так выглядит новое правило
Сохраняем и применяем изменения
2.1. Через консоль
Необходимо отредактировать файл /etc/config/firewall
nano /etc/config/firewall
Добавляем правило и сохраняем файл:
config redirect option target ‘DNAT’ option src ‘wan’ option dest ‘lan’ option proto ‘tcp udp’ option src_dport ‘8080’ option dest_ip ‘192.168.88.100’ option dest_port ’80’ option name ‘8080 to 192.168.88.100:80’
Перезапускаем межсетевой экран
/etc/init.d/firewall restart
3. IPTABLES. Перенаправление порта из локальной сети к статическому IP и порту в интернете или VPN.
Бывают и такие ситуации, при которых Ваше оборудование имеет только Локальный IP адрес и маску подсети.
И не имеет настроек шлюза и DNS.
Также данному устройству можно задать цель, т.е. куда оно будет отправлять данные. Обычно это целевой IP адрес и порт(TCP или UDP).
Проблема заключается в том, что при подключении такого устройства к роутеру, данные, которые оно генерирует, не попадут дальше самого роутера. Т.е. они ограниченны рамками локальной сети.
Без шлюза устройство не «видит» интернет.
В данной ситуации нам поможет пользовательское перенаправление портов с использованием IPTABLES
Необходимо перейти в Межсетевой экран:
Перейти на вкладку Пользовательские правила:
И добавить правило перенаправления:
iptables -t nat -A PREROUTING -d 192.168.88.1 -p TCP —dport 9001 -j DNAT —to-destination 31.58.45.6:9001
Итоговый вид:
# This file is interpreted as shell script.# Put your custom iptables rules here, they will# be executed with each firewall (re-)start.# Internal uci firewall chains are flushed and recreated on reload, so# put custom rules into the root chains e.g. INPUT or FORWARD or into the# special user chains, e.g. input_wan_rule or postrouting_lan_rule.iptables -t nat -A PREROUTING -d 192.168.88.1 -p TCP —dport 9001 -j DNAT —to-destination 31.58.45.6:9001
После, нажимаем Применить:
Перезапустим межсетевой экран. Делаем это через консоль:
/etc/init.d/firewall restart
Проверяем наше перенаправление. Все должно работать.
Сопутствующие статьи:
Дополнительная информация:
Была ли эта статья полезной?
Да
Нет
Отправить отзыв К сожалению, мы не смогли помочь вам в разрешении проблемы. Ваш отзыв позволит нам улучшить эту статью.
Заголовок TCP
- Порядковый номер выполняет две задачи:
-
- Если установлен флаг SYN, то это начальное значение номера последовательности — ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер последовательности, равный ISN + 1.
- В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности.
- Номер подтверждения — если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения.
- Длина заголовка — задается словами по 32бита.
- Размер окна — количество байт, которые готов принять получатель без подтверждения.
- Контрольная сумма — включает псевдо заголовок, заголовок и данные.
- Указатель срочности — указывает последний байт срочных данных, на которые надо немедленно реагировать.
- URG — флаг срочности, включает поле «Указатель срочности», если =0 то поле игнорируется.
- ACK — флаг подтверждение, включает поле «Номер подтверждения, если =0 то поле игнорируется.
- PSH — флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе.
- RST — флаг прерывания соединения, используется для отказа в соединении
- SYN — флаг синхронизация порядковых номеров, используется при установлении соединения.
- FIN — флаг окончание передачи со стороны отправителя
Рассмотрим структуру заголовка TCP с помощью сетевого анализатора Wireshark:
TCP порты
Так как на одном и том же компьютере могут быть запущены несколько программ, то для доставки TCP-пакета конкретной программе, используется уникальный идентификатор каждой программы или номер порта.
Номер порта — это условное 16-битное число от 1 до 65535, указывающее, какой программе предназначается пакет.
TCP порты используют определенный порт программы для доставки данных, передаваемых с помощью протокола управления передачей (TCP). TCP порты являются более сложными и работают иначе, чем порты UDP. В то время как порт UDP работает как одиночная очередь сообщений и как точка входа для UDP-соединения, окончательной точкой входа для всех соединений TCP является уникальное соединение. Каждое соединение TCP однозначно идентифицируется двумя точками входа.
Каждый отдельный порт сервера TCP может предложить общий доступ к нескольким соединениям, потому что все TCP соединения идентифицируются двумя значениями: IP-адресом и TCP портом (сокет).
Все номера портов TCP, которые меньше чем 1024 — зарезервированы и зарегистрированы в Internet Assigned Numbers Authority (IANA).
Номера портов UDP и TCP не пересекаются.
TCP программы используют зарезервированные или хорошо известные номера портов, как показано на следующем рисунке.
Как работает NFS
На момент написания этой статьи поддерживаются три версии NFS. NFS v2 — самый старый и наиболее широко поддерживаемый.
NFS v3 новее, чем NFS V2, и предлагает больше функций, таких как обработка переменного размера, улучшенная отчетность об ошибках и т.д. Однако NFS v3 несовместима с клиентами NFS v2.
Самая последняя версия NFS v4 предоставляет новые и улучшенные функции. Они включают в себя операции с отслеживанием состояния, обратную совместимость с NFS v2 и NFS v3, удаленное требование portmapper, межплатформенное взаимодействие, улучшенную обработку пространства имен, встроенную безопасность с ACL и Kerberos.
Ниже приводится сравнение NFS v3 и NFS v 4.
Характерная черта | NFS v3 | NFS v4 |
Транспортный протокол | TCP и UDP | Только UDP |
Обработка разрешений | Unix | На базе Windows |
Метод аутентификации | Auth_Sys — слабее | Kerberos (сильный) |
Личность | Без гражданства | С сохранением состояния |
Семантика | Unix | Unix и Windows |
В таблице выше показаны некоторые особенности протокола NFS 4 по сравнению с протоколом NFS 3.
NFS v4 не использует portmapper, а службы, требуемые NFS V2 и V3, не требуются. Следовательно, в NFS v4 требуется только порт 2049.
Однако для NFS v2 и v2 требуются дополнительные порты и службы, которые мы собираемся обсудить в этом руководстве.
TCP-соединение[править]
Соединение двух узлов начинается с handshake (рукопожатия):
- Узел A посылает узлу B специальный пакет SYN — приглашение к соединению
- B отвечает пакетом SYN-ACK — согласием об установлении соединения
- A посылает пакет ACK — подтверждение, что согласие получено
После этого TCP-соединение считается установленным, и приложения, работающие в этих узлах, могут посылать друг другу пакеты с данными.
«Соединение» означает, что узлы помнят друг о друге, нумеруют все пакеты, идущие в обе стороны, посылают подтверждения о получении каждого пакета и перепосылают потерявшиеся по дороге пакеты.
Для узла A это соединение называется исходящим, а для узла B — входящим.
Отметим, что эти термины не имеют никакого отношения к входящему или исходящему трафику. Они показывают только инициатора соединения, то есть направление самого первого пакета (SYN).
Любое установленное TCP-соединение симметрично, и пакеты с данными по нему всегда идут в обе стороны.
Когда один из узлов решает, что пора заканчивать соединение, он посылает специальный пакет FIN, после этого узлы прощаются и разрывают соединение.
Порты
Приложения могут использовать сокеты дейтаграмм для установления связи между хостами. Приложение привязывает сокет к своей конечной точке передачи данных, которая представляет собой комбинацию IP-адреса и порта . Таким образом, UDP обеспечивает мультиплексирование приложений . Порт — это программная структура, которая идентифицируется номером порта , 16-битным целым числом, допускающим номера портов от 0 до 65535. Порт 0 зарезервирован, но является допустимым значением исходного порта, если отправляющий процесс не ожидает сообщений в отклик.
Управление по присвоению номеров в Интернете (IANA) разделило номера портов на три диапазона. Номера портов от 0 до 1023 используются для общих, хорошо известных служб. В Unix- подобных операционных системах для использования одного из этих портов требуется разрешение суперпользователя . Номера портов с 1024 по 49151 — это зарегистрированные порты, используемые для служб, зарегистрированных IANA. Порты с 49152 по 65535 являются динамическими портами, которые официально не предназначены для какой-либо конкретной службы и могут использоваться для любых целей. Они также могут использоваться как временные порты , которые программное обеспечение, работающее на хосте, может использовать для динамического создания конечных точек связи по мере необходимости.
Сетевые протоколы UDP, TCP, ICMP
В рамках протокола TCP/IP для передачи данных используются протоколы — TCP и UDP. Многие наверняка слышали, что есть порты как TCP, так и UDP, но не все знают в чем разница и что это вообще. И так..
Передача данных по протоколу TCP (Transmission Control Protocol — Протокол Управления Передачей) предусматривает наличие подтверждений получения информации. «-Ну, мол, — получил? -Получил!» Если же передающая сторона не получит в установленные сроки необходимого подтверждения, то данные будут переданы повторно. Поэтому протокол TCP относят к протоколам, предусматривающим соединение, а UDP (User Datagram Protocol — Протокол Пользовательских Датаграмм) — нет. UDP применяется в тех случаях, когда не требуется подтверждения приема (например, DNS-запросы или IP-телефония (яркий представитель которой, — Skype) ). То есть разница заключается в наличии подтверждения приема. Казалось бы «Всего то!», но на практике это играет важную роль.
Есть еще так же протокол ICMP (Internet Control Message Protocol — межсетевой протокол управляющих сообщений), который используется для передачи данных о параметрах сети. Он включает в себя служебные типы пакетов, таки как ping, distination unreachable, TTL и пр.
TCP— Transmission Control Protocol
Обмен данными, ориентированный на соединения, может использовать надежную связь, для обеспечения которой протокол уровня 4 посылает подтверждения о получении данных и запрашивает повторную передачу, если данные не получены или искажены. Протокол TCP использует именно такую надежную связь. TCP используется в таких прикладных протоколах, как HTTP, FTP, SMTP и Telnet.
Протокол TCP требует, чтобы перед отправкой сообщения было открыто соединение. Серверное приложение должно выполнить так называемое пассивное открытие (passive open), чтобы создать соединение с известным номером порта, и, вместо того чтобы отправлять вызов в сеть, сервер переходит в ожидание поступления входящих запросов. Клиентское приложение должно выполнить активное открытие (active open), отправив серверному приложению синхронизирующий порядковый номер (SYN), идентифицирующий соединение. Клиентское приложение может использовать динамический номер порта в качестве локального порта.
Сервер должен отправить клиенту подтверждение (ACK) вместе с порядковым номером (SYN) сервера. В свою очередь клиент отвечает АСК, и соединение устанавливается.
После этого может начаться процесс отправки и получения сообщений. При получении сообщения в ответ всегда отправляется сообщение АСК. Если до получения АСК отправителем истекает тайм-аут, сообщение помещается в очередь на повторную передачу.
Поля заголовка TCP перечислены в следующей таблице:
Поле | Длина | Описание |
---|---|---|
Порт источника | 2 байта | Номер порта источника |
Порт назначения | 2 байта | Номер порта назначения |
Последовательный номер | 4 байта | Последовательный номер генерируется источником и используется назначением, чтобы переупорядочить пакеты для создания исходного сообщения и отправить подтверждение источнику. |
Номер подтверждения | 4 байта | Если установлен бит АСК поля «Управление», в данном поле содержится следующий ожидаемый последовательный номер. |
Смещение данных | 4 бита | Информация о начале пакета данных. |
Резерв | 6 битов | Резервируются для будущего использования. |
Управление | 6 битов | Биты управления содержат флаги, указывающие, верны ли поля подтверждения (АСК), указателя срочности (URG), следует ли сбрасывать соединение (RST), послан ли синхронизирующий последовательный номер (SYN) и т. д. |
Размер окна | 2 байта | В этом поле указывается размер приемного буфера. Используя подтверждающие сообщения, получатель может информировать отправителя о максимальном размере данных, которые тот может отправить. |
Контрольная сумма | 2 байта | Контрольная сумма заголовка и данных; по ней определяется, был ли искажен пакет. |
Указатель срочности | 2 байта | В этом поле целевое устройство получает информацию о срочности данных. |
Опции | переменная | Необязательные значения, которые указываются при необходимости. |
Дополнение | переменная | В поле дополнения добавляется столько нулей, чтобы заголовок заканчивался на 32-битной границе. |
TCP — это сложный, требующий больших затрат времени протокол, что объясняется его механизмом установления соединения, но он берет на себя заботу о гарантированной доставке пакетов, избавляя нас от необходимости включать эту функциональную возможность в прикладной протокол.
Протокол TCP имеет встроенную возможность надежной доставки. Если сообщение не отправлено корректно, мы получим сообщение об ошибке. Протокол TCP определен в RFC 793.
Порт[править]
Сетевой порт — это сетевой ресурс, отображаемый в виде числа (1-65535), которое определяет назначение входящих или исходящих сетевых потоков данных на заданном устройстве.
Если прибегнуть к аналогии, IP адрес — это адрес общежития с вахтёром, а порт — номер комнаты в этом общежитии или фамилия ее жильца.
Согласно IP, в каждом пакете присутствуют IP-адрес узла-источника и IP-адрес узла-назначения. В TCP-пакетах дополнительно указываются порт источника и порт назначения.
Например, почтовое письмо (пакет данных) имеет информацию об отправителе (порт) и информацию о получателе (фамилия или номер комнаты по конкретному адресу).
Узел назначения («вахтер»), получив пакет («письмо»), смотрит на порт назначения («фамилию или номер комнаты») и передает пакет соответствующему у себя приложению («конкретному жильцу»).
Использование портов позволяет независимо использовать TCP протокол («почтовые услуги») сразу многим приложениям на одном и том же компьютере (общежитии).
Клиентом называют приложение, которое пользуется каким-то сервисом, предоставляемым другим приложением — Сервером, обычно на удаленном компьютере. Практически всегда клиент начинает исходящие соединения, а сервер ожидает входящих соединений (от клиентов), хотя бывают и исключения.
Сервер при запуске сообщает Операционной Системе, что хотел бы «занять» определенный порт (или несколько портов). После этого все пакеты, приходящие на компьютер к этому порту, ОС будет передавать этому серверу. Говорят, что сервер «слушает» этот порт.
Клиент, начиная соединение, запрашивает у своей ОС какой-нибудь незанятый порт во временное пользование, и указывает его в посланных пакетах как порт источника. Затем на этот порт он получит ответные пакеты от сервера.
Таким образом, сервер:
- слушает на определённом порту, заранее известном клиенту
- занимает этот порт всё время, пока не завершит работу
- об IP-адресе и номере порта клиента узнаёт из приглашения, посланного клиентом
Клиент:
- заранее знает IP-адрес и порт сервера
- выбирает у себя произвольный порт, который освобождает после окончания соединения
- посылает приглашение к соединению
Применение стороннего софта CurrPorts
В рассмотренных выше способах использовались лишь стандартные ресурсы Windows, однако, в Сети есть несколько программ для открытия портов на Windows. Первой на обзоре мы выбрали «CurrPorts» версии 2.51 от разработчика Nir Sofer. Она помогает узнать все свои активные порты на Windows и пригодится для их быстрого освобождения, удаляя ненужный или опасный процесс. Программа бесплатна и легка в освоении.
Для ее использования:
- Переходим на сайт разработчика https://www.nirsoft.net/utils/cports.html и скачиваем программу и русификатор на ПК. Русификатор распаковываем в папку с файлами ПО.
- Программа предлагает массу информации о процессе, включая занимаемый им порт.
На скриншоте мы видим, что антивирус Avast занимает два порта: 80 и 443. При желании мы можем закрыть данное соединение из контекстного меню или панели инструментов программы (но делать этого не советуем по понятным причинам). Закрывайте только те ненужные процессы, назначение которых вам известно.
Преимущества
- Бесплатная программа на русском языке.
- Не требует установки.
- Отображает все запущенные процессы и занимаемые ими порты в реальном времени.
- Предоставляет самую подробную информацию.
- Можно освобождать порты от одного или всех процессов.
- Классический понятный интерфейс.
Краткое резюме
Давайте кратко рассмотрим то, что мы только что рассмотрели.
Если вы используете NFS v4, все, что вам нужно, это разрешить порт 2049. Однако, если вы используете NFS v2 или v3, вам необходимо отредактировать файл / etc / sysconfig / nfs и добавить порты для следующих служб.
- Mountd — MOUNTD_PORT = порт
- Statd — STATD_PORT = порт
- LOCKD — LOCKD_TCPPORT = порт, LOCKD_UDPPORT = порт
Наконец, вам необходимо убедиться, что демон NFSD работает на порту 2049, а средство отображения портов — на порту 111.
Вы также можете проверить / var / log / messages, если служба NFS не запускается правильно. Убедитесь, что указанные вами порты не используются.