TCP/IP считается стандартным протоколом, используемым для совместимости между компьютерами разных типов. Совместимость - основное преимущество TCP/IP, так как его поддерживает большинство сетей. Кроме того, TCP/IP обеспечивает маршрутизацию и часто применяется для межсетевого взаимодействия.
Стек TCP/IP включает и другие протоколы:
· SMTP (Simple Mail Transfer Protocol) - для обмена электронной почтой;
· FTP (File Transfer Protocol) - для обмена файлами;
· SNMP (Simple Network Management Protocol) - для управления сетью.
TCP/IP разрабатывался специалистами Министерства обороны США (United States Department of Defense) как маршрутизируемый, надежный и функциональный протокол, он представляет собой набор протоколов для глобальной сети (ГВС). Его назначение - обеспечивать взаимодействие между узлами даже в случае ядерной войны. Сейчас ответственность за разработку TCP/IP возложена на сообщество Интернета в целом. Установка и настройка TCP/IP требует значительных знаний и опыта со стороны пользователя, однако применение TCP/IP предоставляет ряд преимуществ.
Это открытый, то есть не контролируемый какой-то одной компанией, протокол. Поэтому проблемы совместимости отсутствуют. TCP/IP «де-факто» стал протоколом Интернета.
• Содержит утилиты для связи между различными ОС - взаимодействие компьютеров не зависит от используемых на них сетевых ОС.
• Использует масштабируемую, межплатформенную клиент-серверную архитектуру. TCP/IP можно расширять (или сокращать) в соответствии с текущими потребностями. Для обеспечения независимости от ОС он использует сокеты (sockets - идентификатор сетевой службы на конкретном узле сети; состоит из адреса узла и номера порта, идентифицирующего службу.), или гнезда.
Стандарты TCP/IP публикуются в виде серий документов, называемых Request for Comment (RFC). Их основная задача - предоставлять информацию и описывать текущее состояние работ. И хотя изначально они не планировались на роль стандартов, многие RFC стали таковыми.
Интернет основан на концепции открытых стандартов, поэтому любой желающий может принять участие в разработке стандартов для этой сети. Отвечает за управление и публикацию RFC комитет Internet Architecture Board (IAB). IAB позволяет любому человеку или компании предложить или реализовать RFC, включая любые идеи или новые стандарты. По прошествии некоторого времени, отведенного на обсуждение, новое предложение становится или не становится стандартом.
Каталог и база данных InterNIC, обеспечиваемая AT&T, представляет собой службу, которая снабжает общественность информацией об Интернете, включая RFC. Эту службу можно найти на www.internic.net в World Wide Web. Кроме того, RFC хранится на следующих FTP-серверах: nis.nsf.net; nisc.jvnc.net; ftp.isi.edu; wuarchive.wustl.edu; ftp.ncren.net; ftp.sesqui.net; ftp.nic.it; ftp.imag.fr.
TCP/IP и OSI
Протокол TCP/IP не соответствует в точности модели OSI. Вместо семи уровней в нем используется только четыре:
• уровень сетевого интерфейса;
• межсетевой уровень;
• транспортный уровень;
• прикладной уровень.
Каждый из них соответствует одному или нескольким уровням модели OSI.
Уровень сетевого интерфейса
Уровень сетевого интерфейса (Network interface layer), относящийся к Физическому и Канальному уровням модели OSI, напрямую взаимодействует с сетью. Он реализует интерфейс между сетевой архитектурой (такой, как Token Ring, Ethernet) и Межсетевым уровнем.
Межсетевой уровень
Межсетевой уровень (Internet layer), относящийся к Сетевому уровню модели OSI, использует несколько протоколов для маршрутизации и доставки пакетов. Маршрутизаторы зависят от протокола. Они работают на Сетевом уровне и применяются для передачи пакетов из одного сегмента сети в другой. На Межсетевом уровне работает несколько протоколов.
Internet Protocol (IP)
IP - это протокол обмена пакетами, который выполняет адресацию и выбор маршрута. При передаче пакета этот протокол добавляет к нему заголовок, для того чтобы его можно было маршрутизировать по сети, используя таблицы маршрутизации.
IP не ориентирован на соединения и посылает пакеты, не ожидая подтверждения об их получении. Кроме этого, IP отвечает за сборку и разборку пакета (фрагментацию и дефрагментацию), как того требует Физический и Канальный уровни. Каждый IP-пакет состоит из адресов отправителя и получателя, идентификатора протокола, контрольной суммы (вычисляемого значения) и TTL. Time To Live - время жизни - указывает каждому маршрутизатору на пути от отправителя до получателя, как долго пакет может находится в сети, и похож на таймер обратного отсчета. Когда пакет проходит через маршрутизатор, тот вычитает из TTL большую из величин: одну секунду или время (в секундах), которое пакет провел в его очереди. Например, если TTL пакета равен 128, это значит, что пакет может находиться в сети 128 секунд, то есть он прошел максимум через 128 маршрутизаторов. Функция TTL - предотвратить бесконечное блуждание пакетов по сети. Когда TTL становится равен нулю, пакет удаляется из сети.
Метод, используемый протоколом IP для увеличения скорости передачи, известен как маскирование (ANDing - логическое «И»). Он позволяет определить, находится адресат в локальной или удаленной сети. Если в локальной, IP передает пакет компьютеру-получателю. Если в удаленной, IP ищет в локальной таблице маршрутизации путь к получателю. Когда путь задан, пакет отправляется по нему, а когда нет, то передается шлюзу по умолчанию.
Address Resolution Protocol (ARP)
Прежде чем IP-пакет будет передан на другой хост, необходимо выяснить аппаратный (MAC) адрес компьютера-получателя. ARP узнает его, используя IP-адрес получателя. Если ARP не находит МАС-адрес в своем кэше, он посылает широковещательный запрос, в ответ на который обладатель интересующего IP-адреса возвращает свой МАС-адрес. Этот адрес сохраняется в ARP-кэше, а пакет передается по кабелю.
Reverse Address Resolution Protocol (RARP)
В противоположность ARP протокол RARP предоставляет IP-адрес по запрашиваемому аппаратному адресу. RARP-сервер поддерживает базу данных аппаратных адресов компьютеров в форме ARP-таблицы (или кэша), которая создается администратором. В ответ на запрос с МАС-адресом RARP-сервер возвращает соответствующий IP-адрес.
Internet Control Message Protocol (ICMP)
ICMP используется IP и высокоуровневыми протоколами для отправки и получения отчетов о состоянии передаваемой информации. Маршрутизаторы часто применяют ICMP для управления потоком, или скоростью передачи, данных. Если данные поступают слишком быстро, маршрутизатор «просит» собеседника снизить скорость.
Основные две категории ICMP сообщений — это сообщения об ошибках и отправка запросов.
Транспортный уровень (transport layer), соответствующий Транспортному уровню модели OSI, отвечает за установку и поддержание соединения между двумя хостами. Транспортный уровень отвечает за отправку уведомлений о получении данных, управление потоком, упорядочение пакетов и их повторную передачу. На транспортном уровне допустимо использовать как TCP, так и UDP (User Datagram Protocol).
Transmission Control Protocol (TCP)
TCP отвечает за надежную передачу данных между узлами. Это ориентированный на соединение протокол, поэтому он устанавливает сеанс связи между двумя компьютерами, прежде чем начать передачу. Для установки надежного соединения TCP действует по механизму так называемого «трехшагового рукопожатия (квитирования)».
1.Клиент (инициатор) посылает пакет, содержащий номер порта, который он хочет использовать, и начальный номер последовательности (Initial Sequence Number, ISN), серверу.
2.В ответ сервер отправляет пакет, в котором указан собственный ISN и ISN клиента плюс 1.
3.Клиент подтверждает получение этого пакета пакетом, содержащим ISN сервера плюс 1.
Для поддержания надежного соединения каждый пакет должен содержать:
• номер TCP-порта отправителя и получателя;
• номер последовательности для сообщений, которые должны быть разбиты на мелкие части;
• контрольную сумму, гарантирующую безошибочную передачу данных;
• номер подтверждения, который сообщает компьютеру-отправителю, какие части сообщения уже приняты;
• размер скользящего окна TCP.
Порты, сокеты и «скользящие окна»
Номера портов используются для ссылки на конкретное приложение или процесс на каждом компьютере (на Прикладном уровне). Также как IP-адрес идентифицирует хост в сети, номер порта идентифицирует приложение для Транспортного уровня, тем самым обеспечивая соединение между приложениями на разных хостах. Приложения и службы (например, файлов и печати или Telnet) могут использовать до 65 536 портов. Приложения и службы TCP/IP задействуют первые 1 023 порта. Internet Assigned Numbers Authority (IANA) установило их в качестве стандартных (по умолчанию) портов. Любое клиентское приложение динамически выбирает порт из доступных. Вместе порт и IP-адрес узла образуют сокет.
Для реализации соединения с другими хостами службы и приложения применяют сокеты. Если приложению необходима гарантированная доставка данных, сокет выбирает ориентированный на соединение протокол (TCP), в противном случае — не ориентированный на соединение протокол (UDP).
Для передачи данных между хостами TCP использует «скользящее окно». Оно регулирует количество информации, которое может быть отправлено, прежде чем хост-получатель пришлет подтверждение. Каждый компьютер применяет окно отправки и приема для буферизации данных и эффективного использования соединения. «Скользящее окно» позволяет компьютеру-отправителю передавать пакеты одним потоком, не прерываясь на ожидание подтверждения о доставке каждого пакета. Компьютер-получатель получает пакеты в произвольном порядке и упорядочивает их в паузе между поступлением новой порции. Окно отправки отслеживает, какие пакеты отправлены, и, если подтверждение об их доставке не пришло в течение заданного времени, посылает пакеты повторно.