Ответ 1
Позвольте разбить это на части. Первая из сети основана на IP-адресе, который является протоколом, который присваивает адрес каждой сети node, и который позволяет отправлять небольшие объемы данных (обычно до 64 КБ, но обычно только 1500B) от одного node к другому.
Это само по себе не стоит многого, потому что мы не можем делать какие-либо проверки, что данные действительно прибыли, и что он прибыл в правильном порядке. Если мы хотим, чтобы абстрактный механизм передавал произвольные объемы данных и обеспечивал их прибытие, нам нужен еще один протокол поверх сети, который обрабатывает эту "передачу". И что цель TCP.
Однако параллельно с TCP существует еще один "протокол передачи", который вообще не выполняет никаких проверок и не имеет надежности, UDP. UDP - это всего лишь тонкая оболочка вокруг необработанных IP-пакетов, которая добавляет немного метаданных (например, номер порта).
UDP по-прежнему полезен, так как существует много ситуаций, когда целостность данных уже передана еще более высокому протоколу, поэтому нет необходимости в сложном протоколе передачи. Это, например, используется в виртуальных сетевых службах, где другой экземпляр TCP/IP обычно запускается по каналу UDP. (Обеспечение канала использованием надежного протокола, такого как TCP, может фактически иметь катастрофические последствия в этом случае из-за повторных каскадов.)
Таким образом, термин "TCP-соединение" относится к приложению TCProtocol. Естественно, протокол является естественным, и обычно он выполняется в последовательности SYN-ACK-данных-FIN или SYN/RST в случае отклоненной передачи; оба партнера поддерживают статус соединения (рукопожатие, установлено, закрыто, закрыто). TCP также вводит термины "сервер" и "клиент", а сервер - это одноранговый узел listen()
для входящего соединения.