2.7. TCP, UDP и далее

Протокол IP позволяет направить пакет любой машине. Направили, а дальше? Дошел или нет? А если дошел, то не могла ли случайная помеха исказить его? А если второй пакет пришел раньше первого, например, при наличии двух путей, как быть? А если еще что-то случилось непредвиденное?

Можно было бы, конечно, в каждой прикладной программе проверять все возможные проблемы. Но в Internet пошли по другому пути. Прикладная программа не взаимодействует с программой, реализующей IP, непосредственно, а обращается к промежуточной программе. Таких промежуточных программ две: TCP и UDP. Они немного отличаются по свойствам, но суть их одна: на них возложено решение всех перечисленных вопросов. Каждая добавляет к данным прикладной программы немного своей собственной информации - для контроля, надежности и т.д., каждая контролирует прохождение пакета по сети, дожидаясь ответа от аналогичной программы на удаленном компьютере.

Иначе говоря, внутрь IP-конверта, вложенного в Ethernet-конверт, вложен третий, и только в нем - данные прикладной программы.

Сами прикладные программы тоже чаще всего используют стандартизованные методы обмена данными, и тоже добавляют свои заголовки. Это уже четвертый конверт.

Например, Вы, скорее всего, знаете про протокол HTTP. Прикладные программы, обычно WEB-браузеры, используют его для двухстороннего обмена файлами. Но в какой-то момент может оказаться, что очередной файл мы принимаем не по HTTP, а по FTP. Это уже другой протокол, но браузер его тоже понимает, и разницы для нас нет. А еще бывает так, что по сети надо передать конфиденциальную информацию, например, пароль. Тогда применяется близкий аналог HTTP, но с поддержкой шифрования - HTTPS. Самое главное, чтобы программы на обоих компьютерах понимали протокол.