Перевод https://web.stanford.edu/class/msande91si/www-spr04/readings/week1/InternetWhitepaper.htm
Введение
Как работает Интернет? Хороший вопрос! Рост Интернета стал взрывоопасным, и кажется невозможным избежать бомбардировки www.com Его постоянно показывают по телевидению, слышат по радио и видят в журналах. Поскольку Интернет стал такой важной частью нашей жизни, для наиболее эффективного использования этого нового инструмента необходимо хорошее понимание.
Этот технический документ объясняет базовую инфраструктуру и технологии, которые обеспечивают работу Интернета. Она не вдается в большую глубину, но охватывает достаточно каждой области, чтобы дать общее представление о соответствующих концепциях. Для любых вопросов, оставшихся без ответа, список ресурсов приведен в конце статьи. Любые комментарии, предложения, вопросы и т.д. приветствуются и могут быть направлены автору по адресу rshuler@gobcg.com (прим. пер. или можете писать мне, переводчику на tiredfingers@yandex.ru иногда я его проверяю)
С чего начать? Интернет-адреса
Поскольку Интернет - это глобальная сеть компьютеров, каждый компьютер, подключенный к Интернету, должен иметь уникальный адрес. Интернет-адреса представлены в виде nnn.nnn.nnn.nnn, где nnn должно быть числом от 0 до 255. Этот адрес известен как IP-адрес. (IP расшифровывается как интернет-протокол; подробнее об этом позже.)
На рисунке ниже показаны два компьютера, подключенных к Интернету; ваш компьютер с IP-адресом 1.2.3.4 и другой компьютер с IP-адресом 5.6.7.8. Интернет представлен как абстрактный промежуточный объект. (По мере продвижения этой статьи интернет-часть диаграммы 1 будет объясняться и перерисовываться несколько раз по мере раскрытия деталей Интернета.)
Если вы подключаетесь к Интернету через интернет-провайдера (ISP), вам обычно присваивается временный IP-адрес на время сеанса удаленного доступа. Если вы подключаетесь к Интернету из локальной сети (LAN), у вашего компьютера может быть постоянный IP-адрес или он может получить временный от сервера DHCP (Dynamic Host Configuration Protocol). В любом случае, если вы подключены к Интернету, ваш компьютер имеет уникальный IP-адрес.
Проверьте - Программа Ping
Если вы используете Microsoft Windows или разновидность Unix и у вас есть подключение к Интернету, есть удобная программа, позволяющая проверить, работает ли компьютер в Интернете. Она называется "ping", вероятно, в честь звука, издаваемого старыми гидроакустическими системами подводных лодок. Если вы используете Windows, запустите окно командной строки. Если вы используете версию Unix, перейдите в командную строку. Введите ping www.yahoo.com . Программа ping отправит "ping" (фактически сообщение с эхо-запросом ICMP (Internet Control Message Protocol)) на указанный компьютер. Целевой компьютер пришлёт ответ. Программа ping будет отсчитывать истекшее время до тех пор, пока не придет ответ (если он придет). Кроме того, если вы введете доменное имя (т.е. www.yahoo.com ) вместо IP-адреса ping разрешит доменное имя и отобразит IP-адрес компьютера. Подробнее о доменных именах и разрешении адресов позже.
Стеки протоколов и пакеты
Итак, ваш компьютер подключен к Интернету и имеет уникальный адрес. Как он "разговаривает" с другими компьютерами, подключенными к Интернету? Примером может служить такой пример: допустим, ваш IP-адрес 1.2.3.4, и вы хотите отправить сообщение на компьютер 5.6.7.8. Сообщение, которое вы хотите отправить, звучит так: "Привет, компьютер 5.6.7.8!". Очевидно, что сообщение должно быть передано по любому проводу, соединяющему ваш компьютер с Интернетом. Допустим, вы набрали номер своего интернет-провайдера из дома, и сообщение должно быть передано по телефонной линии. Следовательно, сообщение должно быть переведено из буквенного текста в электронные сигналы, передано через Интернет, а затем переведено обратно в буквенный текст. Как это достигается? За счет использования стека протоколов. Каждому компьютеру нужен такой для связи в Интернете, и он обычно встроен в операционную систему компьютера (например, Windows, Unix и т.д.). Стек протоколов, используемый в Интернете, называется стеком протоколов TCP/IP из-за двух основных используемых протоколов связи. Стек TCP/IP выглядит следующим образом:
Прикладной уровень (Application Protocols Layer) - Протоколы приложений, такие как WWW, e-mail, FTP, etc.
Транспортный уровень (TCP Layer) - TCP направляет пакеты определенному приложению на компьютере, используя номер порта.
Сетевой уровень (IP Layer) - IP направляет пакеты на определенный компьютер, используя IP-адрес.
Канальный уровень (Hardware Layer) - Преобразует двоичные пакетные данные в сетевые сигналы и обратно (например, сетевая карта ethernet, модем для телефонных линий и т.д.)
Если бы мы проследили путь, по которому сообщение "Привет, компьютер 5.6.7.8!" перешло с нашего компьютера на компьютер с IP-адресом 5.6.7.8, произошло бы что-то вроде этого:
1. Сообщение будет начинаться в верхней части стека протоколов на вашем компьютере и продвигаться вниз.
2. Если отправляемое сообщение длинное, каждый уровень стека, через который проходит сообщение, может разбивать сообщение на более мелкие фрагменты данных. Это связано с тем, что данные, отправляемые через Интернет (и большинство компьютерных сетей), отправляются управляемыми порциями. В Интернете эти фрагменты данных известны как пакеты.
3. Пакеты будут проходить через прикладной уровень и переходить на уровень TCP. Каждому пакету присваивается номер порта. Порты будут объяснены позже, но достаточно сказать, что многие программы могут использовать стек TCP/IP и отправлять сообщения. Нам нужно знать, какая программа на конечном компьютере должна получить сообщение, потому что она будет прослушивать определенный порт.
4. После прохождения уровня TCP пакеты переходят на уровень IP. Именно здесь каждый пакет получает свой адрес назначения, 5.6.7.8.
5. Теперь, когда наши пакеты сообщений имеют номер порта и IP-адрес, они готовы к отправке через Интернет. Аппаратный уровень заботится о преобразовании наших пакетов, содержащих буквенный текст нашего сообщения, в электронные сигналы и передаче их по телефонной линии.
6. На другом конце телефонной линии ваш провайдер имеет прямое подключение к Интернету. Маршрутизатор интернет-провайдера проверяет адрес назначения в каждом пакете и определяет, куда его отправить. Часто следующей остановкой пакета является другой маршрутизатор. Подробнее о маршрутизаторах и интернет-инфраструктуре позже.
7. В конечном счете пакеты достигают компьютера 5.6.7.8. Здесь пакеты начинаются в нижней части стека TCP/IP конечного компьютера и продвигаются вверх.
8. По мере продвижения пакетов вверх по стеку все данные маршрутизации, добавленные в стек отправляющего компьютера (такие как IP-адрес и номер порта), удаляются из пакетов.
9. Когда данные достигают вершины стека, пакеты повторно собираются в их первоначальную форму: "Привет, компьютер 5.6.7.8!"
Сетевая инфраструктура
Итак, теперь вы знаете, как пакеты передаются с одного компьютера на другой через Интернет. Но что находится между ними? Из чего на самом деле состоит Интернет? Давайте посмотрим на другую диаграмму:
Здесь мы видим диаграмму 1, перерисованную более подробно. О физическом подключении через телефонную сеть к интернет-провайдеру, возможно, было легко догадаться, но помимо этого могло бы быть некоторое объяснение.
Интернет-провайдер поддерживает пул модемов для своих абонентов с коммутируемым доступом. Это управляется каким-либо компьютером (обычно выделенным), который управляет потоком данных из модемного пула на магистральный или выделенный линейный маршрутизатор. Эта установка может называться сервером портов, поскольку она "обслуживает" доступ к сети. Здесь также обычно собирается информация о выставлении счетов и общем использовании.
После того, как ваши пакеты проходят через телефонную сеть и локальное оборудование вашего интернет-провайдера, они направляются на магистраль интернет-провайдера или магистраль, у которой интернет-провайдер покупает полосу пропускания. Отсюда пакеты обычно проходят через несколько маршрутизаторов и по нескольким магистралям, выделенным линиям и другим сетям, пока не найдут своего адресата, компьютер с адресом 5.6.7.8. Но разве не было бы неплохо, если бы мы знали точный маршрут, по которому наши пакеты проходят через Интернет? Как оказалось, выход есть...
Проверьте - Программа Traceroute
Если вы используете Microsoft Windows или разновидность Unix и у вас есть подключение к Интернету, вот еще одна удобная интернет-программа. Она называется traceroute, и показывает путь, по которому ваши пакеты отправляются в заданный пункт назначения через Интернет. Как и ping, вы должны использовать traceroute из командной строки. В Windows используйте tracert www.yahoo.com . В командной строке Unix введите traceroute www.yahoo.com . Как и в случае с ping, вы также можете вводить IP-адреса вместо доменных имен. Traceroute распечатает список всех маршрутизаторов, компьютеров и любых других интернет-объектов, через которые должны пройти ваши пакеты, чтобы добраться до места назначения.
Если вы используете traceroute, вы заметите, что ваши пакеты должны пройти через множество объектов, чтобы добраться до места назначения. Большинство из них имеют длинные имена, такие как sjc2-core1-h2-0-0.atlas.digex.net и fddi0-0.br4.SJC.globalcenter.net . Это интернет-маршрутизаторы, которые решают, куда отправлять ваши пакеты. На диаграмме 3 показано несколько маршрутизаторов, но только несколько. Диаграмма 3 предназначена для того, чтобы показать простую структуру сети. Интернет гораздо сложнее.
Инфраструктура Интернета
Магистраль Интернета состоит из множества крупных сетей, которые соединяются друг с другом. Эти крупные сети известны как поставщики сетевых услуг или NSP. Некоторые из крупных NSP - это UUNet, CerfNet, IBM, BBNPlanet, SprintNet, PSINet, а также другие. Эти сети взаимодействуют друг с другом для обмена пакетным трафиком. Каждый NSP должен быть подключен к трем точкам доступа сети или NAP. В NAP пакетный трафик может перескакивать с магистрали одного NSP на магистраль другого NSP. NSP также соединяются между собой на Metropolitan Area Exchanges. MAEs служат той же цели, что и NAP, но находятся в частной собственности. NAP были первоначальными точками подключения к Интернету. Как NAPs, так и MAEs называются точками обмена данными в Интернете или Is. NSP также продают пропускную способность небольшим сетям, таким как интернет-провайдеры и небольшие поставщики пропускной способности. Ниже приведена картинка, показывающая эту иерархическую инфраструктуру.
Это не является истинным представлением реальной части Интернета. Диаграмма 4 предназначена только для демонстрации того, как NSP могут взаимодействовать друг с другом и более мелкими интернет-провайдерами. Ни один из физических сетевых компонентов не показан на диаграмме 4 так, как они показаны на диаграмме 3. Это связано с тем, что магистральная инфраструктура одного NSP сама по себе представляет собой сложный чертеж. Большинство NSP публикуют карты своей сетевой инфраструктуры на своих веб-сайтах, и их легко найти. Нарисовать реальную карту Интернета было бы практически невозможно из-за его размера, сложности и постоянно меняющейся структуры.
Иерархия маршрутизации в Интернете
Итак, как пакеты находят свой путь через Интернет? Знает ли каждый компьютер, подключенный к Интернету, где находятся другие компьютеры? Действительно ли пакеты просто "транслируются" на каждый компьютер в Интернете? Ответ на оба предыдущих вопроса - "нет". Ни один компьютер не знает, где находятся другие компьютеры, и пакеты отправляются не на каждый компьютер. Информация, используемая для доставки пакетов по назначению, содержится в таблицах маршрутизации, которые хранятся каждым маршрутизатором, подключенным к Интернету.
Маршрутизаторы - это коммутаторы пакетов. Маршрутизатор обычно подключается между сетями для маршрутизации пакетов между ними. Каждый маршрутизатор знает о своих подсетях и о том, какие IP-адреса они используют. Маршрутизатор обычно не знает, какие IP-адреса находятся "над" ним. Изучите диаграмму 5 ниже. Черные ящики, соединяющие магистрали, являются маршрутизаторами. Более крупные магистрали NSP в верхней части соединены с NAP. Под ними находится несколько подсетей, а под ними - еще больше подсетей. Внизу находятся две локальные сети с подключенными компьютерами.
Когда пакет поступает на маршрутизатор, маршрутизатор проверяет IP-адрес, указанный на уровне протокола IP на исходном компьютере. Маршрутизатор проверяет свою таблицу маршрутизации. Если сеть, содержащая IP-адрес, найдена, пакет отправляется в эту сеть. Если сеть, содержащая IP-адрес, не найдена, то маршрутизатор отправляет пакет по маршруту по умолчанию, обычно вверх по иерархии магистрали к следующему маршрутизатору. Надеясь, что следующий маршрутизатор будет знать, куда отправить пакет. Если этого не происходит, пакет снова направляется вверх, пока не достигнет магистрали NSP. Маршрутизаторы, подключенные к магистралям NSP, содержат самые большие таблицы маршрутизации, и здесь пакет будет перенаправлен в правильную магистраль, где он начнет свое путешествие "вниз" по все меньшим и меньшим сетям, пока не найдет пункт назначения.
Доменные имена и разрешение адресов
Но что, если вы не знаете IP-адрес компьютера, к которому хотите подключиться? Что делать, если вам нужно получить доступ к веб-серверу, называемому www.anothercomputer.com ? Как ваш веб-браузер узнает, где в Интернете находится этот компьютер? Ответом на все эти вопросы является Служба доменных имен или DNS. DNS - это распределенная база данных, которая отслеживает имена компьютеров и соответствующие им IP-адреса в Интернете.
На многих компьютерах, подключенных к Интернету, размещена часть базы данных DNS и программное обеспечение, которое позволяет другим получать к ней доступ. Эти компьютеры известны как DNS-серверы. Ни один DNS-сервер не содержит всю базу данных; они содержат только ее подмножество. Если DNS-сервер не содержит доменного имени, запрошенного другим компьютером, DNS-сервер перенаправляет запрашивающий компьютер на другой DNS-сервер.
Служба доменных имен структурирована как иерархия, аналогичная иерархии IP-маршрутизации. Компьютер, запрашивающий разрешение имени, будет перенаправлен "вверх" по иерархии до тех пор, пока не будет найден DNS-сервер, который может разрешить доменное имя в запросе. Рисунок 6 иллюстрирует часть иерархии. В верхней части дерева находятся корни домена. Некоторые из более старых и распространенных доменов видны вверху. Что не показано, так это множество DNS-серверов по всему миру, которые формируют остальную часть иерархии.
Когда настраивается подключение к Интернету (например, для локальной сети или коммутируемой сети в Windows), один основной и один или несколько дополнительных DNS-серверов обычно указываются как часть установки. Таким образом, любые интернет-приложения, которым требуется разрешение доменных имен, смогут функционировать правильно. Например, когда вы вводите веб-адрес в свой веб-браузер, браузер сначала подключается к вашему основному DNS-серверу. После получения IP-адреса для введенного вами доменного имени браузер затем подключается к целевому компьютеру и запрашивает нужную вам веб-страницу.
Проверьте - отключите DNS в Windows
Если вы используете Windows 95/NT и имеете доступ к Интернету, вы можете просмотреть свои DNS-серверы и даже отключить их.
Если вы используете коммутируемую сеть:
Откройте окно коммутируемой сети (которое можно найти в проводнике Windows под дисководом компакт-дисков и над сетевым окружением). Щелкните правой кнопкой мыши на вашем интернет-соединении и выберите пункт Свойства. В нижней части окна свойств подключения нажмите кнопку настройки TCP/IP... .
Если у вас есть постоянное подключение к Интернету:
Щелкните правой кнопкой мыши на сетевом окружении и выберите пункт Свойства. Щелкните Свойства TCP/IP. Выберите вкладку Конфигурация DNS вверху.
Теперь вы должны посмотреть на IP-адреса ваших DNS-серверов. Здесь вы можете отключить DNS или установить для своих DNS-серверов значение 0.0.0.0. (Сначала запишите IP-адреса ваших DNS-серверов. Вероятно, вам также придется перезапустить Windows.) Теперь введите адрес в свой веб-браузер. Браузер не сможет разрешить доменное имя, и вы, вероятно, получите неприятное диалоговое окно, объясняющее, что DNS-сервер не найден. Однако, если вы введете соответствующий IP-адрес вместо имени домена, браузер сможет получить нужную веб-страницу. (Используйте ping, чтобы получить IP-адрес перед отключением DNS.) Другие операционные системы Microsoft аналогичны.
Пересмотр интернет-протоколов
Как указывалось ранее в разделе о стеках протоколов, можно предположить, что в Интернете используется множество протоколов. Это правда; для функционирования Интернета требуется множество коммуникационных протоколов. К ним относятся протоколы TCP и IP, протоколы маршрутизации, протоколы контроля доступа к среде, протоколы прикладного уровня и т.д. В следующих разделах описываются некоторые из наиболее важных и часто используемых протоколов в Интернете. Сначала обсуждаются протоколы более высокого уровня, за которыми следуют протоколы более низкого уровня.
Прикладные протоколы: HTTP и Всемирная паутина
Одним из наиболее часто используемых сервисов в Интернете является Всемирная паутина (WWW). Протокол приложения, который обеспечивает работу Интернета, - это протокол передачи гипертекста или HTTP. Не путайте это с языком разметки гипертекста (HTML). HTML - это язык, используемый для написания веб-страниц. HTTP - это протокол, который веб-браузеры и веб-серверы используют для связи друг с другом через Интернет. Это протокол прикладного уровня, поскольку он находится поверх уровня TCP в стеке протоколов и используется конкретными приложениями для взаимодействия друг с другом. В данном случае приложениями являются веб-браузеры и веб-серверы.
HTTP - это текстовый протокол без установления соединения. Клиенты (веб-браузеры) отправляют запросы на веб-серверы для веб-элементов, таких как веб-страницы и изображения. После того, как запрос обслуживается сервером, соединение между клиентом и сервером через Интернет отключается. Для каждого запроса необходимо устанавливать новое соединение. Большинство протоколов ориентированы на подключение. Это означает, что два компьютера, взаимодействующие друг с другом, поддерживают соединение открытым через Интернет. Однако HTTP этого не делает. Прежде чем клиент сможет выполнить HTTP-запрос, необходимо установить новое соединение с сервером.
Когда вы вводите URL-адрес в веб-браузер, происходит вот что:
1. Если URL-адрес содержит доменное имя, браузер сначала подключается к серверу доменных имен и получает соответствующий IP-адрес для веб-сервера.
2. Веб-браузер подключается к веб-серверу и отправляет HTTP-запрос (через стек протоколов) на нужную веб-страницу.
3. Веб-сервер получает запрос и проверяет наличие нужной страницы. Если страница существует, веб-сервер отправляет ее. Если сервер не сможет найти запрошенную страницу, он отправит сообщение об ошибке HTTP 404. (404 означает "Страница не найдена", как, вероятно, знает любой, кто занимался серфингом в Интернете.)
4. Веб-браузер возвращает страницу обратно, и соединение закрывается.
5. Затем браузер анализирует страницу и ищет другие элементы страницы, необходимые для завершения веб-страницы. Обычно они включают изображения, апплеты и т.д.
6. Для каждого необходимого элемента браузер выполняет дополнительные подключения и HTTP-запросы к серверу для каждого элемента.
7. Когда браузер завершит загрузку всех изображений, апплетов и т.д. страница будет полностью загружена в окне браузера.
Проверьте - Используйте свой клиент Telnet для получения веб-страницы с использованием HTTP
Telnet - это служба удаленного терминала, используемая в Интернете. В последнее время его использование сократилось, но это очень полезный инструмент для изучения Интернета. В Windows найдите программу telnet по умолчанию. Он может быть расположен в каталоге Windows с именем telnet.exe . Когда откроется, откройте меню терминала и выберите Настройки. В окне настроек установите флажок Local Echo. (Это делается для того, чтобы вы могли видеть свой HTTP-запрос при его вводе.) Теперь откройте меню подключения и выберите пункт Удаленная система. Войти www.google.com для имени хоста и 80 для порта. (Веб-серверы обычно прослушивают порт 80 по умолчанию.) Нажмите кнопку Подключиться. Теперь введите
GET / HTTP/1.0
и дважды нажмите Enter. Это простой HTTP-запрос к веб-серверу для его корневой страницы. Вы должны увидеть, как промелькнет веб-страница, а затем должно появиться диалоговое окно, сообщающее вам, что соединение было потеряно. Если вы хотите сохранить полученную страницу, включите вход в программу Telnet. Затем вы можете просмотреть веб-страницу и увидеть HTML, который был использован для ее написания.
Большинство интернет-протоколов определяются интернет-документами, известными как Request For Comments или RFC. RFC можно найти в нескольких местах в Интернете. Смотрите раздел ресурсов ниже для получения соответствующих URL-адресов. HTTP версии 1.0 указан в RFC 1945.
Прикладные протоколы: SMTP и электронная почта
Другой часто используемой интернет-услугой является электронная почта. Электронная почта использует протокол прикладного уровня, называемый Simple Mail Transfer Protocol или SMTP. SMTP также является протоколом на основе текста, но в отличие от HTTP, SMTP ориентирован на подключение. SMTP также более сложен, чем HTTP. В SMTP гораздо больше команд и установок, чем в HTTP.
Когда вы открываете свой почтовый клиент, чтобы прочитать свое электронное письмо, обычно происходит вот что:
- Почтовый клиент (Netscape Mail, Lotus Notes, Microsoft Outlook и т.д.) открывает соединение с почтовым сервером по умолчанию. IP-адрес почтового сервера или доменное имя обычно настраиваются при установке почтового клиента.
- В своём первом сообщении почтовый сервер всегда отправляет информацию которая его идентифицирует.
- Клиент отправит команду SMTP HELO, на которую сервер ответит сообщением 250 OK.
- В зависимости от того, проверяет ли клиент почту, отправляет ли почту и т.д. соответствующие SMTP-команды будут отправлены на сервер, который ответит соответствующим образом.
- Эта транзакция запроса/ответа будет продолжаться до тех пор, пока клиент не отправит команду SMTP QUIT. Затем сервер попрощается, и соединение будет закрыто.
Простой "диалог" между SMTP-клиентом и SMTP-сервером показан ниже. R: обозначает сообщения, отправленные сервером (получателем), и S: обозначает сообщения, отправленные клиентом (отправителем).
В этом примере SMTP показана почта, отправленная Смитом на хост USC-ISIF Джонсу, Грину и Брауну на хост BBN-UNIX. Здесь мы предполагаем, что хост USC-ISIF напрямую связывается с хостом BBN-UNIX. Почта принимается для Джонса и Брауна. У Грина нет почтового ящика на хосте BBN-UNIX.
-------------------------------------------------------------
R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
S: HELO USC-ISIF.ARPA
R: 250 BBN-UNIX.ARPA
S: MAIL FROM:<Smith@USC-ISIF.ARPA>
R: 250 OK
S: RCPT TO:<Jones@BBN-UNIX.ARPA>
R: 250 OK
S: RCPT TO:<Green@BBN-UNIX.ARPA>
R: 550 No such user here
S: RCPT TO:<Brown@BBN-UNIX.ARPA>
R: 250 OK
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK
S: QUIT
R: 221 BBN-UNIX.ARPA Service closing transmission channel
Эта SMTP-транзакция взята из RFC 821, который специфицирует SMTP.
Transmission Control Protocol
Под прикладным уровнем в стеке протоколов находится уровень TCP. Когда приложения открывают соединение с другим компьютером в Интернете, сообщения, которые они отправляют (используя определенный протокол прикладного уровня), передаются вниз по стеку на уровень TCP. TCP отвечает за маршрутизацию прикладных протоколов к правильному приложению на конечном компьютере. Для достижения этой цели используются номера портов. Порты можно рассматривать как отдельные каналы на каждом компьютере. Например, вы можете просматривать веб-страницы во время чтения электронной почты. Это связано с тем, что эти два приложения (веб-браузер и почтовый клиент) использовали разные номера портов. Когда пакет поступает на компьютер и проходит свой путь вверх по стеку протоколов, уровень TCP решает, какое приложение получит пакет, основываясь на номере порта.
TCP работает следующим образом:
- Когда уровень TCP получает данные протокола прикладного уровня сверху, он сегментирует их на управляемые "блоки", а затем добавляет заголовок TCP с конкретной информацией TCP к каждому "блоку". Информация, содержащаяся в заголовке TCP, включает номер порта приложения, в которое необходимо отправить данные.
- Когда уровень TCP получает пакет от уровня IP ниже него, уровень TCP удаляет данные заголовка TCP из пакета, при необходимости выполняет некоторую реконструкцию данных, а затем отправляет данные в правильное приложение, используя номер порта, взятый из заголовка TCP.
Именно так TCP направляет данные, перемещающиеся по стеку протоколов, в нужное приложение.
TCP - это не текстовый протокол. TCP - это ориентированный на соединение (connection-oriented), надежный сервис потока байтов. Ориентированный на подключение что означает, что два приложения, использующие TCP, должны сначала установить соединение перед обменом данными. Протокол TCP надежен, поскольку для каждого полученного пакета отправителю отправляется подтверждение доставки. TCP также включает контрольную сумму в свой заголовок для проверки полученных данных на наличие ошибок. Заголовок TCP выглядит следующим образом:
Обратите внимание, что в заголовке TCP нет места для IP-адреса. Это происходит потому, что TCP ничего не знает об IP-адресах. Задача TCP заключается в надежной передаче данных прикладного уровня от приложения к приложению. Задача передачи данных с компьютера на компьютер - это задача IP.
Проверьте - Хорошо известные номера Интернет-Портов
Ниже перечислены номера портов для некоторых наиболее часто используемых интернет-сервисов.
FTP - 20/21
Telnet - 23
SMTP - 25
HTTP - 80
Quake III Arena - 27960
Internet Protocol
В отличие от TCP, IP - это ненадежный протокол без установления соединения. IP не заботится о том, попадет пакет в пункт назначения или нет. IP также не знает о соединениях и номерах портов. Задача IP заключается в отправке и маршрутизации пакетов на другие компьютеры. IP-пакеты являются независимыми объектами и могут поступать не по порядку или вообще не поступать. Задача TCP - убедиться, что пакеты поступают и находятся в правильном порядке. Пожалуй, единственное, что IP имеет общего с TCP, - это способ, которым он получает данные и добавляет свою собственную информацию IP-заголовка к данным TCP. Заголовок IP выглядит следующим образом:
Выше мы видим IP-адреса отправляющего и принимающего компьютеров в заголовке IP. Ниже показано, как выглядит пакет после прохождения через прикладной уровень, TCP-уровень и IP-уровень. Данные прикладного уровня сегментируются на уровне TCP, добавляется заголовок TCP, пакет продолжается на уровне IP, добавляется заголовок IP, а затем пакет передается через Интернет.
Закругляемся
Теперь вы знаете, как работает Интернет. Но как долго это будет продолжаться таким образом? Версия IP, используемая в настоящее время в Интернете (версия 4), допускает только 2 в 32-й степени адреса. В конце концов, свободных IP-адресов не останется. Удивлен? Не волнуйся. IP версии 6 тестируется прямо сейчас на исследовательской магистрали консорциумом исследовательских институтов и корпораций. И что после этого? Кто знает. Интернет прошел долгий путь с момента своего создания в качестве исследовательского проекта Министерства обороны. Никто на самом деле не знает, во что превратится Интернет. Однако одно можно сказать наверняка. Интернет объединит мир так, как никогда не объединял ни один другой механизм. Информационная эпоха идет полным ходом, и я рад быть ее частью.
Rus Shuler, 1998
Updates made 2002
Источники
Ниже приведены некоторые интересные ссылки, связанные с некоторыми обсуждаемыми темами. (Я надеюсь, что все они все еще работают. Все откроется в новом окне.)
http://www.ietf.org/ is the home page of the Internet Engineering Task Force. This body is greatly responsible for the development of Internet protocols and the like.
http://www.internic.org/ is the organization responsible for administering domain names.
http://www.nexor.com/public/rfc/index/rfc.html is an excellent RFC search engine useful for finding any RFC.
http://www.internetweather.com/ shows animated maps of Internet latency.
http://routes.clubnet.net/iw/ is Internet Weather from ClubNET. This page shows packet loss for various carriers.
http://navigators.com/isp.html is Russ Haynal's ISP Page. This is a great site with links to most NSPs and their backbone infrastructure maps.
Библиография
Следующие книги являются отличными источниками и очень помогли в написании этой статьи. Я считаю, что книга Стивенса является лучшим справочником по TCP/IP из когда-либо существовавших и может считаться библией Интернета. Книга Шелдона охватывает гораздо более широкий круг вопросов и содержит огромное количество сетевой информации.
- TCP/IP Illustrated, Volume 1, The Protocols.
W. Richard Stevens.
Addison-Wesley, Reading, Massachusetts. 1994. - Encyclopedia of Networking.
Tom Sheldon.
Osbourne McGraw-Hill, New York. 1998.
Хотя они и не использовались при написании этой статьи, вот несколько других хороших книг по темам Интернета и сетевого взаимодействия:
- Firewalls and Internet Security; Repelling the Wiley Hacker.
William R. Cheswick, Steven M. Bellovin.
Addison-Wesley, Reading, Massachusetts. 1994. - Data Communications, Computer Networks and Open Systems. Fourth Edition.
Fred Halsall.
Addison-Wesley, Harlow, England. 1996. - Telecommunications: Protocols and Design.
John D. Spragins with Joseph L. Hammond and Krzysztof Pawlikowski.
Addison-Wesley, Reading, Massachusetts. 1992.