Что означает индикатор ESTABLISHED после запуска lsof
Я управлял командой sudo lsof -i -n -P | grep TCP
и мне было интересно, смогу ли я получить больше разъяснений по поводу его результатов.
В частности, на этом изображении:
Почему у меня есть IP:PORT, указывающий на другой IP:PORT, а затем обратно на себя с меткой "ESTABLISHED"? Я не совсем понимаю, что это значит.
2 ответа
Я не уверен, насколько вы знакомы с сетью и TCP в целом, поэтому я постараюсь дать краткое описание с несколькими деталями. Из вашего вопроса видно, что вы не очень знакомы с внутренними сетями, поэтому может быть трудно понять некоторые из этих концепций, но я надеюсь, что это поможет:
Протокол TCP имеет различные состояния. Думайте об этом как о государственной машине. Состояния на стороне клиента включают CLOSED
, SYN_SENT
, ESTABLISHED
, FIN_WAIT_1
, FIN_WAIT_2
а также TIME_WAIT
,
Таким образом ESTABLISHED
метка означает, что соединение TCP находится в ESTABLISHED
государство. Нахождение в установленном состоянии означает, что оба хоста успешно завершили трехстороннее рукопожатие TCP (и при этом перешли из SYN_SENT
в ESTABLISHED
). Переход от CLOSED
в SYN_SENT
происходит, когда клиентская сторона отправляет TCP SYN
запрос к серверу.
При установленном соединении обе стороны передают и принимают данные, специфичные для приложения. По существу, сеанс установлен, и двунаправленный поток байтов проходит между двумя конечными системами.
TCP-сокеты однозначно идентифицируются 4-мя кортежами (source-ip, source-port, destination-ip, destination-port)
, IP идентифицирует сетевой интерфейс конечной системы, а номер порта используется для мультиплексирования и демультиплексирования прибытия пакетов на этот сетевой интерфейс (чтобы целевая система знала, в какую службу доставлять пакеты). В этом смысл IP:PORT
поля.
Я не уверен, почему у вас есть две записи для одного подключения. Это может зависеть от системы, хотя это странно (в моей системе я получаю только одну запись на сокет). Но сокеты являются двунаправленными, поэтому может случиться так, что ваша система покажет вам каждое направление потока пакетов как отдельную запись. Это также может зависеть от того, как система реализует сокеты.
ESTABLISHED
означает, что соединение TCP завершило трехстороннее рукопожатие. (Не уверен, хотя accept
Должно быть, был назван). Смотрите схему состояний TCP.
Почему у меня есть IP:PORT, указывающий на другой IP:PORT, а затем обратно на себя
Это означает, что в вашем процессе открыто два сокета TCP. Скорее всего, один прослушивает порт 9092, а другой - порт 57633, подключенный к этому прослушивающему сокету. Порт 57633 принадлежит к эфемерному диапазону портов, то есть диапазонам портов, которые ОС автоматически назначает сокетам, которые вызывают connect
но не звонил bind
назначить определенный порт.