Един файл със снимки тръгва от телефон към компютър. Ако пътуваше като едно парче, всяка загуба щеше да означава да започне отначало, а всяка грешка — снимка с дефект. Затова файлът се реже на части, номерира се и всяка част се изпраща отделно. Получателят ги подрежда по номера, проверява дали са цели и иска повторение за липсващите. Никой не му е казал кой път да поеме; това решава мрежата по средата. Разделението на тези две задачи е една от най-успешните идеи в технологиите. Затова една снимка може да пристигне повредена само на едно място.
Първият протокол отговаря за адресите и маршрута. Той не обещава нищо: нито че пакетът ще пристигне, нито че ще е пръв, нито че няма да се дублира. Той само носи адрес на източника и на получателя и се препраща от рутер на рутер. Вторият протокол поема обещанието. Той номерира байтовете, иска потвърждение, повтаря изгубеното, подрежда пристигналото и регулира колко бързо да се изпраща, за да не се удави получателят. Единият е пощата, другият е разписката. Ето защо адресът може да е грешен, а пакетът да стигне — или обратното.
Разделението изглежда излишно, докато не се наложи да смениш едното. Ако мрежата е бърза и губи малко, можеш да ползваш по-лек пренос без потвърждения — така работят разговорите и видеото, където по-добре да загубиш кадър, отколкото да чакаш. Ако файлът е важен, ползваш надеждния. Едно и също адресиране обслужва и двата случая. Точно това е смисълът на слоевете: всеки решава своята задача и може да бъде заменен, без да се пренаписва останалото. Поради това протоколите остаряват бавно: смяната на един слой не изисква смяна на всички.