Давайте разобьем это на части. Во-первых, сеть основана на протоколе IP, который назначает адрес каждому сетевому узлу и позволяет отправлять небольшие объемы данных (обычно до 64 КБ, но обычно только 1500 КБ). ) от одного узла к другому.
Это само по себе еще ничего не стоит, потому что мы не можем проверить, что данные действительно поступили и что они поступили в правильном порядке. Если нам нужен абстрактный механизм для передачи произвольных объемов данных и обеспечения их доставки, нам нужен другой протокол поверх сети, который обрабатывает эту «передачу». И это цель TCP.
Однако параллельно с TCP существует еще один протокол «передачи», который вообще не выполняет никаких проверок и не отличается надежностью, — UDP. UDP — это просто тонкая оболочка необработанных IP-пакетов, которая добавляет немного метаданных (например, номер порта).
Однако UDP по-прежнему полезен, поскольку во многих ситуациях целостность данных уже передана протоколу еще более высокого уровня, поэтому нет необходимости в сложном протоколе передачи. Например, это используется в виртуальных сетевых службах, где другой экземпляр TCP/IP обычно запускается через канал UDP. (Использование в канале надежного протокола, такого как TCP, может иметь катастрофические последствия в этом случае из-за повторных каскадов отправки.)
Таким образом, термин «TCP-соединение» относится к применению TCP-протокола. Протокол естественно сохраняет состояние и обычно работает в последовательности SYN-ACK-data-FIN или SYN/RST в случае отклонения передачи; оба одноранговых узла поддерживают состояние соединения (рукопожатие, установлено, закрытие, закрыто). TCP также вводит термины «сервер» и «клиент», причем сервер является одноранговым узлом, который listen()
s для входящего соединения.
person
Kerrek SB
schedule
16.11.2011