Из документации модели ns-3 TCP:
NotifyConnectionSucceeded: SetConnectCallback, 1-й аргумент
Вызывается в состоянии SYN_SENT перед переходом в состояние ESTABLISHED. Другими словами, мы отправили SYN и получили SYN-ACK: сокет подготавливает порядковые номера, отправляет ACK для SYN-ACK, пытается отправить больше данных (в другом сегменте), а затем вызывает этот обратный вызов. . После этого обратного вызова он вызывает обратный вызов NotifySend.
NotifyNewConnectionCreated: SetAcceptCallback, 2-й аргумент
Вызывается, когда из SYN_RCVD сокет переходит в состояние ESTABLISHED, а также после настройки контроля перегрузки, порядковых номеров и обработки входящего ACK. Если в буфере есть место, NotifySend вызывается вскоре после этого обратного вызова. Указатель сокета, переданный с помощью этого обратного вызова, является вновь созданным сокетом после функции Fork().
Итак, то, что говорит @Paul Sanders, по сути правильно: NotifyConnectionSucceeded
вызывается, когда TcpSocket, который инициировал соединение (т.е. отправил SYN), получает SYN + ACK. С другой стороны, NotifyNewConnectionCreated
вызывается, когда TcpSocket, отправивший SYN+ACK, получает ACK, завершающий трехэтапное рукопожатие. Посмотрите tcp-socket-base.cc
, чтобы увидеть, как именно используются эти методы.
Вышеприведенное относится к TCP, и, как вы правильно заметили, эти методы принадлежат Socket. Другие типы сокетов будут использовать эти методы по-другому. Например, UdpSockets используют NotifyConnectionSucceeded
, но не поддерживают NotifyNewConnectionCreated
.
person
Sagar
schedule
23.06.2020
NotifyConnectionSucceeded
для исходящих соединений, аNotifyNewConnectionCreated
для входящих. Но я могу ошибаться. - person Paul Sanders   schedule 02.05.2020