Я бы сравнил открытый порт с номером телефона.
Представьте, что вы можете иметь телефон для набора, но не номер телефона для приема звонков.
Если две стороны разговаривают друг с другом (или одна постоянно разговаривает), не имеет значения, кто на самом деле набирает номер. Важной частью является то, что хотя бы у одного из них есть номер телефона, тогда другой партнер просто звонит ему.
Если ни у одного из них нет телефонного номера, в некоторых системах используется суперузел, который может быть другом, который получает два вызова, по одному от каждого из них, и соединяет их вместе.
Это единственный способ говорить, если ни у одной из сторон нет номера телефона. Проблема заключается в том, что разговор ограничивается качеством телефонной линии этого друга-суперузла.
Я надеюсь, что эта аналогия облегчит понимание 3 возможных сценариев.