Как мне интерпретировать вывод 'netstat -a' - PullRequest
22 голосов
/ 21 августа 2008

Некоторые вещи кажутся мне странными:

  • В чем разница между 0.0.0.0, 127.0.0.1 и [::]?
  • Как следует читать каждую часть внешнего адреса (часть1: часть2)?
  • Что означает состояние Time_Wait, Close_Wait?
  • и т.д.

Может ли кто-нибудь дать краткий обзор того, как интерпретировать эти результаты?

Ответы [ 7 ]

17 голосов
/ 21 августа 2008

0.0.0.0 обычно относится к прослушиванию материала на всех интерфейсах. 127.0.0.1 = localhost (только ваш локальный интерфейс) Я не уверен насчет [::]

TIME_WAIT означает, что обе стороны согласились закрыть и TCP теперь нужно подождать указанное время, прежде чем принимать соединение вниз.

CLOSE_WAIT означает, что удаленная система завершила отправку и ваша система еще не сказала, что она закончена.

12 голосов
/ 25 января 2013

Я понимаю, что ответ принят, но вот дополнительная информация:

  • Если в столбце «Локальный адрес» указано «1004», это означает, что порт прослушивает все «сетевые интерфейсы» (т. Е. Ваш компьютер, модем и сетевую карту (ы)).
  • Если в столбце «Локальный адрес» указано «1007», это означает, что порт ТОЛЬКО прослушивает соединения с самого компьютера, а не с Интернета или сети. Там нет никакой опасности.
  • Если он отображает ваш online IP в столбце Локальный адрес, это означает, что порт ТОЛЬКО прослушивает соединения из Интернета.
  • Если он отображает ваш local network IP в столбце «Локальный адрес», это означает, что порт ТОЛЬКО прослушивает соединения из локальной сети.
  • Внешний адрес - IP-адрес и номер порта удаленного компьютера, к которому подключен сокет. Имена, соответствующие IP-адресу и порту, отображаются, если не указан параметр -n. Если порт еще не установлен, номер порта отображается в виде звездочки (*). (из википедии)
7 голосов
/ 28 августа 2008

В чем разница между 0.0.0.0, 127.0.0.1 и [::]?

  • 0.0.0.0 указывает на то, что прослушивается на всех интерфейсах на машине.
  • 127.0.0.1 обозначает ваш собственный компьютер.
  • [::] - это версия IPv6 0.0.0.0
  • Моя машина также показывает *: \ * для UDP, который показывает, что UDP-соединения на самом деле не имеют внешнего адреса - они получают пакеты откуда угодно. Такова природа UDP.

Как следует читать каждую часть внешнего адреса (часть1: часть2)?

part1 - это имя хоста или IP-адрес part2 - это порт
7 голосов
/ 21 августа 2008

127.0.0.1 - ваш адрес обратной связи, также известный как «localhost», если он установлен в файле HOSTS. Смотрите здесь для получения дополнительной информации: http://en.wikipedia.org/wiki/Localhost

0.0.0.0 означает, что приложение привязано ко всем IP-адресам, используя определенный порт. MS информация здесь: http://support.microsoft.com/default.aspx?scid=kb;en-us;175952

'::' - сокращение от ipv6 для ipv4 0.0.0.0.

2 голосов
/ 12 февраля 2010

Эта ссылка очень помогла мне интерпретировать netstat -a

Копия оттуда -

TCP Connection States
Ниже приводится краткое объяснение этого рукопожатия. В этом контексте «клиент» - это узел, запрашивающий соединение, а «сервер» - это узел, принимающий соединение. Обратите внимание, что эта нотация не отражает отношения клиент / сервер как принципала архитектуры.

Установление соединения

Клиент отправляет на сервер сообщение SYN, содержащее порт сервера и начальный порядковый номер (ISN) клиента (активное открытие).
Сервер отправляет обратно свой собственный SYN и ACK (который состоит из ISN + 1 клиента).
Клиент отправляет ACK (который состоит из ISN + 1 сервера).

Разрыв соединения (модифицированное трехстороннее рукопожатие).

Клиент отправляет FIN (активное закрытие). Теперь это полузакрытое соединение. Клиент больше не отправляет данные, но все еще может получать данные с сервера. После получения этого FIN сервер переходит в состояние пассивного закрытия.
Сервер отправляет ACK (который является последовательностью FIN клиента + 1)
Сервер отправляет свой собственный FIN.
Клиент отправляет ACK (который является последовательностью FIN сервера + 1). После получения этого ACK сервер закрывает соединение.
Полузакрытое соединение может использоваться для прекращения отправки данных во время приема данных. Сокет-приложения могут вызвать завершение работы со вторым аргументом, установленным в 1, чтобы войти в это состояние.

Объяснение состояний, как показано в Netstat:
Состояние Объяснение


SYN_SEND Указывает на активное открытие.

SYN_RECEIVED Сервер только что получил SYN от клиента.

ESTABLISHED Клиент получил SYN сервера и сеанс установлен.

LISTEN Сервер готов к приему соединения.

ПРИМЕЧАНИЕ. См. Документацию по вызову сокета listen (). TCP-сокеты в состоянии прослушивания не отображаются - это ограничение NETSTAT. Дополнительные сведения см. В следующей статье базы знаний Майкрософт: 134404 NETSTAT.EXE не показывает сокеты прослушивания TCP FIN_WAIT_1 Указывает на активное закрытие.

TIMED_WAIT Клиент переходит в это состояние после активного закрытия.

CLOSE_WAIT Указывает на пассивное закрытие. Сервер только что получил первый FIN от клиента.

FIN_WAIT_2 Клиент только что получил подтверждение своего первого FIN с сервера.

LAST_ACK Сервер находится в этом состоянии, когда он отправляет свой собственный FIN.

CLOSED Сервер получил ACK от клиента, и соединение закрыто.

2 голосов
/ 28 августа 2008

Send-Q - это объем данных, отправленных приложением, но еще не подтвержденных другой стороной сокета.

Recv-Q - это объем данных, полученных от NIC, но еще не использованных приложением.

Обе эти очереди находятся в памяти ядра. Есть руководств , которые помогут вам настроить эти буферы ядра, если вы так склонны. Хотя, вы можете найти, что параметры по умолчанию работают довольно хорошо.

0 голосов
/ 28 августа 2008

Для тех, кто видит [::] в их выводе netstat, держу пари, что ваша машина работает под управлением IPv6; это было бы эквивалентно 0.0.0.0, то есть прослушиванию любого IPv6-адреса.

...