100
двумя компьютерами. Он обеспечивает деление данных, передающихся от одного приложения к другому, на пакеты подходящего для сетевого уровня размера, подтверждение принятых пакетов, установку тайм-аутов, в течение которых должно прийти подтверждение на пакет, и так далее. Так как надежность передачи данных гарантируется на транспортном уровне, на прикладном уровне эти детали игнорируются. UDP предоставляет более простой сервис для прикладного уровня. Он просто отсылает пакеты, которые называются дейтаграммами (datagram) от одного компьютера к другому. При этом нет никакой гарантии, что датаграмма дойдет до пункта назначения. За надежность передачи данных, при использовании датаграмм отвечает прикладной уровень. Для каждого транспортного протокола существуют различные приложения, которые их используют.
4. Прикладной уровень (application layer) определяет детали каждого конкретного приложения. Существует несколько распространенных приложений TCP/IP, которые присутствуют практически в каждой реализации:
Telnet — удаленный терминал.
FTP, File Transfer Protocol — протокол передачи файлов.
SMTP, Simple Mail Transfer Protocol — простой протокол передачи электронной почты.
SNMP, Simple Network Management Protocol — простой протокол управления сетью.
6.1 Архитектура TCP/IP
На рис. 6.1 приведена схема взаимодействия двух сетевых приложений (FTP клиента с FTP сервером), расположенных в локальной сети на базе Ethernet. Сервер предоставляет некоторые типы сервиса клиентам. В данном случае это доступ к файлам на сервере.
С правой стороны на рис. 6.1 показано, что прикладной уровень обеспечивается пользовательским процессом, тогда как три нижних уровня обычно встроены в ядро операционной системы или реализованы аппаратно. Прикладной уровень обычно является приложением и взаимодействует с пользователем, а не занимается передачей данных по сети. Три нижних уровня ничего не
101
знают о работающих над ними приложениях, однако отвечают за все детали коммуникаций.
|
|
|
Application layer |
|
|
|
|
|
FTP |
Протокол FTP |
FTP |
процесс |
|||||
клиент |
сервер |
пользователя |
||||||
|
||||||||
|
|
|
Transport layer |
|
|
|
|
|
|
|
|
|
|
|
|
||
TCP |
Протокол TCP |
TCP |
|
|||||
|
|
|
|
|
|
|
ядро |
|
|
|
|
|
|
|
|
||
|
|
|
Network layer |
|
|
|
ОС |
|
|
|
|
|
|
|
|
||
|
IP |
Протокол IP |
IP |
|
||||
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
Link layer |
|
|
|
|
|
Ethernet |
Протокол Ethernet |
Ethernet |
Hardware |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
twisted pair / coaxial / fiber optic
Рис. 6.1 — Два хоста в локальной сети с работающим FTP
Наиболее простой путь осуществить межсетевое взаимодействие — это объединить две или более сетей с помощью маршрутизатора (router). Маршрутизатор представляет из себя программно-аппаратное устройство с собственной операционной системой. Огромное достоинство маршрутизаторов заключается в том, что они могут объединить сети, построенные на различных физических принципах: Ethernet, Token Ring, Point-to-Point, FDDI
и т.п.
Маршрутизаторы обеспечивают взаимодействие на уровне IP-протокола, что иллюстрирует разницу между конечной системой (end system) — это два компьютера на каждой стороне (рис. 6.1), и промежуточной системой (intermediate system), в данном случае это использование маршрутизатора для межсетевого взаимодействия (рис. 6.2).
102
FTP |
|
|
|
|
Протокол FTP |
|
FTP |
|
||||||||
клиент |
|
|
|
|
|
сервер |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
Протокол TCP |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
||||||
TCP |
|
|
|
|
|
|
TCP |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
router |
|
|
|
|
||
IP |
|
|
|
|
|
|
IP |
|
IP |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ethernet |
|
|
|
Ethernet |
|
Token Ring |
|
|
Token Ring |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
Ethernet |
|
|
|
|
Token Ring |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Рис. 6.2 — Две сети, соединенные через маршрутизатор
Маршрутизатор, по определению, имеет два или несколько интерфейсов сетевого уровня (если он объединяет две или более сетей). Любая система с несколькими интерфейсами называется многоинтерфейсной (multihomed). Большинство реализаций TCP/IP позволяют компьютерам с несколькими интерфейсами функционировать в качестве маршрутизаторов. Однако компьютеры должны быть специально сконфигурированы, чтобы решать задачи маршрутизации.
Одна из основных задач объединения сетей заключается в том, чтобы скрыть все детали физического процесса передачи информации между приложениями, находящимися в разных сетях. Поэтому нет ничего удивительного в том, что в объединенных сетях (см. рис. 6.2), прикладные уровни не заботятся (и не должны заботиться) о том, что один компьютер находится в сети Ethernet, а другой в сети Token Ring с маршрутизатором между ними. Даже если бы между сетями было 20 маршрутизаторов и различные типы физического соединения, приложения работали бы точно так же. Подобная концепция, при которой детали физического объединения сетей скрыты от приложений, определяет мощность и гибкость такой технологии объединения сетей.
103
Существует еще один метод объединения сетей — с помощью мостов (bridge). В этом случае сети объединяются на канальном уровне, тогда как маршрутизаторы объединяют сети на сетевом уровне. Стоит отметить, что объединение TCP/IP сетей в настоящее время осуществляется в основном с помощью маршрутизаторов, а не с помощью мостов. Поэтому мы более подробно рассмотрим маршрутизаторы.
6.2 Протоколы, пакеты и инкапсуляция TCP/IP
В действительности, семейство протоколов TCP/IP объединяет значительно больше протоколов. TCP и UDP — два основных протокола транспортного уровня. Оба используют IP в качестве сетевого уровня (рис. 6.3). Протокол IP предоставляет ненадежный сервис. Это означает, что в процессе своей работы протокол передает пакет от источника к пункту назначения, однако не предоставляет никаких гарантий того, что пакет дойдет по назначению.
Application layer |
|
|
|
|
|
|
|
|
клиентский |
|
клиентский |
|
клиентский |
|
клиентский |
|
процесс |
|
процесс |
|
процесс |
|
процесс |
|
|
|
|
|
|
|
|
Transport layer
TCP UDP
Network layer
IGMP
IP
ICMP
Link layer
ARP
аппаратный
интерфейс
RARP
среда передачи
Рис. 6.3 — Различные протоколы на разных уровнях стека TCP/IP
104
TCP, с другой стороны, предоставляет надежный транспортный уровень, который пользуется ненадежным сервисом IP. Чтобы обеспечить подобный сервис, TCP выставляет тайм-ауты и осуществляет повторные передачи, отсылает и принимает подтверждения и так далее. Транспортный уровень и сетевой уровень несут различную ответственность за передачу данных.
UDP отправляет и принимает дейтаграммы (datagram). Дейтаграмма это блок информации (определенное количество байт информации, которое указывается отправителем), который отправляется от отправителя к приемнику. В отличие от TCP, UDP является ненадежным протоколом. Не существует гарантий, что дейтаграмма достигнет конечной точки назначения.
IP это основной протокол сетевого уровня. Он используется как TCP, так и UDP. Каждый блок информации TCP и UDP, который передается по объединенным сетям, проходит через IP уровень в каждой конечной системе и в каждом промежуточном маршрутизаторе. На рис. 6.3 показаны приложения, которые имеют прямой доступ к IP. Такой доступ используется довольно редко, но существует возможность его осуществить (некоторые ранние протоколы маршрутизации были разработаны именно подобным образом). Также в процессе экспериментов при создании новых транспортных уровней используется возможность доступа к протоколу IP.
ICMP является дополнением к протоколу IP. Он используется IP уровнем для обмена сообщениями об ошибках и другой жизненно важной информацией уровня IP. Несмотря на то, что ICMP используется в основном IP уровнем, приложения также могут получить доступ к ICMP. Протокол управления группами
Internet (IGMP — Internet Groupe Management Protocol), исполь-
зуется при групповой адресации: при этом UDP датаграммы рассылаются нескольким получателям.
Протокол определения адреса (ARP — Address Resolution Protocol) и обратный протокол определения адреса (RARP —
Reverse Address Resolution Protocol) это специализированные про-
токолы, используемые только с определенным типом сетевых интерфейсов (такие как Ethernet и Token ring). Они применяются для преобразования формата адресов, используемого IP уровнем в формат адресов, используемый сетевым интерфейсом.