На транспортном уровне имеются два протокола: UDP и TCP. Оба они работают поверх IP. Это значит, что когда пакет TCP или UDP опускается на уровень ниже для отправки в сеть, он попадает на уровень сети прямо к протоколу IP. Здесь пакету добавляется сетевой адрес, TTL и другие атрибуты протокола IP. После этого пакет идет дальше вниз для физической отправки в сеть. Пустой пакет TCP не может быть отправлен в сеть, потому что он не имеет информации о получателе, эта информация добавляется к пакету с IP-заголовком на уровне сети.
Протокол UDP, как и IP, для передачи данных не устанавливает соединения с сервером. Данные просто выбрасываются в сеть, и протокол даже не заботится о доставке пакета. Если данные на пути к серверу испортятся или вообще не дойдут, то отправляющая сторона об этом не узнает. Так что по этому протоколу, как и по пустому IP, не желательно передавать очень важные данные.
Благодаря тому, что протокол UDP не устанавливает соединения, он работает очень быстро (в несколько раз быстрее TCP). Из-за высокой скорости его очень удобно использовать там, где данные нужно передавать быстро и не нужно заботиться об их целостности. Примером могут служить радиостанции в Интернете. Звуковые данные просто впрыскиваются в глобальную сеть, и если слушатель не получит одного пакета, то максимум, что он заметит – небольшое заикание в месте потери. Но если учесть, что сетевые пакеты имеют небольшой размер, то заикание будет очень сложно заметить. Большая скорость – большие проблемы с безопасностью. Так как нет соединения между сервером и клиентом, то нет никакой гарантии в достоверности данных. Протокол UDP больше других подвержен спуфингу (spoofing, подмена адреса отправителя), поэтому построение на нем защищенных сетей затруднено.
|
|
Итак, UDP очень быстр, но его можно использовать только там, где данные не имеют высокой ценности (возможна потеря отдельных пакетов) и не имеют секретности (UDP больше подвержен взлому).
Протокол TCP лежит на одном уровне с UDP и работает поверх IP (для отправки данных используется IP). Именно поэтому протоколы TCP и IP часто объединяют одним названием TCP/IP, так как TCP неразрывно связан с IP. В отличие от UDP протокол TCP устраняет недостатки своего транспорта (IP). В этом протоколе заложены средства установления связи между приемником и передатчиком, обеспечение целостности данных и гарантии их доставки.
Когда данные отправляются в сеть по TCP, то на отправляющей стороне включается таймер. Если в течение определенного времени приемник не подтвердит получение данных, то будет предпринята еще одна попытка отправки данных. Если приемник получит испорченные данные, то он сообщит об этом источнику и попросит снова отправить испорченные пакеты. Благодаря этому обеспечивается гарантированная доставка данных.
|
|
Когда нужно отправить сразу большую порцию данных, не вмещающихся в один пакет, то они разбиваются на несколько TCP-пакетов. Пакеты отправляются порциями по несколько штук (зависит от настроек стека). Когда сервер получает порцию пакетов, то он восстанавливает их очередность и собирает данные вместе (даже если пакеты прибыли не в том порядке, в котором они отправлялись).
Из-за лишних накладных расходов на установку соединения, подтверждения доставки и повторную пересылку испорченных данных протокол TCP намного медленней UDP. Зато TCP можно использовать там, где нужна гарантия доставки и большая надежность. Хотя надежность нельзя назвать сильной (нет шифрования и есть возможность взлома), но она достаточная и намного больше, чем у UDP. По крайней мере, тут спуфинг не может быть реализован так просто, как в случае с UDP.